Warum SNAT
(ändert die Quell-IP und / oder die Ports) tritt in der nat
Tabellenkette auf POSTROUTING
, dh nach dem Routing? Und warum DNAT
(ändert die Ziel-IP-Ant / oder Ports) in der PREROUTING
Kette? Ich denke, letzteres liegt daran, dass es in einem PC mit unterschiedlichen privaten Netzwerken möglicherweise mehrere Netzwerkkarten gibt und der PC nicht weiß, wie das Paket weitergeleitet werden soll, wenn die Ziel-IP-Adresse immer noch eine öffentlich routbare Adresse ist. Doch für SNAT
Ich kann keinen Grund sehen , warum dies nicht stattfinden könnte in PREROUTING
.
SNAT
nicht in derPREROUTING
Kette passieren , weil dies bedeuten würde, dass alle PaketeSNAT
empfangen werden, während dies tatsächlich nur zum Beispiel für eine Internet-Schnittstelle erwünscht wäre? UndDNAT
muss dies geschehen,PREROUTING
weil die Ziel-IP geändert wird und daher vor der Routing-Entscheidung erfolgen muss, um über die richtige (LAN-zugewandte) Schnittstelle weitergeleitet zu werden?Ich bin mir ziemlich sicher, dass alles, was von der lokalen Maschine kommt, niemals durch den
PREROUTING
Tisch geht, wie in dieser fantastischen ASCII-Figur zu sehen ist .quelle
DNAT
nur tun, wenn der PC als Router fungiert und mindestens eines der LAN-Netzwerke private IP-Adressen verwendet.SNAT
inprerouting
und ich antwortete - Pakete , deren Quelle die lokale Maschine nie die Tabelle besuchen. Deshalb kann es nicht.SNAT
einen Datenverkehr vom lokalen Computer ausführen?eth1
Angenommen , es gibt einen PC mit gegenüberliegendem LAN (IP-Adresse 10.10.10.1/24) undeth0
gegenüberliegendem Internet (IP-Adresse 198.51.100.1/24). Der gesamte Datenverkehr von diesem Computer zum Internet verwendet einfach 198.51.100.1 als Eine Quell-IP-Adresse und keineSNAT
wird benötigt. IMHOSNAT
wird nur benötigt, wenn der Datenverkehr durch den PC fließt und dann durch den PC fließtPREROUTING
. Oder fehlt mir etwas?Wie die Kettennamen andeuten,
PREROUTING
erfolgt dies zunächst, wenn ein Paket empfangen wird, und wird daher basierend darauf weitergeleitet, wohin es geht (Ziel). Nachdem alle anderen Routing-Regeln angewendet wurden, bestimmt diePOSTROUTING
Kette anhand der Herkunft (Quelle), wohin sie führt.Auf meinem Server werden beispielsweise alle eingehenden Ports, die weitergeleitet werden sollen (NAT), in der
PREROUTING
Kette als definiertDNAT
, und alle Pakete, die von den NAT-Schnittstellen stammen, durchlaufen diePOSTROUTING
Kette alsSNAT
und folglich (in diesem Fall) gehen durch die FilterketteFORWARD
.quelle
Wenn Sie eine Paketmanipulation unter Linux durchführen, ist der aus Kettenperspektive übliche Pfad PREROUTING als erste Kette und POSTROUTING die letzte Kette im Paketpfad. Es gibt viele Konfigurationen, die ein Router normalerweise hat, die sogar einige Transformationen wie die Auswahl eines IPSec-VPN-Tunnels für einen bestimmten Fluss enthalten. Normalerweise besteht bei SNAT die Absicht, das Paket mit einer Adresse zu senden, die von Hosts erreicht werden kann, die in einem öffentlichen Netzwerk verbunden sind. Solche Änderungen werden am Paket vorgenommen, wenn es den Router verlassen soll, dh POSTROUTING-Level kurz vor dem OUTPUT, um ein Vermischen der IP-Adressen zu vermeiden. In ähnlicher Weise erwartet der Router in umgekehrter Richtung zunächst den tatsächlichen Fluss, damit alle Entscheidungen gemäß den Konfigurationen angewendet werden können, wenn das Paket den Stapel durchläuft.
quelle