Bidirektionale IP- UND Port-Translation: Wie lauten die konkreten iptables-Befehle?
Hallo liebe Expertinnen und Experten.
Folgende Frage beschäftigt mich bezüglich IP- bzw. Port-Übersetzungen leider erneut (siehe Bidirektionale IP- UND Port-Translation via Dienst bzw. Dämon machbar?).
Die dort vorgeschlagene Lösung war aus div. Gründen nicht das, was ich suche.
Ich weiß, dass es z.B. in Routern NAT gibt, z.B. um <externe-IP:443> zu <interne-IP:443> oder <externe-IP:8080> zu <interne-IP:80> hin und her zu übersetzen.
Wie lauten die konkreten iptables-Befehle, um auf einem (Root)vServer im Internet die (hier erfundene) IP 156.128.132.100 und z.B. Port 443 (156.128.132.100:443) auf sagen wir 103.95.199.67:10443 in bidirektionaler Richtung die Datenpakete transparent hin- und her übersetzen zu lassen?
Es sollen "lediglich" die IP-Adressen _UND_ zeitgleich der Port ausgetauscht, die Datenpakete aber in ihren Informationen ansonsten möglichst nicht tangiert werden.
Im LANCOM-Router hier am DSL würden dann die von extern eintreffenden, umgelenkten Datenpakete 103.95.199.67:10443 auf 192.168.10.100:443 geNATet. Die Antworten gehen dann wieder ebenso geNATet retour.
Hat das schon mal jemand gemacht?
Und wie lauten die konkreten Befehle bei iptables, um oben beschriebene IP-Adressen _UND_ zeitgleich Ports übersetzt werden?
(Und wie kann ich das wieder rückgängig machen, wenn ich mich vertan habe, ohne den vServer neu installieren zu müssen? )
Bin auf Linux noch ambitionierter Anfänger bis leichter Fortgeschrittener, würde das gern verstehen und lernen.
Herzliche Grüße
Jörg
Folgende Frage beschäftigt mich bezüglich IP- bzw. Port-Übersetzungen leider erneut (siehe Bidirektionale IP- UND Port-Translation via Dienst bzw. Dämon machbar?).
Die dort vorgeschlagene Lösung war aus div. Gründen nicht das, was ich suche.
Ich weiß, dass es z.B. in Routern NAT gibt, z.B. um <externe-IP:443> zu <interne-IP:443> oder <externe-IP:8080> zu <interne-IP:80> hin und her zu übersetzen.
Wie lauten die konkreten iptables-Befehle, um auf einem (Root)vServer im Internet die (hier erfundene) IP 156.128.132.100 und z.B. Port 443 (156.128.132.100:443) auf sagen wir 103.95.199.67:10443 in bidirektionaler Richtung die Datenpakete transparent hin- und her übersetzen zu lassen?
Es sollen "lediglich" die IP-Adressen _UND_ zeitgleich der Port ausgetauscht, die Datenpakete aber in ihren Informationen ansonsten möglichst nicht tangiert werden.
Im LANCOM-Router hier am DSL würden dann die von extern eintreffenden, umgelenkten Datenpakete 103.95.199.67:10443 auf 192.168.10.100:443 geNATet. Die Antworten gehen dann wieder ebenso geNATet retour.
Hat das schon mal jemand gemacht?
Und wie lauten die konkreten Befehle bei iptables, um oben beschriebene IP-Adressen _UND_ zeitgleich Ports übersetzt werden?
(Und wie kann ich das wieder rückgängig machen, wenn ich mich vertan habe, ohne den vServer neu installieren zu müssen? )
Bin auf Linux noch ambitionierter Anfänger bis leichter Fortgeschrittener, würde das gern verstehen und lernen.
Herzliche Grüße
Jörg
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 256962
Url: https://administrator.de/contentid/256962
Ausgedruckt am: 19.11.2024 um 09:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Jörg,
das ganze nennt sich Port-Proxy und sollte mit folgenden drei Regeln anhand deines Beispiel funktionieren:
Und nicht vergessen das IP Forwarding zu aktivieren:
Erläuterung zu den obigen Regeln
Die erste Regel macht ein DNAT(Destination NAT) in der Prerouting Tabelle, also alle Pakete die am Server auf dem jeweiligen Port eintreffenden Pakete, deren Destination wird umgeschrieben auf die Zieladresse.
Die zweite Regel ändert anschließend in der Post-Routing-Tabelle die Absenderadresse des Pakets (SNAT = Source NAT) auf die IP des Servers so das die Pakete auch wieder geregelt über ihn zurückfließen können.
Die dritte Regel leitet Pakete die von einem lokalen Prozess auf dem Server erzeugt wurden über die OUTPUT Chain ebenfalls auf den Zielserver.
Schönen Nikolaus
Grüße Uwe
das ganze nennt sich Port-Proxy und sollte mit folgenden drei Regeln anhand deines Beispiel funktionieren:
iptables -t nat -A PREROUTING --dst 156.128.132.100 -p tcp --dport 443 -j DNAT --to-destination 103.95.199.67:10443
iptables -t nat -A POSTROUTING -p tcp --dst 103.95.199.67 --dport 10443 -j SNAT --to-source 156.128.132.100
iptables -t nat -A OUTPUT --dst 156.128.132.100 -p tcp --dport 443 -j DNAT --to-destination 103.95.199.67:10443
echo 1 > /proc/sys/net/ipv4/ip_forward
Erläuterung zu den obigen Regeln
Die erste Regel macht ein DNAT(Destination NAT) in der Prerouting Tabelle, also alle Pakete die am Server auf dem jeweiligen Port eintreffenden Pakete, deren Destination wird umgeschrieben auf die Zieladresse.
Die zweite Regel ändert anschließend in der Post-Routing-Tabelle die Absenderadresse des Pakets (SNAT = Source NAT) auf die IP des Servers so das die Pakete auch wieder geregelt über ihn zurückfließen können.
Die dritte Regel leitet Pakete die von einem lokalen Prozess auf dem Server erzeugt wurden über die OUTPUT Chain ebenfalls auf den Zielserver.
Und wie kann ich das wieder rückgängig machen, wenn ich mich vertan habe, ohne den vServer neu installieren zu müssen?
Übe es am besten in einer VM zu Hause ! Und wenn du es dann verstanden hast und es läuft, gehst du über zum Live-Objekt und setzt es dort um.Bin auf Linux noch ambitionierter Anfänger bis leichter Fortgeschrittener, würde das gern verstehen und lernen.
iptables-GrundlagenSchönen Nikolaus
Grüße Uwe
Zitat von @Server-Nutzer:
Hm, eine Nachfrage hab ich dann doch:
"iptables -L" macht mir die o.g. drei eingefügten iptabels-Einträge nicht sichtbar.
Wie geht das denn, grad wenn ich die Einträge mal ändern/löschen möchte?
Mit IPTables -L werden die Standardmäßig nur die Filter-CHAINS angezeigt, um dir die NAT-Tables (Prerouting/Postrouting/OUTPUT) anzeigen zu lassen benutze zusätzlich die Angabe der Tabelle mit dem Parameter -tHm, eine Nachfrage hab ich dann doch:
"iptables -L" macht mir die o.g. drei eingefügten iptabels-Einträge nicht sichtbar.
Wie geht das denn, grad wenn ich die Einträge mal ändern/löschen möchte?
iptables -t nat -vL
Um jetzt als Beispiel den ersten Eintrag in der PREROUTING Chain zu löschen:
iptables -t nat -D PREROUTING 1
man iptables
).Grüße Uwe
Noch zur Info falls du es mal irgendwann brauchen solltest: Die Funktion eines Port-Proxies gibt es nativ auch auf Windows-Maschinen: netsh interface portproxy
Uwe
Schönen Sonntag noch.
GleichfallsUwe