Paketfiltret nftables 0.9.9 har slÀppts. Det förenar paketfiltreringsgrÀnssnitt för IPv4, IPv6, ARP och nÀtverksbryggor (avsett att ersÀtta iptables, ip6table, arptables och ebtables). Det medföljande biblioteket libnftnl 1.2.0, som tillhandahÄller ett lÄgnivÄ-API för att interagera med nf_tables-undersystemet, har slÀppts samtidigt. De Àndringar som krÀvs för nftables 0.9.9 har införlivats i kÀrnan. Linux 5.13-rc1.
Paketet nftables innehÄller paketfilterkomponenterna som verkar i anvÀndarutrymmet, medan arbete pÄ kÀrnnivÄ tillhandahÄlls av delsystemet nf_tables, som Àr en del av kÀrnan. Linux Sedan version 3.13 tillhandahÄlls endast ett generiskt protokolloberoende grÀnssnitt pÄ kÀrnnivÄ, vilket ger grundlÀggande funktioner för att extrahera data frÄn paket, utföra dataoperationer och flödeskontroll.
SjÀlva filtreringsreglerna och protokollspecifika hanterare kompileras till bytekod i anvÀndarutrymmet, varefter denna bytekod laddas in i kÀrnan med hjÀlp av Netlink-grÀnssnittet och exekveras i kÀrnan pÄ ett speciellt sÀtt. virtuell maskin, vilket pÄminner om BPF (Berkeley Packet Filters). Denna metod möjliggör en betydande minskning av storleken pÄ filtreringskoden som körs pÄ kÀrnnivÄ och flyttar all regelparsning och protokolllogik till anvÀndarutrymmet.
Huvudsakliga innovationer:
- Möjligheten att flytta flödestabellbearbetning till nÀtverksadaptersidan har implementerats, aktiverad med "offload"-flaggan. Flödestabell Àr en mekanism för att optimera vÀgen för paketomdirigering, dÀr den fullstÀndiga passagen av alla regelbearbetningskedjor tillÀmpas endast pÄ det första paketet, och alla andra paket i flödet vidarebefordras direkt. tabell ip global { flödestabell f { hook ingress priority filter + 1 devices = { lan3, lan0, wan } flags offload } kedja framÄt { typ filter krok framÄt prioritetsfilter; policy acceptera; ip-protokoll {tcp, udp} flow add @f} chain post {typ nat krok postrouting prioritetsfilter; policy acceptera; oifname "wan" maskerad } }
- Lade till stöd för att fÀsta en Àgarflagga till en tabell för att sÀkerstÀlla exklusiv anvÀndning av tabellen av en process. NÀr en process avslutas raderas den associerade tabellen automatiskt. Information om processen visas i regeldumpen i form av en kommentar: tabell ip x { # progname nft flaggor Àgare kedja y { typ filter hook input priority filter; policy acceptera; rÀknarpaket 1 byte 309 } }
- Tillagt stöd för IEEE 802.1ad-specifikationen (VLAN-stackning eller QinQ), som definierar ett sÀtt att ersÀtta flera VLAN-taggar i en enda Ethernet-ram. Till exempel, för att kontrollera typen av extern Ethernet-ram 8021ad och vlan id=342, kan du anvÀnda konstruktionen ... ether type 802.1ad vlan id 342 för att kontrollera den externa typen av Ethernet-ram 8021ad/vlan id=1, kapslad 802.1 q/vlan id=2 och ytterligare IP-paketinkapsling: ... eter typ 8021ad vlan id 1 vlan typ 8021q vlan id 2 vlan typ ip rÀknare
- Lade till stöd för att hantera resurser med den förenade hierarkin cgroups v2. Den viktigaste skillnaden mellan cgroups v2 och v1 Àr anvÀndningen av en gemensam cgroups hierarki för alla typer av resurser, istÀllet för separata hierarkier för att allokera CPU-resurser, för att reglera minnesförbrukning och för I/O. Till exempel, för att kontrollera om förfadern till en socket pÄ den första nivÄn cgroupv2 matchar "system.slice"-masken, kan du anvÀnda konstruktionen: ... socket cgroupv2 nivÄ 1 "system.slice"
- Lade till möjligheten att kontrollera komponenterna i SCTP-paket (funktionaliteten som krÀvs för drift kommer att visas i kÀrnan). Linux 5.14). Till exempel, för att kontrollera om ett paket innehÄller en chunk med typen 'data' och fÀltet 'type': ⊠sctp chunk data finns ⊠sctp chunk data typ 0
- Utförandet av regelladdningsoperationen har accelererats med ungefÀr tvÄ gÄnger med "-f"-flaggan. Utmatningen av listan med regler har ocksÄ pÄskyndats.
- En kompakt form för kontroll av om flaggbitar Àr satta tillhandahÄlls. För att till exempel kontrollera att snat- och dnat-statusbitarna inte Àr instÀllda kan du ange: ... ct status ! snat,dnat för att kontrollera att syn-biten Àr instÀlld i bitmasken syn,ack: ... tcp flaggor syn / syn,ack för att kontrollera att fin- och första bitarna inte Àr instÀllda i bitmasken syn,ack,fin,rst: ... tcp-flaggor ! = fin, första / syn, ack, fin, första
- TillÄt nyckelordet "beslut" i definitioner av uppsÀttning/karttyp: add map xm { typeof iifname . ip-protokoll th dport: dom ;}
KĂ€lla: opennet.ru
