nftables pakketfilter release 1.0.2

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

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:

  • Er is een regeloptimalisatiemodus toegevoegd, ingeschakeld met behulp van de nieuwe "-o" ("--optimize") optie, die kan worden gecombineerd met de "--check" optie om wijzigingen in het regelsetbestand te controleren en te optimaliseren zonder het daadwerkelijk te laden . Door optimalisatie kunt u soortgelijke regels combineren, 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 .2.2.2.2 accepteer ip saddr 3.3.3.3 ip daddr XNUMX verwijderen

    wordt gecombineerd tot meta iifname . ip sadr. ip daddr {eth1. 1.1.1.1. 2.2.2.3, eth1. 1.1.1.2. 2.2.2.5} accepteer ip-sadr. ip daddr vmap { 1.1.1.1 . 2.2.2.2: aanvaarden, 2.2.2.2 . 3.3.3.3: laten vallen}

    Voorbeeldgebruik: # nft -c -o -f ruleset.test Samenvoegen: 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 accepteren in: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } counterpakketten 0 bytes 0 accepteren

  • De setlijsten implementeren de mogelijkheid om ip- en tcp-opties te specificeren, evenals sctp-chunks: set s5 { typeof ip-optie ra value elements = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams elements = { 1, 4 } } chain c5 { ip optie ra waarde @s5 accepteren } chain c7 { sctp chunk init aantal-inkomende stromen @s7 accepteren }
  • Ondersteuning toegevoegd voor TCP-opties fastopen, md5sig en mptcp.
  • Ondersteuning toegevoegd voor het gebruik van het mp-tcp-subtype in toewijzingen: tcp-optie mptcp-subtype 1
  • Verbeterde filtercode aan de kernelzijde.
  • Flowtable heeft nu volledige ondersteuning voor het JSON-formaat.
  • Er is voorzien in de mogelijkheid om de actie “afwijzen” te gebruiken bij Ethernet-framematching-bewerkingen. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 afwijzen

Bron: opennet.ru

Voeg een reactie