Veröffentlichung des Paketfilters nftables 1.0.2

Die Version 1.0.2 des Paketfilters nftables wurde veröffentlicht, die die Filterschnittstellen für IPv4, IPv6, ARP und Netzwerkbrücken vereinheitlicht (zielt darauf ab, iptables, ip6tables, arptables und ebtables zu ersetzen). Die für nftables 1.0.2 erforderlichen Änderungen sind im Kernel Linux 5.17-rc enthalten.

Das Paket nftables umfasst Komponenten des Paketfilters, die im Benutzermodus arbeiten, während die Funktion auf Kernel-Ebene von dem seit Version 3.13 im Linux-Kernel integrierten nf_tables-Subsystem bereitgestellt wird. Auf Kernel-Ebene wird lediglich eine allgemeine Schnittstelle bereitgestellt, die unabhängig vom spezifischen Protokoll ist und grundlegende Funktionen zum Extrahieren von Daten aus Paketen, zur Durchführung von Operationen mit Daten und zur Steuerung des Datenflusses bietet.

Die Filterregeln und protokollspezifischen Handler werden im Benutzermodus in Bytecode kompiliert, der anschließend über die Netlink-Schnittstelle in den Kernel geladen und dort in einem speziellen Kontext ausgeführt wird. virtuellen Maschine, die BPF (Berkeley Packet Filter) ähnelt. Dieser Ansatz ermöglicht eine signifikante Reduzierung der Größe des Filtercodes, der auf Kernel-Ebene arbeitet, und verlagert alle Funktionen zur Regelparserung und Logikbearbeitung von Protokollen in den Benutzermodus.

Hauptneuheiten:

  • Ein Optimierungsmodus für Regeln wurde hinzugefügt, der über die neue Option „-o“ („—optimize“) aktiviert werden kann. Diese Option kann mit „—check“ kombiniert werden, um Änderungen in der Regeldatei zu überprüfen und zu optimieren, ohne sie tatsächlich zu laden. Die Optimierung ermöglicht es, ähnliche Regeln zu kombinieren, beispielsweise die folgenden Regeln: 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

    werden kombinierten 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 }

    Beispiel für die Verwendung: # nft -c -o -f ruleset.test Zusammenführung: 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-Listen ist die Möglichkeit implementiert, IP- und TCP-Optionen sowie SCTP-Chunks anzugeben: 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 }
  • Unterstützung für TCP-Optionen wie Fastopen, MD5Sig und MPTCP hinzugefügt.
  • Unterstützung für die Verwendung des Subtyps MP-TCP in den Zuordnungen hinzugefügt: tcp option mptcp subtype 1
  • Der Filtercode, der auf der Kernel-Seite arbeitet, wurde verbessert.
  • Für die Flowtable wurde vollständige Unterstützung des JSON-Formats implementiert.
  • Die Möglichkeit zur Nutzung der Aktion „reject“ in den Zuordnungsoperationen von Ethernet-Frames wurde bereitgestellt. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 reject

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster