nftables 1.0.1, een framework voor pakketfiltering dat interfaces voor pakketfiltering voor IPv4, IPv6, ARP en netwerkbruggen verenigt, is uitgebracht (bedoeld als vervanging voor iptables, ip6table, arptables en ebtables). De wijzigingen die nodig waren voor nftables 1.0.1 zijn in de kernel opgenomen. Linux 5.16-rc1.
Het nftables-pakket bevat de pakketfiltercomponenten die in de gebruikersruimte werken, terwijl het werk op kernelniveau wordt verzorgd door het nf_tables-subsysteem, dat deel uitmaakt van de kernel. Linux Sinds versie 3.13 wordt er op kernelniveau alleen nog een generieke, protocolonafhankelijke interface aangeboden, die basisfunctionaliteit biedt voor het extraheren van gegevens uit pakketten, het uitvoeren van gegevensbewerkingen en stroombeheer.
De filterregels zelf en protocolspecifieke handlers worden in de gebruikersruimte gecompileerd tot bytecode, waarna deze bytecode via de Netlink-interface in de kernel wordt geladen en in de kernel in een speciaal daarvoor bestemde omgeving wordt uitgevoerd. virtuele machineDit doet denken aan BPF (Berkeley Packet Filters). Deze aanpak maakt een aanzienlijke reductie mogelijk van de omvang van de filtercode die op kernelniveau draait en verplaatst alle regelparsing en protocollogica naar de gebruikersruimte.
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
