Was ist der Unterschied zwischen PREROUTING und FORWARD in iptables?

15

Ich versuche zu verstehen, wie dieses System funktioniert, und ich habe Probleme, den Unterschied zwischen der Verwendung von NAT PREROUTING oder Filter FORWARD zu verstehen. Soweit ich weiß, kann die PREROUTE das Paket an einen anderen Server senden und den Filter umgehen. Wenn NAT dies über PREROUTE handhaben kann, welchen Zweck hat es, eine FORWARD-Regel im Filter zu haben?

GheorGhe
quelle

Antworten:

23

NAT-Tabelle :

Diese Tabelle sollte nur für NAT (Network Address Translation) für verschiedene Pakete verwendet werden. Mit anderen Worten, es sollte nur zum Übersetzen des Quell- oder Zielfelds des Pakets verwendet werden.

Filtertabelle :

Die Filtertabelle wird hauptsächlich zum Filtern von Paketen verwendet. Wir können Pakete abgleichen und nach Belieben filtern. Dies ist der Ort, an dem wir gegen Pakete vorgehen und deren Inhalt untersuchen und sie je nach Inhalt FALSCH oder / AKZEPTIEREN. Natürlich können wir auch vorher filtern; Diese Tabelle ist jedoch der Ort, für den die Filterung entwickelt wurde.

Beim Durchlaufen von Tabellen und Ketten sehen wir, dass die FORWARD-Kette des Filters nur von weitergeleiteten Paketen (Pakete, die vom Netzwerk kommen UND ins Netzwerk gehen) durchlaufen wird, dh Ihr Computer verhält sich wie ein Router, während die PREROUTING-Kette von nat von beiden weitergeleitet wird Pakete und Pakete, deren Ziel der lokale Host ist.

Sie sollten PREROUTING von nat nur zum Ändern der Zieladresse der Pakete und FORWARD von Filter nur zum Filtern (Verwerfen / Annehmen von Paketen) verwenden.

Wenn wir ein Paket für die erste Routing-Entscheidung erhalten, das nicht für den lokalen Computer selbst bestimmt ist, wird es durch die FORWARD-Kette geroutet. Wenn das Paket andererseits für eine IP-Adresse bestimmt ist, die der lokale Computer abhört, senden wir das Paket über die INPUT-Kette an den lokalen Computer. Bildbeschreibung hier eingeben Pakete sind möglicherweise für den lokalen Computer bestimmt, aber die Zieladresse kann innerhalb der PREROUTING-Kette durch Ausführen von NAT geändert werden. Da dies vor der ersten Weiterleitungsentscheidung erfolgt, wird das Paket nach dieser Änderung geprüft. Aus diesem Grund kann das Routing geändert werden, bevor die Routing-Entscheidung getroffen wird. Beachten Sie, dass alle Pakete in diesem Bild den einen oder anderen Pfad durchlaufen. Wenn Sie ein Paket an dasselbe Netzwerk zurückgeben, von dem es stammt, wird es weiterhin durch die restlichen Ketten geleitet, bis es wieder im Netzwerk ist.

Eric Carvalho
quelle
5

PREROUTING : Diese Kette wird verwendet, um routingbezogene Entscheidungen zu treffen, bevor Pakete gesendet werden ( PRE ). Denken Sie immer daran , dass in PREROUTING/POSTROUTINGdh NATTabelle die ACCEPT/DROP/REJECTetc Ziele der Standard - FILTERTabelle wird nicht funktionieren. Die NATTabelle wird nur zum Treffen von Routing-Entscheidungen verwendet. Sie sollten diese Option verwenden, PREROUTINGwenn Sie Routing-Entscheidungen treffen, dh, die Entscheidungen, die getroffen werden müssen, bevor das Paket das Netzwerk durchläuft. Im folgenden Beispiel leiten wir den Datenverkehr, der gerade den Server über Port 80 erreicht hat, an den Port 8080 um:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

FORWARD : Wie der Name schon sagt, die FORWARDKette FILTERwird Tabelle werden die Pakete von einer Quelle zu einem Ziel weitergeleitet werden verwendet, hier die Quelle und das Ziel sind zwei verschiedene Hosts. Wie Sie sich vorstellen können, werden FORWARDRegeln grundsätzlich auf Servern verwendet, auf denen ein Host Datenverkehr von einem anderen Host über den Server sendet / empfängt. Wenn das Paket vom Server generiert wird, ist die Kette das OUTPUTheißt, der Datenverkehr geht von selbst aus, während die INPUTKette bedeutet, dass die Pakete nur für den Server selbst bestimmt sind. Hier ist ein Beispiel für eine FORWARDKette, in der jeglicher TCPDatenverkehr, der an Port 80 der eth0für den Host bestimmten Schnittstelle empfangen 192.168.0.4wird, akzeptiert und an folgende Adresse weitergeleitet wird 192.168.0.4:

iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 192.168.0.4 -j ACCEPT
heemayl
quelle
Ihre Verwendung von "Hosts" scheint seltsam. Welche Tabelle wann verwendet wird, hängt in erster Linie von den lokalen Schnittstellen ab, in die ein Paket eingegangen ist und die beendet werden sollen.
guntbert
Welcher Teil scheint komisch? Ich habe den Begriff Hosts verwendet, um die sendenden und empfangenden Parteien
anzugeben
Ich spreche über den absatz FORWARD: diese tabelle wird verwendet, wenn ein paket, das über eine schnittstelle
eingeht
oh..ok..ich habs verstanden .... ja ich sollte das Interface benutzen .... benutze einfach die Hosts um es einfacher zu machen Bilder zu machen..ich werde das ändern wenn ich vor meinem Computer stehe.
Heemayl
@guntbert: Habe gerade meinen Kopf gerade. habe deinen letzten Kommentar nicht sorgfältig genug gelesen. Ich denke, Sie irren sich im Zusammenhang mit zwei verschiedenen Schnittstellen für die FORWARDKette. Wenn Pakete von einem Host eines LAN zu einem anderen Host eines LAN übertragen werden, durchlaufen die Pakete nur eine einzige Schnittstelle und die Kette wird verwendet, FORWARDobwohl hier der Server (Medium) im engeren Sinne nicht als Router fungiert kann eher als Schalter angesehen werden.
Heemayl