Izdaja paketnega filtra nftables 1.0.6

Objavljena je bila izdaja paketnega filtra nftables 1.0.6, ki poenoti vmesnike za filtriranje paketov za IPv4, IPv6, ARP in omrežne mostove (ki so namenjeni zamenjavi iptables, ip6table, arptables in ebtables). Paket nftables vključuje komponente paketnega filtra, ki se izvajajo v uporabniškem prostoru, medtem ko raven jedra zagotavlja podsistem nf_tables, ki je del jedra Linuxa od izdaje 3.13. Na ravni jedra je na voljo le generični vmesnik, neodvisen od protokola, ki zagotavlja osnovne funkcije za pridobivanje podatkov iz paketov, izvajanje operacij s podatki in nadzor pretoka.

Sama pravila filtriranja in obdelovalci, specifični za protokol, so prevedeni v bajtno kodo uporabniškega prostora, nakar se ta bajtna koda naloži v jedro z uporabo vmesnika Netlink in izvede v jedru v posebnem virtualnem stroju, ki spominja na BPF (Berkeley Packet Filters). Ta pristop omogoča znatno zmanjšanje velikosti filtrirne kode, ki se izvaja na ravni jedra, in premikanje vseh funkcij pravil razčlenjevanja in logike dela s protokoli v uporabniški prostor.

Večje spremembe:

  • V optimizatorju pravil, ki se prikliče ob podajanju možnosti "-o/--optimize", je nastavljeno samodejno pakiranje pravil tako, da se združijo in pretvorijo v sezname zemljevidov in nastavitev. Na primer, pravila so # cat ruleset.nft table ip x { chain y { type filter hook input priority filter; padec politike; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 sprejme meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 sprejme meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 sprejme meta iifname eth1 ip saddr 1.1.1.2 .2.2.4.0 ip daddr 2.2.4.10-2 accept meta iifname eth1.1.1.3 ip saddr 2.2.2.5 ip daddr 4 accept } } za "nft -o -c -f ruleset.nft" bo pretvorjen v naslednje: ruleset. nft:17:74-1: meta iifname eth1.1.1.1 ip saddr 2.2.2.3 ip daddr 5 sprejme pravila.nft:17:74-1: meta iifname eth1.1.1.2 ip saddr 2.2.2.4 ip daddr 6 sprejme pravila.nft: 17:77-1: meta iifname eth1.1.1.2 ip saddr 2.2.3.0 ip daddr 24/7 sprejme ruleset.nft:17:83-1: meta iifname eth1.1.1.2 ip saddr 2.2.4.0 ip daddr 2.2.4.10-8 sprejme ruleset.nft:17:74-2: meta iifname eth1.1.1.3 ip saddr 2.2.2.5 ip daddr 1 accept into: iifname . ip saddr. ip daddr {eth1.1.1.1. 2.2.2.3. 1, eth1.1.1.2. 2.2.2.4. 1, eth1.1.1.2. 2.2.3.0. 24/1, eth1.1.1.2. 2.2.4.0. 2.2.4.10-2, eth1.1.1.3. 2.2.2.5. XNUMX } Sprejmi
  • Optimizator lahko tudi strne pravila, ki že uporabljajo preproste sezname nastavitev, v bolj kompaktno obliko, kot je: # cat ruleset.nft table ip filter { chain input { type filter hook input priority filter; padec politike; iifname "lo" sprejme ct stanje vzpostavljeno, povezano sprejme komentar "V prometu izviramo, zaupamo" iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123 udp dport 32768-65535 sprejme iifname "enp0s31f6" ip saddr { 64.59.144.17, 64.59.150.133 } ip daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 accept } } po zagonu "nft -o -c -f ruleset.nft" bo zapakiran takole : ruleset.nft:6:22-149: iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123 udp dport 32768-65535 sprejme ruleset.nft:7:22 -143 0 : iifname "enp31s6f64.59.144.17" ip saddr { 64.59.150.133, 10.0.0.149 } ip daddr 53 udp sport 32768 udp dport 65535-0 sprejme v: iifname . ip saddr. ip daddr. udp šport. udp dport { enp31s6f209.115.181.102 . 10.0.0.149 . 123 . 32768 . 65535-0, enp31s6f216.197.228.230. 10.0.0.149 . 123 . 32768 . 65535-0, enp31s6f64.59.144.17. 10.0.0.149. 53 . 32768. 65535-0, enp31s6f64.59.150.133. 10.0.0.149. 53 . 32768. 65535-XNUMX } Sprejmi
  • Odpravljena je težava z generiranjem bajtne kode za združevanje intervalov, ki uporabljajo tipe z različnim endianom, kot sta IPv4 (omrežni endian) in meta oznaka (sistem endian). tabela ip x { mapa w { typeof ip saddr. meta oznaka : zastavice razsodbe elementi števca intervalov = { 127.0.0.1-127.0.0.4 . 0x123434-0xb00122 : sprejeti, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : sprejme, } } veriga k { vrsta filtra kavelj vhodni prednostni filter; padec politike; ip saddr. meta oznaka vmap @w } }
  • Izboljšane preslikave redkih protokolov pri uporabi neobdelanih izrazov, na primer: meta l4proto 91 @th,400,16 0x0 accept
  • Odpravljene težave z omogočanjem pravil v intervalih: vstavi pravilo xy tcp sport { 3478-3497, 16384-16387 } števec sprejme
  • API JSON je bil izboljšan za podporo izrazov v seznamih naborov in preslikav.
  • V razširitvah knjižnice nftables python je dovoljeno nalaganje nizov pravil za obdelavo v načinu preverjanja (»-c«) in dodana je bila podpora za definicijo zunanjih spremenljivk.
  • V elementih set-listov je dovoljeno dodajanje komentarjev.
  • V omejitvi hitrosti bajtov je dovoljeno podati ničelno vrednost.

Vir: opennet.ru

Dodaj komentar