nftables paketfilter 1.0.2 release

Utgivningen av paketfilter nftables 1.0.2 har publicerats, som förenar paketfiltreringsgränssnitt för IPv4, IPv6, ARP och nätverksbryggor (som syftar till att ersätta iptables, ip6table, arptables och ebtables). De ändringar som krävs för att nftables 1.0.2-versionen ska fungera ingår i Linux-kärnan 5.17-rc.

Paketet nftables inkluderar paketfilterkomponenter som körs i användarutrymme, medan arbetet på kärnnivå tillhandahålls av nf_tables-undersystemet, som har varit en del av Linux-kärnan sedan release 3.13. Kärnnivån tillhandahåller endast ett generiskt protokolloberoende gränssnitt som tillhandahåller grundläggande funktioner för att extrahera data från paket, utföra dataoperationer och flödeskontroll.

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 i en speciell virtuell maskin som påminner om BPF (Berkeley Packet Filters). Detta tillvägagångssätt tillåter dig att avsevärt minska storleken på filtreringskoden som körs på kärnnivå och flytta alla funktioner för att analysera regler och logik för att arbeta med protokoll till användarutrymmet.

Huvudsakliga innovationer:

  • Ett regeloptimeringsläge har lagts till, aktiverat med det nya alternativet "-o" ("--optimera"), som kan kombineras med alternativet "--check" för att kontrollera och optimera ändringar i regeluppsättningsfilen utan att faktiskt ladda den . Optimering låter dig kombinera liknande regler, till exempel reglerna: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 acceptera meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.5 acceptera ip saddr 1.1.1.1. .2.2.2.2 acceptera ip saddr 2.2.2.2 ip daddr 3.3.3.3 drop

    kommer att kombineras till meta iifname . ip saddr. ip daddr { eth1 . 1.1.1.1. 2.2.2.3, etl. 1. 1.1.1.2 } acceptera ip saddr . ip daddr vmap { 2.2.2.5 . 1.1.1.1 : acceptera, 2.2.2.2 . 2.2.2.2 : drop }

    Exempel på användning: # nft -c -o -f ruleset.test Sammanfogning: ruleset.nft:16:3-37: ip daddr 192.168.0.1 räknare acceptera ruleset.nft:17:3-37: ip daddr 192.168.0.2 räknare acceptera ruleset.nft:18:3-37: ip daddr 192.168.0.3 räknare acceptera till: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } räknarepaket 0 byte 0 acceptera

  • Setlistorna implementerar möjligheten att specificera ip- och tcp-alternativ, såväl som sctp-bitar: set s5 { typeof ip option ra value elements = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams elements = { 1, 4 } } kedja c5 { ip option ra värde @s5 acceptera } kedja c7 { sctp chunk init num-inbound-streams @s7 accept }
  • Lade till stöd för TCP-alternativen fastopen, md5sig och mptcp.
  • Tillagt stöd för att använda mp-tcp-undertypen i mappningar: tcp-alternativ mptcp-undertyp 1
  • Förbättrad filtreringskod på kärnan.
  • Flowtable har nu fullt stöd för JSON-formatet.
  • Möjligheten att använda "avvisa"-åtgärden i Ethernet-rammatchningsoperationer har tillhandahållits. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 avvisa

Källa: opennet.ru

Lägg en kommentar