nftables csomagszűrő kiadás 0.9.9

Megjelent a csomagszűrő nftables 0.9.9 kiadása, amely egyesíti az IPv4, IPv6, ARP és hálózati hidak csomagszűrő interfészeit (az iptables, ip6table, arptables és ebtables helyettesítésére). Ezzel egy időben megjelent a libnftnl 1.2.0 kísérőkönyvtár kiadása, amely alacsony szintű API-t biztosít az nf_tables alrendszerrel való interakcióhoz. Az nftables 0.9.9-es kiadás működéséhez szükséges változtatásokat a Linux kernel 5.13-rc1 tartalmazza.

Az nftables csomag felhasználói térben futó csomagszűrő komponenseket tartalmaz, míg a kernel szintű munkát az nf_tables alrendszer biztosítja, amely a 3.13-as kiadás óta a Linux kernel része. A kernelszint csak egy általános, protokoll-független interfészt biztosít, amely alapvető funkciókat biztosít az adatok csomagokból történő kinyeréséhez, adatműveletek végrehajtásához és az áramlásvezérléshez.

Magukat a szűrési szabályokat és a protokoll-specifikus kezelőket felhasználói térbeli bájtkódba fordítják, majd ezt a bájtkódot a Netlink interfész segítségével betöltik a kernelbe, és egy speciális, BPF-hez (Berkeley Packet Filters) hasonlító virtuális gépben hajtják végre a kernelben. Ez a megközelítés lehetővé teszi a kernel szinten futó szűrőkód méretének jelentős csökkentését, valamint az elemzési szabályok összes funkciójának és a protokollokkal való munka logikájának a felhasználói térbe való áthelyezését.

Főbb újítások:

  • Megvalósult a folyamatábra feldolgozás hálózati adapter oldalra helyezésének képessége, amely engedélyezve van az „offload” jelzővel. A Flowtable a csomagátirányítási útvonal optimalizálására szolgáló mechanizmus, amelyben az összes szabályfeldolgozási lánc teljes áthaladását csak az első csomagra alkalmazzák, és a folyamatban lévő összes többi csomagot közvetlenül továbbítják. table ip global { flowtable f { hook ingress priority filter + 1 devices = { lan3, lan0, wan } flags offload } chain forward { type filter hook forward priority filter; szabályzat elfogadása; ip protokoll { tcp, udp } flow add @f } chain post { type nat hook postrouting priority filter; szabályzat elfogadása; oifname "wan" maskara } }
  • Támogatás hozzáadva a tulajdonosjelző táblához való csatolásához, hogy biztosítsa a tábla egy folyamat általi kizárólagos használatát. Amikor egy folyamat befejeződik, a hozzá tartozó tábla automatikusan törlődik. A folyamattal kapcsolatos információk megjegyzés formájában jelennek meg a szabálykiíratóban: table ip x { # progname nft flags owner chain y { type filter hook input priority filter; szabályzat elfogadása; számlálócsomagok 1 bájt 309 } }
  • Hozzáadott támogatás az IEEE 802.1ad specifikációhoz (VLAN stacking vagy QinQ), amely meghatározza a több VLAN-címke egyetlen Ethernet-keretbe történő helyettesítésének módját. Például a külső Ethernet-keret 8021ad és vlan id=342 típusának ellenőrzéséhez használhatja a konstrukciós ... ether type 802.1ad vlan id 342-t az Ethernet-keret 8021ad/vlan id=1, beágyazott 802.1 külső típusának ellenőrzéséhez. q/vlan id=2 és további IP-csomagok beágyazása: ... ether típusú 8021ad vlan id 1 vlan típus 8021q vlan id 2 vlan típusú ip számláló
  • Támogatás hozzáadva az erőforrások kezeléséhez az egyesített hierarchia cgroups v2 használatával. A cgroups v2 és v1 közötti fő különbség az, hogy minden erőforrástípushoz közös cgroups hierarchiát használunk, ahelyett, hogy külön hierarchiát alkalmaznának a CPU erőforrások kiosztására, a memóriafelhasználás szabályozására és az I/O-ra. Például annak ellenőrzésére, hogy az első szintű cgroupv2 socket őse egyezik-e a „system.slice” maszkkal, használhatja a következő konstrukciót: ... socket cgroupv2 1. szintű „system.slice”
  • Hozzáadtuk az SCTP-csomagok összetevőinek ellenőrzésének lehetőségét (az ehhez szükséges funkciók a Linux kernel 5.14-ben fognak megjelenni). Például annak ellenőrzésére, hogy egy csomag tartalmaz-e „data” típusú és „type” mezővel rendelkező darabot: ... sctp chunk data létezik ... sctp chunk adattípus 0
  • A szabálybetöltési művelet végrehajtása körülbelül kétszer gyorsult a „-f” jelző használatával. A szabálylista kimenete is felgyorsult.
  • Kompakt űrlap áll rendelkezésre annak ellenőrzésére, hogy a jelzőbitek be vannak-e állítva. Például annak ellenőrzésére, hogy a snat és dnat status bitek nincsenek beállítva, megadhatja: ... ct status ! snat,dnat annak ellenőrzésére, hogy a syn bit be van-e állítva a bitmaszkban syn,ack: ... tcp flags syn / syn,ack annak ellenőrzésére, hogy az fin és az első bitek nincsenek-e beállítva a bitmaszkban syn,ack,fin,rst: ... tcp flags = fin,rst / syn,ack,fin,rst
  • Engedélyezze a "verdict" kulcsszót a set/map typeof definíciókban: add map xm { typeof iifname . ip protokoll dport: ítélet ;}

Forrás: opennet.ru

Hozzászólás