nftables pakketfilter release 1.0.1

De release van pakketfilter nftables 1.0.1 is gepubliceerd, waarmee pakketfilterinterfaces voor IPv4, IPv6, ARP en netwerkbridges zijn verenigd (gericht op het vervangen van iptables, ip6table, arptables en ebtables). De wijzigingen die nodig zijn om de nftables 1.0.1-release te laten werken, zijn opgenomen in de Linux-kernel 5.16-rc1.

Het nftables-pakket bevat pakketfiltercomponenten die in de gebruikersruimte draaien, terwijl het werk op kernelniveau wordt geleverd door het nf_tables-subsysteem, dat sinds release 3.13 deel uitmaakt van de Linux-kernel. Het kernelniveau biedt alleen een generieke protocol-onafhankelijke interface die basisfuncties biedt voor het extraheren van gegevens uit pakketten, het uitvoeren van gegevensbewerkingen en stroomcontrole.

De filterregels zelf en protocolspecifieke handlers worden gecompileerd in bytecode van de gebruikersruimte, waarna deze bytecode in de kernel wordt geladen met behulp van de Netlink-interface en in de kernel wordt uitgevoerd in een speciale virtuele machine die lijkt op BPF (Berkeley Packet Filters). Deze aanpak maakt het mogelijk om de grootte van de filtercode die op kernelniveau draait aanzienlijk te verkleinen en alle functies van parseerregels en de logica van het werken met protocollen naar de gebruikersruimte te verplaatsen.

Belangrijkste innovaties:

  • Verminderd geheugengebruik bij het laden van grote set- en kaartlijsten.
  • Het herladen van set- en kaartlijsten is versneld.
  • De uitvoer van geselecteerde tabellen en ketens in grote regelsets is versneld. De uitvoeringstijd van het commando “nft list ruleset” om een ​​set regels met 100 rijen weer te geven is bijvoorbeeld 3.049 seconden, en bij het uitvoeren van alleen de nat- en filtertabellen (“nft list table nat”, “nft list table filter ”) wordt teruggebracht tot 1.969 en 0.697 seconden.
  • De uitvoering van queries met de “--terse” optie is versneld bij het verwerken van regels met grote set- en maplijsten.
  • Het is mogelijk om verkeer uit de ‘egress’-keten te filteren, die op hetzelfde niveau wordt verwerkt als de egress-handler in de netdev-keten (egress hook), d.w.z. in het stadium waarin de driver een pakket ontvangt van de kernelnetwerkstack. tabel netdev filter { chain egress { type filter hook egress devices = { eth0, eth1 } prioriteit 0; metaprioriteit set ip saddr-kaart { 192.168.10.2: abcd:2, 192.168.10.3: abcd:3 } } }
  • Maakt het matchen en wijzigen van bytes in de header en de inhoud van een pakket met een bepaalde offset mogelijk. # nft regel toevoegen xy @ih,32,32 0x14000000 teller # nft regel toevoegen xy @ih,32,32 set 0x14000000 teller

Bron: opennet.ru

Voeg een reactie