UtgÄvan av paketfilter nftables 1.0.2 har publicerats och enhetligar grÀnssnitten för paketfiltreringen för IPv4, IPv6, ARP och nÀtverksbroar (avser att ersÀtta iptables, ip6table, arptables och ebtables). De nödvÀndiga Àndringarna för att aktivera nftables 1.0.2 har inkluderats i kÀrnan Linux 5.17-rc.
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 nyheter:
- En ny optimeringslÀge för regler har lagts till, aktiverat med det nya alternativet "-o" ("--optimize"), vilket kan kombineras med alternativet "--check" för att kontrollera och optimera Àndringar i regelset-filen utan att ladda upp den faktiska filen. Optimering möjliggör sammanslagning av liknande regler, som till exempel: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.5 accept ip saddr 1.1.1.1 ip daddr 2.2.2.2 accept ip saddr 2.2.2.2 ip daddr 3.3.3.3 drop
kommer att slÄs samman till meta iifname . ip saddr . ip daddr { eth1 . 1.1.1.1 . 2.2.2.3, eth1 . 1.1.1.2 . 2.2.2.5 } accept ip saddr . ip daddr vmap { 1.1.1.1 . 2.2.2.2 : accept, 2.2.2.2 . 3.3.3.3 : drop }
Exempel pÄ anvÀndning: # nft -c -o -f ruleset.test Sammanfoga: ruleset.nft:16:3-37: ip daddr 192.168.0.1 counter accept ruleset.nft:17:3-37: ip daddr 192.168.0.2 counter accept ruleset.nft:18:3-37: ip daddr 192.168.0.3 counter accept till: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } counter packets 0 bytes 0 accept
- I set-listor har möjligheten att specificera ip- och tcp-alternativ samt sctp-chunkar genomförts: set s5 { typeof ip option ra value elements = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams elements = { 1, 4 } } chain c5 { ip option ra value @s5 accept } chain c7 { sctp chunk init num-inbound-streams @s7 accept }
- Stöd för TCP-alternativ som fastopen, md5sig och mptcp har lagts till.
- Stöd för att anvÀnda subtype mp-tcp i matchningar har lagts till: tcp option mptcp subtype 1
- Koden för filtrering pÄ kÀrnsidan har förbÀttrats.
- FullstÀndigt stöd för JSON-formatet har genomförts för flowtable.
- Möjlighet att anvÀnda ÄtgÀrden "reject" i Ethernet-rammatchningsoperationer har tillhandahÄllits. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 reject
KĂ€lla: opennet.ru
