Nftables – Aufbau

Aus Xinux Wiki
Version vom 22. Mai 2026, 04:37 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= Hooks, Chains und Tabellen = == Das Konzept – eine Analogie == Stellt euch ein Bürogebäude vor: * Die '''Büros''' sind fest eingebaut – sie existie…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Hooks, Chains und Tabellen

Das Konzept – eine Analogie

Stellt euch ein Bürogebäude vor:

  • Die Büros sind fest eingebaut – sie existieren, egal ob jemand drin sitzt. Das sind die Hooks.
  • Abteilungen ziehen in diese Büros ein und erledigen dort ihre Arbeit. Das sind die Chains.
  • Die Abteilungen gehören zu einer Firma – die Bestellabteilung und der Wareneingang sitzen in verschiedenen Büros, sind aber logisch zusammengefasst. Das ist die Tabelle.

Bei iptables waren die Abteilungen schon fest eingezogen – ob man sie brauchte oder nicht. Bei nftables ist das Gebäude leer. Man richtet nur das ein, was man wirklich braucht.

Hooks und Paketfluss

Das folgende Schaubild zeigt den Weg eines Pakets durch den Linux-Netzwerkstack. Für den Einstieg konzentrieren wir uns auf die IP-Familie (mittlere Ebene):

Datei:Nft-inet1.png

Pakete durchlaufen je nach Ziel unterschiedliche Hooks:

Hook Wann greift er? Typischer Einsatz
prerouting Jedes eingehende Paket, vor der Routing-Entscheidung DNAT, Connection Tracking
input Pakete, die an diese Maschine adressiert sind Firewall für lokale Dienste
forward Pakete, die weitergeleitet werden (Router-Betrieb) Firewall zwischen Netzsegmenten
output Pakete, die von dieser Maschine erzeugt werden Ausgehende Filterung
postrouting Jedes ausgehende Paket, nach der Routing-Entscheidung SNAT, Masquerade
Hinweis
Damit der forward-Hook greift, muss IP-Forwarding aktiviert sein:
echo 1 > /proc/sys/net/ipv4/ip_forward

Chains in nftables

Im Gegensatz zu iptables bringt nftables keine vordefinierten Chains mit. Man legt sie selbst an und weist ihnen einen Hook zu – das nennt sich Base Chain.

Zurück zur Analogie: Der Raum (Hook) existiert, aber die Abteilung (Chain) muss erst einziehen. Erst dann wird Arbeit erledigt – also Pakete verarbeitet.

Regelverarbeitung

Regeln werden sequenziell von oben nach unten auf ein Paket angewandt:

  • Greift eine Regel → Aktion wird ausgeführt (z. B. accept oder drop), Verarbeitung stoppt.
  • Greift keine Regel → die Default Policy der Chain wird angewandt.
Tabelle: filter
input forward output
rule 1 rule 1 rule 1
rule 2 rule 2 rule 2
rule 3 rule 3
rule 4
policy drop policy drop policy accept

Tabellen und Chains anlegen

Tabelle anlegen

nft add table inet filter

Die Familie inet deckt gleichzeitig IPv4 und IPv6 ab – empfohlen für den modernen Einsatz.

Tabelle löschen

nft delete table inet filter

Base Chains anlegen

Jede Chain wird einem Hook und einer Priorität zugewiesen. Priorität 0 ist der Standardwert für Filterregeln.

input

nft add chain inet filter input '{ type filter hook input priority 0 ; policy drop ; }'

forward

nft add chain inet filter forward '{ type filter hook forward priority 0 ; policy drop ; }'

output

nft add chain inet filter output '{ type filter hook output priority 0 ; policy accept ; }'
Hinweis
Die policy legt fest, was mit Paketen passiert, auf die keine Regel zutrifft.

Typisch: input und forwarddrop, outputaccept.

Aktuellen Regelstand anzeigen

nft list ruleset