server-nutzer
Goto Top

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? face-smile )

Bin auf Linux noch ambitionierter Anfänger bis leichter Fortgeschrittener, würde das gern verstehen und lernen.

Herzliche Grüße
Jörg

Content-ID: 256962

Url: https://administrator.de/contentid/256962

Ausgedruckt am: 19.11.2024 um 09:11 Uhr

colinardo
colinardo 06.12.2014 aktualisiert um 15:20:50 Uhr
Goto Top
Hallo Jörg,
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
Und nicht vergessen das IP Forwarding zu aktivieren:
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 face-smile und setzt es dort um.

Bin auf Linux noch ambitionierter Anfänger bis leichter Fortgeschrittener, würde das gern verstehen und lernen.
iptables-Grundlagen

Schönen Nikolaus face-smile
Grüße Uwe
Server-Nutzer
Server-Nutzer 06.12.2014 um 23:57:38 Uhr
Goto Top
Hallo Uwe,

so, hab das mal probiert. Scheint zu funktionieren. face-smile

Schönen Dank! Und schönes Loch im Hemde äh Wochenende!
Jörg
Server-Nutzer
Server-Nutzer 07.12.2014 um 01:58:09 Uhr
Goto Top
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?

Beste Grüße
Jörg
colinardo
colinardo 07.12.2014 aktualisiert um 09:23:45 Uhr
Goto Top
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 -t
iptables -t nat -vL
Das v macht die Ausgabe etwas ausführlicher.

Um jetzt als Beispiel den ersten Eintrag in der PREROUTING Chain zu löschen:
iptables -t nat -D PREROUTING 1
Alles andere erfährst du in der manpage zu iptables (man iptables).

Grüße Uwe
Server-Nutzer
Server-Nutzer 07.12.2014 um 10:18:23 Uhr
Goto Top
Hallo Uwe,

ich bin bei der vielen Parametermöglichkeiten irgendwie "falsch" abgebogen.
Danke Dir.

Klappt übrigens, wie gewünscht: Habe mal Exchange-Zugang fürs Büro damit umgeleitet.
Über die Methode könnte man tatsächlich nun zwei Exchangeserver an einem (V)DSL-Anschluss (nur eine feste IP erhältlich bei Telekom) betreiben und von außen drauf zugreifen.

Schönen Sonntag noch.

Jörg
colinardo
colinardo 07.12.2014 aktualisiert um 12:21:09 Uhr
Goto Top
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

Schönen Sonntag noch.
Gleichfalls

Uwe