nftables paketfilter 1.0.1 release

Utgivningen av paketfilter nftables 1.0.1 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.1-versionen ska fungera ingår i Linux-kärnan 5.16-rc1.

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:

  • Minskad minnesförbrukning vid laddning av stora set och kartlistor.
  • Omladdningen av set- och kartlistor har påskyndats.
  • Utdata från utvalda tabeller och kedjor i stora regeluppsättningar har accelererats. Till exempel är exekveringstiden för kommandot "nft list ruleset" för att visa en uppsättning regler med 100 tusen rader 3.049 sekunder, och när endast nat- och filtertabellerna matas ut ("nft list table nat", "nft list table filter" ”) reduceras till 1.969 och 0.697 sekunder.
  • Exekveringen av frågor med alternativet "--terse" har påskyndats vid behandling av regler med stora uppsättnings- och kartlistor.
  • Det är möjligt att filtrera trafik från ”egress”-kedjan, som bearbetas på samma nivå som egress-hanteraren i netdev-kedjan (egress-hook), d.v.s. i det skede då drivrutinen tar emot ett paket från kärnnätverksstacken. table netdev filter { chain egress { typ filter hook egress devices = { eth0, eth1 } prioritet 0; metaprioritetsuppsättning ip saddr map { 192.168.10.2 : abcd:2, 192.168.10.3 : abcd:3 } } }
  • Tillåter matchning och modifiering av bytes i rubriken och innehållet i ett paket vid en given offset. # nft lägg till regel xy @ih,32,32 0x14000000 räknare # nft lägg till regel xy @ih,32,32 set 0x14000000 räknare

Källa: opennet.ru

Lägg en kommentar