Megjelent a nftables 1.0.5 verziója, amely egységesíti a csomagszűrő interfészeket az 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 kapcsolódó libnftnl 1.2.3 könyvtár, amely alacsony szintű API-t biztosít az nf_tables alrendszerével való interakcióhoz.
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 változások:
- Az opció megadásakor használt szabályoptimalizálóban, amely a „-o/—optimize” opcióval érhető el, megoldották a szabályok, map- és set-lista egyesítésével kapcsolatos problémákat. # cat ruleset.nft table ip x { chain y { type nat hook postrouting priority srcnat; policy drop; ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90 } } # nft -o -c -f ruleset.nft Egyesítés: ruleset.nft:4:3-52: ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ruleset.nft:5:3-52: ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90 ide: snat to ip saddr . tcp dport map { 1.1.1.1 . 8000 : 4.4.4.4 . 80, 2.2.2.2 . 8001 : 5.5.5.5 . 90 }
- Az ethernet és vlan elemek egyesítésekor biztosított a dinamikus set-lista meghatározása, amely a csomagok útvonal paraméterei alapján töltődik fel. add table netdev x add chain netdev x y { type filter hook ingress device enp0s25 priority 0; } add set netdev x macset { typeof ether daddr . vlan id; flags dynamic,timeout; } add rule netdev x y update @macset { ether daddr . vlan id timeout 60s } add rule netdev x y ether saddr . vlan id { 0a:0b:0c:0d:0e:0f . 42, 0a:0b:0c:0d:0e:0f . 4095 } counter accept
- Megvalósították a szabályok megjelenítését map-lists használatával, amelyekben maszkok találhatók a hálózati interfészek neveiben. table inet filter { chain INPUT { iifname vmap { „eth0” : jump input_lan, „wg*” : jump input_vpn } } chain input_lan {} chain input_vpn {} }
- Kijavították a regresszív hibákat, amelyek helytelen lexikai elemzéshez vezettek helyes szabályok esetén.
- Megoldották a problémákat a nagy listák lassú feldolgozásával és automatikus egyesítésével, amelyek értékintervallumokat határoznak meg.
- Kijavították a rendszer leállását, amikor elemeket próbáltak hozzáadni egy érvénytelen set-láshoz.
Forrás: opennet.ru
