nftables-Paketfilter 1.0.1-Version

Die Veröffentlichung des Paketfilters nftables 1.0.1 wurde veröffentlicht, der Paketfilterungsschnittstellen für IPv4, IPv6, ARP und Netzwerkbrücken vereinheitlicht (mit dem Ziel, iptables, ip6table, arptables und ebtables zu ersetzen). Die Änderungen, die erforderlich sind, damit die Version nftables 1.0.1 funktioniert, sind im Linux-Kernel 5.16-rc1 enthalten.

Das nftables-Paket enthält Paketfilterkomponenten, die im Benutzerbereich ausgeführt werden, während die Arbeit auf Kernelebene vom Subsystem nf_tables bereitgestellt wird, das seit Version 3.13 Teil des Linux-Kernels ist. Die Kernel-Ebene stellt nur eine generische protokollunabhängige Schnittstelle bereit, die grundlegende Funktionen zum Extrahieren von Daten aus Paketen, zum Durchführen von Datenoperationen und zur Flusskontrolle bereitstellt.

Die Filterregeln selbst und protokollspezifische Handler werden in User-Space-Bytecode kompiliert. Anschließend wird dieser Bytecode über die Netlink-Schnittstelle in den Kernel geladen und im Kernel in einer speziellen virtuellen Maschine ausgeführt, die BPF (Berkeley Packet Filters) ähnelt. Dieser Ansatz ermöglicht es, die Größe des auf Kernelebene ausgeführten Filtercodes erheblich zu reduzieren und alle Funktionen der Parsing-Regeln und die Logik der Arbeit mit Protokollen in den Benutzerbereich zu verlagern.

Wichtigste Neuerungen:

  • Reduzierter Speicherverbrauch beim Laden großer Set- und Kartenlisten.
  • Das Neuladen von Set- und Kartenlisten wurde beschleunigt.
  • Die Ausgabe ausgewählter Tabellen und Ketten in großen Regelsätzen wurde beschleunigt. Beispielsweise beträgt die Ausführungszeit des Befehls „nft list Ruleset“ zum Anzeigen eines Regelsatzes mit 100 Zeilen 3.049 Sekunden, und wenn nur die NAT- und Filtertabellen ausgegeben werden („nft list table nat“, „nft list table filter „) wird auf 1.969 und 0.697 Sekunden reduziert.
  • Die Ausführung von Abfragen mit der Option „--terse“ wurde bei der Verarbeitung von Regeln mit großen Set- und Map-Listen beschleunigt.
  • Es ist möglich, Datenverkehr aus der „Egress“-Kette zu filtern, der auf der gleichen Ebene wie der Egress-Handler in der Netdev-Kette (Egress-Hook) verarbeitet wird, d. h. in der Phase, in der der Treiber ein Paket vom Kernel-Netzwerkstapel empfängt. Tabelle Netdev Filter { Chain Egress { Type Filter Hook Egress Devices = { eth0, eth1 } Priority 0; Metaprioritätssatz IP Saddr Map { 192.168.10.2 : abcd:2, 192.168.10.3 : abcd:3 } } }
  • Ermöglicht den Abgleich und die Änderung von Bytes im Header und Inhalt eines Pakets an einem bestimmten Offset. # nft Regel xy hinzufügen @ih,32,32 0x14000000 Zähler # nft Regel xy hinzufügen @ih,32,32 0x14000000 Zähler setzen

Source: opennet.ru

Kommentar hinzufügen