Der Paketfilter nftables 1.0.7 wurde veröffentlicht. Er vereinheitlicht die Schnittstellen zur Paketfilterung fĂŒr IPv4, IPv6, ARP und NetzwerkbrĂŒcken (und soll iptables, ip6table, arptables und ebtables ersetzen). Das nftables-Paket enthĂ€lt Komponenten fĂŒr die Paketfilterung im Benutzermodus, wĂ€hrend die FunktionalitĂ€t auf Kernel-Ebene vom Subsystem nf_tables bereitgestellt wird, das Teil des Kernels ist. Linux Seit Version 3.13 wird auf Kernel-Ebene nur noch eine generische, protokollunabhĂ€ngige Schnittstelle bereitgestellt, die grundlegende Funktionen zum Extrahieren von Daten aus Paketen, zum DurchfĂŒhren von Datenoperationen und zur Flusssteuerung bietet.
Die Filterregeln selbst und protokollspezifische Handler werden im Benutzermodus in Bytecode kompiliert. AnschlieĂend wird dieser Bytecode ĂŒber die Netlink-Schnittstelle in den Kernel geladen und dort in einem speziellen Kernel ausgefĂŒhrt. virtuelle MaschineĂhnlich wie bei BPF (Berkeley Packet Filters) ermöglicht dieser Ansatz eine deutliche Reduzierung des Umfangs des auf Kernel-Ebene ausgefĂŒhrten Filtercodes und verlagert die gesamte Regelanalyse und Protokolllogik in den Benutzermodus.
Wichtigste Ănderungen:
- FĂŒr Systeme mit einem Kernel Linux Version 6.2+ bietet UnterstĂŒtzung fĂŒr den Abgleich der Protokolle VXLAN, Geneve, GRE und Gretap, sodass Sie mithilfe einfacher AusdrĂŒcke Header in gekapselten Paketen prĂŒfen können. Zum Beispiel, um zu prĂŒfen IP-Adressen Im Header des eingebetteten Pakets von VxLAN können Sie nun Regeln verwenden (ohne den VxLAN-Header vorher entkapseln und den Filter an die vxlan0-Schnittstelle binden zu mĂŒssen): ... udp dport 4789 vxlan ip protocol udp ... udp dport 4789 vxlan ip saddr 1.2.3.0/24 ... udp dport 4789 vxlan ip saddr . vxlan ip daddr { 1.2.3.4 . 4.3.2.1 }
- UnterstĂŒtzung fĂŒr das automatische ZusammenfĂŒhren von Resten nach teilweisem Löschen eines Set-List-Elements implementiert, wodurch das Löschen eines Elements oder eines Teils eines Bereichs aus einem vorhandenen Bereich ermöglicht wird (zuvor konnte der Bereich nur vollstĂ€ndig gelöscht werden). Wenn Sie beispielsweise Element 25 aus einer Setliste mit den Bereichen 24â30 und 40â50 entfernen, bleiben in der Liste die Werte 24, 26â30 und 40â50 ĂŒbrig. FĂŒr die FunktionsfĂ€higkeit der automatischen ZusammenfĂŒhrung erforderliche Korrekturen werden in Wartungsversionen der stabilen Kernel-Zweige 5.10+ vorgeschlagen. # nft-Liste, Regelsatztabelle, IP x { set y { Typ von TCP, Dport, Flags, Intervall, automatisches ZusammenfĂŒhren von Elementen = { 24â30, 40â50 } } } # nft, Element löschen, IP xy { 25 } # nft-Liste, Regelsatztabelle, IP x { set y { Typ von TCP, Dport, Flags, Intervall, automatisches ZusammenfĂŒhren von Elementen = { 24, 26â30, 40â50 } } }
- Die Verwendung von Kontakten und Bereichen in der Network Address Translation (NAT)-Zuordnung ist zulÀssig. Tabelle IP NAT { Kette Vorrouting { Typ NAT Hook Vorrouting PrioritÀt Dstnat; Akzeptanz der Politik; dnat zu ip daddr. TCP-Dport-Map { 10.1.1.136 . 80: 1.1.2.69 . 1024, 10.1.1.10-10.1.1.20 . 8888-8889 : 1.1.2.69 . 2048-2049 } persistent } }
- Die UnterstĂŒtzung fĂŒr den Ausdruck âlastâ wurde hinzugefĂŒgt. Damit lĂ€sst sich ermitteln, wann ein Regelelement oder eine Set-Liste zuletzt verwendet wurde. Diese Funktion wird seit der Kernversion unterstĂŒtzt. Linux 5.14. table ip x { set y { typeof ip daddr . tcp dport size 65535 flags dynamic,timeout last timeout 1h } chain z { type filter hook output priority filter; policy accept; update @y { ip daddr . tcp dport } } } # nft list set ip xy table ip x { set y { typeof ip daddr . tcp dport size 65535 flags dynamic,timeout last timeout 1h elements = { 172.217.17.14 . 443 last used 1s591ms timeout 1h expires 59m58s409ms, 172.67.69.19 . 443 zuletzt verwendet, 4s636ms, Timeout 1h, Ablauf 59m55s364ms, 142.250.201.72. 443 zuletzt verwendet, 4s748ms, Timeout 1h, Ablauf 59m55s252ms, 172.67.70.134. 443 zuletzt verwendet, 4s688ms, Timeout 1h, Ablauf 59m55s312ms, 35.241.9.150. 443 zuletzt verwendet, 5s204ms, Timeout 1h, Ablauf 59m54s796ms, 138.201.122.174. 443 zuletzt verwendet vor 4 Sekunden und 537 Millisekunden, Timeout 1 Stunde, Ablaufdatum 59 Minuten, 55 Sekunden und 463 Millisekunden, 34.160.144.191. 443 zuletzt verwendet vor 5 Sekunden und 205 Millisekunden, Timeout 1 Stunde, Ablaufdatum 59 Minuten, 54 Sekunden und 795 Millisekunden, 130.211.23.194. 443 zuletzt verwendet vor 4 Sekunden und 436 Millisekunden, Timeout 1 Stunde, Ablaufdatum 59 Minuten, 55 Sekunden und 564 Millisekunden.
- Möglichkeit hinzugefĂŒgt, Kontingente in Setlisten zu definieren. Um beispielsweise ein Verkehrskontingent fĂŒr jede Ziel-IP-Adresse zu definieren, können Sie Folgendes angeben: table netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbytes } chain y { type filter hook egress device "eth0" priority filter; Akzeptanz der Politik; ip daddr @y drop } } # nft Element hinzufĂŒgen inet xy { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft Regelsatztabelle auflisten netdev x { set y { Typ IPv4-Adresse GröĂe 65535 Kontingent ĂŒber 10000 MB Elemente = { 8.8.8.8 Kontingent ĂŒber 10000 MB verwendet 196 Byte } } Kette y { Typ Filter Hook AusgangsgerĂ€t "eth0" PrioritĂ€tsfilter; Akzeptanz der Politik; ip daddr @y drop } }
- Die Verwendung von Konstanten in Setlisten ist zulĂ€ssig. Wenn Sie beispielsweise eine Zieladressliste und eine VLAN-ID als SchlĂŒssel verwenden, können Sie die VLAN-Nummer (daddr . 123) direkt angeben: table netdev t { set s { typeof ether saddr . VLAN-ID-GröĂe 2048, Flags dynamisch, Timeout, Timeout 1 m} Kette c {Typ Filter-Hook Ingress-GerĂ€t eth0, PrioritĂ€t 0; Akzeptanz der Politik; Ether-Typ != 8021q Update @s { Ether Daddr . 123 } ZĂ€hler } }
- Ein neuer Befehl namens âdestroyâ wurde hinzugefĂŒgt, der Objekte bedingungslos löscht (im Gegensatz zum Befehl âdeleteâ erzeugt er keine ENOENT-Fehlermeldung, wenn versucht wird, ein nicht vorhandenes Objekt zu löschen). Erfordert mindestens den Kernel. Linux 6.3-rc. Tabelle IP-Filter löschen
Source: opennet.ru
