UtgÄvan av paketfilteret nftables 1.0.5 har publicerats, vilket enhetligar grÀnssnitten för paketfiltrering för IPv4, IPv6, ARP och nÀtverksbryggor (syftar till att ersÀtta iptables, ip6tables, arptables och ebtables). Samtidigt har den relaterade biblioteket libnftnl 1.2.3 publicerats, som erbjuder ett lÄg-nivÄ API för interaktion med nf_tables-systemet.
Paketet nftables innehÄller komponenter för paketfilter som arbetar i anvÀndarrummet, medan nf_tables-systemet pÄ kÀrnnivÄ tillhandahÄller funktionen, vilket har varit en del av Linux-kÀrnan sedan version 3.13. PÄ kÀrnnivÄ tillhandahÄlls endast ett allmÀnt grÀnssnitt, oberoende av protokoll, som ger grundlÀggande funktioner för att extrahera data frÄn paket, utföra operationer med data och styra flödet.
SjÀlva filtreringsreglerna och protokollspecifika hanterare kompileras till bytekod i anvÀndarrummet, som sedan laddas in i kÀrnan via Netlink-grÀnssnittet och utförs i kÀrnan i en speciell en virtuell maskin, liknande BPF (Berkeley Packet Filters). Denna metod gör det möjligt att avsevÀrt minska storleken pÄ den filterkod som körs pÄ kÀrnnivÄ och flytta alla funktioner för tolkning av regler och logik som rör protokoll till anvÀndarrummet.
Huvudsakliga förÀndringar:
- I regeloptimeraren, som anropas nÀr alternativet "-o/--optimize" anges, har problem med att kombinera regler, mapp- och set-listor ÄtgÀrdats. # 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 Sammanfogning: 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 till: snat to ip saddr . tcp dport mapp { 1.1.1.1 . 8000 : 4.4.4.4 . 80, 2.2.2.2 . 8001 : 5.5.5.5 . 90 }
- Vid sammanslagning av ethernet- och vlan-element sÀkerstÀlls definitionen av en dynamisk set-lista, som fylls baserat pÄ paketvÀgarna. 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
- Visningen av regler med map-listor som innehÄller masker i grÀnssnittens namn har upprÀttats. table inet filter { chain INPUT { iifname vmap { "eth0" : jump input_lan, "wg*" : jump input_vpn } } chain input_lan {} chain input_vpn {} }
- Regressiva förÀndringar som ledde till felaktig lexikalisk analys av korrekta regler har ÄtgÀrdats.
- Problem med lÄngsam behandling och automatisk sammanslagning av stora listor med element som definierar vÀrdeintervall har lösts.
- Kraschen vid tillÀgg av element till en ogiltig set-lista har ÄtgÀrdats.
KĂ€lla: opennet.ru
