Release des Paketfilters nftables 1.1.6

Die Version 1.1.6 des Paketfilters nftables wurde veröffentlicht, die die Schnittstellen für die Paketfilterung für IPv4, IPv6, ARP und Netzwerkbrücken vereinheitlicht (beabsichtigt als Ersatz für iptables, ip6tables, arptables und ebtables). Gleichzeitig wurde die zugehörige Bibliothek libnftnl 1.3.1 veröffentlicht, die eine Low-Level-API für die Interaktion mit dem nf_tables-Subsystem bereitstellt.

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.

Wesentliche Änderungen:

  • Vollständige Unterstützung für Vorlagen leichtgewichtiger Tunnel wie vxlan, geneve und erspan bereitgestellt: table netdev global { tunnel t1 { id 10 ip saddr 192.168.2.10 ip daddr 192.168.2.11 sport 1025 dport 20020 ttl 1 erspan { version 1 index 2 } } tunnel t2 { id 10 ip saddr 192.168.3.10 ip daddr 192.168.3.11 sport 1025 dport 21021 ttl 1 erspan { version 1 index 2 } } chain in { type filter hook ingress device veth0 priority 0; tunnel name ip saddr map { 10.141.10.12 : «t1», 10.141.10.13 : «t2» } fwd to erspan1 } } Bevor die Regeln geladen werden, sollte das Netzwerk-Interface erspan1 erstellt werden: ip link add dev erspan1 type erspan external
  • Unterstützung für Masken in den Namen von Netzwerkinterfaces in netdev-Handlern hinzugefügt. Zum Beispiel kann für das Hinzufügen einer Basis-Kette zum Filter des eingehenden Traffics für alle VLAN-Geräte angegeben werden: table netdev t { chain c { type filter hook ingress devices = { «vlan*», «veth0» } priority filter; policy accept; } }
  • Auf Systemen mit dem Linux-Kernel 6.18+ wird die Unterstützung für die Übertragung von L2-Frames in Netzbrückeninterfaces zur lokalen Verarbeitung implementiert. Zum Beispiel kann zum Weiterleiten aller Ethernet-Frames an den IP-Stack für die MAC-Adresse de:ad:00:00:be:ef angegeben werden: table bridge global { chain pre { type filter hook prerouting priority 0; policy accept; ether daddr de:ad:00:00:be:ef meta pkttype set host ether daddr set meta ibrhwaddr accept } }
  • Eine neue Infrastruktur für Fuzzing-Tests mit dem Toolset afl++ (american fuzzy lop++) hinzugefügt, die während des Builds über «./configure —with-fuzzer» aktiviert werden kann.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster