Was ist Nftables
Zur Navigation springen
Zur Suche springen
Was ist nftables?
- nftables ist das Paketklassifizierungs-Framework des modernen Linux-Kernels.
- 'Es besteht aus neuem Code sollte es anstelle des Legacyframeworks ip(6)tables verwenden
- {ip,ip6,arp,eb}_tables (xtables)-Infrastruktur.
- Für vorhandene Codebasen, die noch nicht konvertiert wurden, wird die Legacy-xtables-Infrastruktur ab 2021 weiterhin beibehalten.
- Automatisierte Tools unterstützen den Konvertierungsprozess von xtables zu nftables.
nftables auf den Punkt gebracht:
- Es ist in Linux-Kernels >= 3.13 verfügbar.
- Es kommt mit einem neuen Befehlszeilenprogramm nft, dessen Syntax sich von iptables unterscheidet.
- Es enthält auch eine Kompatibilitätsschicht, mit der Sie iptables-Befehle über das neue nftables-Kernel-Framework ausführen können.
- Es bietet eine generische Set-Infrastruktur, mit der Sie Karten und Verkettungen erstellen können.
- Sie können diese neuen Strukturen verwenden, um Ihren Regelsatz in einem mehrdimensionalen Baum anzuordnen,
- Dieser hat die Anzahl der Regeln, die überprüft werden müssen, drastisch reduziert
Warum nftables?
- Wir mögen schließlich iptables, dieses Tool hat uns geholfen.
- Es wird es wahrscheinlich in vielen Bereitstellungen noch eine Weile tun
- Es enthält mehr als hundert Erweiterungen, die in den letzten 15 Jahren beigesteuert wurden!.
- Dennoch leidet das iptables-Framework an Einschränkungen, die nicht einfach umgangen werden können:
- Vermeiden Sie Codeduplizierung und Inkonsistenzen
- Schnellere Paketklassifizierung durch verbesserte generische Set- und Map-Infrastruktur.
- Vereinfachte Dual-Stack-IPv4/IPv6-Administration durch die neue inet-Familie,
- Mit dieser Sie Basisketten registrieren können, die sowohl IPv4- als auch IPv6-Verkehr sehen.
- Bessere Unterstützung für dynamische Regelsatzaktualisierungen.
- Stellen Sie eine Netlink-API für Anwendungen von Drittanbietern bereit, genau wie andere Linux-Netzwerk- und Netfilter-Subsysteme.
- Adressieren Sie Syntaxinkonsistenzen und stellen Sie eine schönere und kompaktere Syntax bereit.
Hauptunterschiede zu iptables
Einige Hauptunterschiede zwischen nftables und iptables aus Benutzersicht sind:
- nftables verwendet eine neue Syntax
- Das Befehlszeilentool „iptables“ verwendet einen getopt_long()-basierten Parser, bei dem Schlüsseln immer ein doppeltes Minus vorangestellt wird, z. --key oder ein einzelnes Minus, zB. -p tcp.
- Im Gegensatz dazu verwendet nftables eine kompakte Syntax, die von tcpdump inspiriert ist.
- Tabellen und Ketten sind vollständig konfigurierbar
- iptables hat mehrere vordefinierte Tabellen und Basisketten, die alle registriert sind, auch wenn Sie nur eine davon benötigen.
- Es gab Berichte über sogar ungenutzte Basenketten, die die Leistung beeinträchtigten.
- Bei nftables gibt es keine vordefinierten Tabellen oder Ketten.
- Jede Tabelle ist explizit definiert und enthält nur die Objekte (Ketten, Sets, Maps, Flowtables und zustandsbehaftete Objekte), die Sie ihr explizit hinzufügen.
- Jetzt registrieren Sie nur die Basisketten, die Sie benötigen.
- Sie wählen Tabellen- und Kettennamen sowie Netzfilter-Hook-Prioritäten, die Ihre spezifische Paketverarbeitungspipeline effizient implementieren.
- Eine einzelne nftables-Regel kann mehrere Aktionen ausführen
- Anstelle der in iptables verwendeten Übereinstimmungen und einzelnen Zielaktionen besteht eine nftables-Regel aus null oder mehr Ausdrücken, gefolgt von einer oder mehreren Anweisungen.
- Jeder Ausdruck testet, ob ein Paket mit einem bestimmten Payload-Feld oder Paket-/Flow-Metadaten übereinstimmt.
- Mehrere Ausdrücke werden linear von links nach rechts ausgewertet: Wenn der erste Ausdruck übereinstimmt, wird der nächste Ausdruck ausgewertet und so weiter.
- Wenn wir den letzten Ausdruck erreichen, stimmt das Paket mit allen Ausdrücken in der Regel überein, und die Anweisungen der Regel werden ausgeführt.
- Jede Anweisung führt eine Aktion aus, z.B. das Setzen der netfilter-Markierung, das Zählen des Pakets, das Protokollieren des Pakets oder das Ausgeben eines Urteils, z.B. das Akzeptieren oder Verwerfen des Pakets oder das Springen zu einer anderen Kette.
- Wie bei Ausdrücken werden mehrere Anweisungen linear von links nach rechts ausgewertet: Eine einzelne Regel kann mehrere Aktionen ausführen, indem mehrere Anweisungen verwendet werden.
- Beachten Sie, dass eine Urteilsaussage naturgemäß die Regel beendet.
- Kein eingebauter Zähler pro Kette und Regel
- In nftables sind Zähler optional, Sie können sie nach Bedarf aktivieren.
- Bessere Unterstützung für dynamische Regelsatzaktualisierungen
- Im Gegensatz zu dem monolithischen Blob, der von iptables verwendet wird, werden nftables-Regelsätze intern in einer verknüpften Liste dargestellt.
- Jetzt lässt das Hinzufügen oder Löschen einer Regel den Rest des Regelsatzes unberührt, was die Verwaltung interner Zustandsinformationen vereinfacht.
- Vereinfachte Dual-Stack-IPv4/IPv6-Administration
- Mit der nftables inet-Familie können Sie Basisketten registrieren, die sowohl IPv4- als auch IPv6-Datenverkehr sehen.
- Sie müssen sich nicht mehr auf Skripte verlassen, um Ihren Regelsatz zu duplizieren.