Release van het pakketfilter nftables 1.0.2

De release van de pakketfilter nftables 1.0.2 is aangekondigd, die de interfaces voor pakketfiltering voor IPv4, IPv6, ARP en netwerkmonten unificeert (gericht op het vervangen van iptables, ip6tables, arptables en ebtables). Vereiste wijzigingen voor de werking van de nftables 1.0.2 release zijn opgenomen in de Linux kernel 5.17-rc.

De nftables-pakket bevat gebruikersruimte componenten van de pakketfilter, terwijl op kernniveau het nf_tables subsysteem de werking verzorgt, dat deel uitmaakt van de Linux-kernel sinds versie 3.13. Op kernniveau wordt slechts een algemene interface geboden, niet afhankelijk van een specifiek protocol en die basisfunctionaliteiten biedt voor het extraheren van gegevens uit pakketten, het uitvoeren van gegevensbewerkingen en het beheren van stromingen.

Directe filtratieregels en protocolspecifieke verwerkers worden in bytecode gecompileerd in de gebruikersruimte, waarna deze bytecode via de Netlink-interface in de kern wordt geladen en in de kern wordt uitgevoerd in een speciale een virtuele machine, die doet denken aan BPF (Berkeley Packet Filters). Deze aanpak maakt het mogelijk om de grootte van de filtering code die op kernniveau draait aanzienlijk te verkleinen en alle functies voor het parseren van regels en de logica voor de werking met protocollen naar de gebruikersruimte te verplaatsen.

Belangrijkste vernieuwingen:

  • Een regelsoptimalisatiemodus is toegevoegd, die kan worden ingeschakeld met behulp van de nieuwe optie „-o” („—optimize”), die kan worden gecombineerd met de optie „—check” om wijzigingen in het regelsetbestand te controleren en te optimaliseren zonder dit daadwerkelijk te laden. Optimalisatie maakt het mogelijk om vergelijkbare regels samen te voegen, bijvoorbeeld de regels: 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

    zullen worden samengevoegd in 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 }

    Voorbeeld van gebruik: # nft -c -o -f ruleset.test Samensmelting: 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 in: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } counter packets 0 bytes 0 accept

  • In set-lijsten is de mogelijkheid geïmplementeerd om ip- en tcp-opties, evenals sctp-chunks aan te geven: 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 }
  • Ondersteuning voor TCP-opties fastopen, md5sig en mptcp is toegevoegd.
  • Ondersteuning voor het gebruik in subtypes van mp-tcp-vergelijkingen is toegevoegd: tcp option mptcp subtype 1
  • De filtercode die aan de kernelzijde werkt, is verbeterd.
  • Volledige ondersteuning voor het JSON-formaat is geïmplementeerd voor flowtable.
  • De mogelijkheid om de actie „reject” te gebruiken in Ethernet-framevergelijkingen is aangeboden. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 reject

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster