Nftables Hooks
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:
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
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |