Nftables Hooks

Aus xinux.net
Zur Navigation springen Zur Suche springen

nftables verwendet größtenteils dieselbe Netfilter-Infrastruktur wie ältere iptables. Die Hook-Infrastruktur, Connection Tracking System, NAT-Engine, Logging-Infrastruktur und Userspace-Warteschlangen bleiben gleich. Lediglich das Framework zur Paketklassifizierung ist neu.


__Inhalt__


Netfilter hakt sich in Linux-Netzwerkpaketflüsse ein

Das folgende Schema zeigt Paketflüsse durch Linux-Netzwerke:

Nf-hooks.png


Datenverkehr, der im Eingabepfad zur lokalen Maschine fließt, sieht die Prerouting- und Eingabe-Hooks. Anschließend folgt der von lokalen Prozessen generierte Datenverkehr dem Ausgabe- und Postrouting-Pfad.

Wenn Sie Ihre Linux-Box so konfigurieren, dass sie sich als Router verhält, vergessen Sie nicht, die Weiterleitung zu aktivieren über:

echo 1 > /proc/sys/net/ipv4/ip_forward

Dann werden Pakete, die nicht an Ihr lokales System adressiert sind, vom Forward-Hook gesehen. Solche weitergeleiteten Pakete folgen dem Pfad: Prerouting, Forward und Postrouting.

Im Gegensatz zu iptables, das Ketten an jedem Hook (d.h. INPUT-Kette in filter-Tabelle) vordefiniert, definiert nftables überhaupt keine Ketten. Sie müssen explizit eine base chain an jedem Hook, an dem Sie den Datenverkehr filtern möchten.


Ingress-Hook

Der Ingress-Hook wurde im Linux-Kernel 4.2 hinzugefügt. Im Gegensatz zu den anderen Netzfilter-Hooks ist der Ingress-Hook mit einer bestimmten Netzwerkschnittstelle verbunden.

Sie können nftables mit dem Ingress-Hook verwenden, um sehr frühe Filterrichtlinien durchzusetzen, die sogar vor dem Prerouting wirksam werden. Beachten Sie, dass fragmentierte Datagramme in diesem sehr frühen Stadium noch nicht wieder zusammengesetzt wurden. So funktioniert beispielsweise das Abgleichen von ip saddr und daddr für alle IP-Pakete, aber das Abgleichen von L4-Headern wie udp dport funktioniert nur für unfragmentierte Pakete oder das erste Fragment.

Der Ingress-Hook bietet eine Alternative zur tc-Eingangsfilterung. Sie benötigen noch tc für Traffic Shaping/Warteschlangenverwaltung.

Haken nach Familie und Kettentyp

Die folgende Tabelle listet verfügbare Hooks nach family und chain type auf. Für kürzlich hinzugefügte Hooks werden die Mindestversionen von nftables und Linux-Kernel angezeigt.

Kettentyp Haken
eindringen vorrouting nach vorne Eingang Ausgang Postrouting aussteigen

inet-Familie
Filter Vorlage:Yes ja ja ja ja ja nein
Nat nein ja nein ja ja ja nein
Route nein nein nein nein ja nein nein

IP6-Familie
Filter nein ja ja ja ja ja nein
Nat nein ja nein ja ja ja nein
Route nein nein nein nein ja nein nein

IP-Familie
Filter nein ja ja ja ja ja nein
Nat nein ja nein ja ja ja nein
Route nein nein nein nein ja nein nein

familie arp
Filter nein nein nein ja ja nein nein
Nat nein nein nein nein nein nein nein
Route nein nein nein nein nein nein nein

Brückenfamilie
Filter nein ja ja ja ja ja nein
Nat nein nein nein nein nein nein nein
Route nein nein nein nein nein nein nein

netdev-Familie
Filter Vorlage:Yes nein nein nein nein nein Vorlage:Nein
Nat nein nein nein nein nein nein nein
Route nein nein nein nein nein nein {{n

~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~