Az nftables 0.9.9 csomagszűrő kiadása

Megjelent az nftables 0.9.9-es verziójának kiadása, amely egységesíti a csomagszűrési interfészeket IPv4, IPv6, ARP és hálózati hidak számára (célja az iptables, ip6tables, arptables és ebtables helyettesítése). Ezzel egy időben megjelent a libnftnl 1.2.0-ás verziója is, amely egy alacsony szintű API-t biztosít a nf_tables alrendszerrel való interakcióhoz. Az nftables 0.9.9 működéséhez szükséges változtatások beépítve lettek a Linux 5.13-rc1 kernelbe.

Az nftables csomagba tartoznak a felhasználói térben működő csomagszűrő komponensek, míg a kernel szintjén az nf_tables alrendszer látja el a feladatot, amely a Linux kernel 3.13-as verziójától kezdve érhető el. A kernel szintjén csak egy általános interfész áll rendelkezésre, amely független a konkrét protokolltól, és alapvető funkciókat biztosít a csomagokból származó adatok kinyerésére, az adatokkal végzett műveletekre és az adatfolyam kezelésére.

Közvetlenül a szűrési szabályok és a protokollspecifikus kezelők felhasználói térben bájt kódba vannak fordítva, majd ezt a bájt kódot a Netlink interfész segítségével betöltik a kernelbe, ahol speciális környezetben végrehajtásra kerül. virtuális gépben, amely a BPF (Berkeley Packet Filters) eljárásra emlékeztet. Ez a megközelítés jelentősen csökkenti a kernel szinten működő szűrési kód méretét, miközben az összes szabályok parszolásával és a protokollokkal kapcsolatos logikával kapcsolatos funkciót a felhasználói térbe helyezi.

Főbb újítások:

  • Megvalósult a flowtable feldolgozásának hálózati adapterre való áthelyezésének lehetősége, amely az 'offload' flag bekapcsolásával aktiválható. A flowtable egy optimalizálási mechanizmus a csomagok átirányításának útvonalán, amelynél a szabályfeldolgozás összes láncolata csak az első csomaghoz alkalmazandó, míg a további csomagokat közvetlenül át lehet irányítani. table ip global { flowtable f { hook ingress priority filter + 1 devices = { lan3, lan0, wan } flags offload } chain forward { type filter hook forward priority filter; policy accept; ip protocol { tcp, udp } flow add @f } chain post { type nat hook postrouting priority filter; policy accept; oifname "wan" masquerade } }
  • Hozzáadva a tulajdonos által történő kötéshez szükséges flag, amely lehetővé teszi a táblázat kizárólagos használatát a folyamat által. A folyamat befejezésével a hozzá kapcsolt táblázat automatikusan törlésre kerül. A folyamat információi kommentár formájában jelennek meg a szabályok dump-jában: table ip x { # progname nft flags owner chain y { type filter hook input priority filter; policy accept; counter packets 1 bytes 309 } }
  • Hozzáadva az IEEE 802.1ad (VLAN stacking vagy QinQ) specifikáció támogatása, amely egy vagy több VLAN címke egy Ethernet keretbe való behelyezésének eszközeit határozza meg. Például az 8021ad típusú külső Ethernet-képet és a vlan id=342-t a következő konstrukcióval lehet ellenőrizni: … ether type 802.1ad vlan id 342 egy 802.1ad/vlan id=1 külső Ethernet-kép, 802.1q/vlan id=2 beágyazódó és az IP-csomag továbbin kapszulázásához: … ether type 802.1ad vlan id 1 vlan type 8021q vlan id 2 vlan type ip counter
  • A támogatás hozzáadva az erőforrások kezeléséhez egységes cgroups v2 hierarchián keresztül. A cgroups v2 és v1 közötti fő különbség az, hogy a cgroups közös hierarchiáját alkalmazza minden erőforrástípusra, a CPU erőforrások elosztására, a memóriafogyasztás szabályozására és a bevitel/kibitel kezelésére szolgáló külön hierarchiák helyett. Például, a cgroupv2 első szintjének "system.slice" maszkba való illeszkedés ellenőrzéséhez a következő konstrukciót lehet használni: … socket cgroupv2 level 1 "system.slice"
  • Hozzáadva a SCTP csomagok összetevőinek ellenőrzésének lehetősége (a szükséges funkció Linux 5.14 kernelben lesz elérhető). Például, a ‘data’ típussal rendelkező chunk létezésének ellenőrzésére: … sctp chunk data exists … sctp chunk data type 0
  • A szabályok betöltésének ideje körülbelül kétszeresére csökkent a "-f" kapcsoló használatával. A szabályok listájának kiírása is felgyorsult.
  • Kompatibilis forma került bevezetésre a bitek beállításának ellenőrzésére. Például, hogy ellenőrizzük, hogy az snat és dnat állapot bitek nincsenek beállítva, a következő módon lehet megadni: … ct status ! snat,dnat a syn bit állapotának ellenőrzésére a syn,ack bitmaszkban: … tcp flags syn / syn,ack a fin és rst bitek beállításának ellenőrzésére a syn,ack,fin,rst bitmaszkban: … tcp flags != fin,rst / syn,ack,fin,rst
  • A "verdict" kulcsszó használatának engedélyezése a typeof definiálásában set/map számára: add map x m { typeof iifname . ip protocol . th dport : verdict;}

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster