Was ist Nftables

Aus Xinux Wiki
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.

Links