Wer mit CGNAT konfrontiert wird sieht sich gegebenenfalls dem Problem ausgesetzt, das im Router bzw. in der Firewall freigegebene Ports bzw. Dienste via IPv4 nicht erreichbar sind.
Der Hintergrund ist einfach: Bei CGNAT bzw. DS-Lite hat man am Anschluss keine öffentlich-erreichbare IPv4-Adresse anliegen. Muss man allerdings von einem IPv4-Anschluss aus auf Dienste am DS-Lite-Anschluss zugreifen schlägt die Stunde der Port-Mapper. Diese gibt es beispielsweise in Form von Anbietern wie IPv64.net oder zum selber “basteln” mit Tools wie socat. So können tcp- und udp-Ports von IPv4 auf IPv6 umgesetzt werden. Möchte man das Ganze selbst betreiben, bietet sich an einen günstigen VPS zu mieten um so eine öffentlich-erreichbare IPv4-Adresse zu erhalten und dort dann socat auszuführen.
Hinweis: Es ist eine Weile her, das ich socat irgendwo zum Laufen bringen musste, daher kann es sein, das die Anleitung nicht ganz up-to-date ist.
Die folgenden Befehle werden als root ausgeführt.
Einstieg
Zuerst installiert man socat aus den Paketquellen der verwendeten Linux-Distribution. Ein einfacher Aufruf zur Port-Umsetzung von IPv4 zu IPv6 sieht so aus:
socat tcp4-listen:443 tcp6-connect:<IPv6-Adresse oder FQDN oder DDNS>:443
Hinweis: Je nach Linux-Distribution oder falls es Schwierigkeiten gibt, sollte man die aktuelle Version direkt bei den Machern herunterladen und nutzen.
Wichtig: Der FQDN oder DDNS muss zur IPv6-Adresse auflösen.
Nun ist es nicht sinnvoll jedes Mal den Befehl in der Konsole oder via ssh abzusetzen, außerdem kann es zu Situationen kommen in denen socat abstürzt und dann funktioniert die Port-Umsetzung nicht mehr, daher ist es sinnvoller socat als Daemon laufen zu lassen.
Als Daemon einrichten
Bei Linux-Distributionen die systemd verwenden erstellt man zuerst eine Datei “socat.service” unter
/etc/systemd/system
Deren Inhalt lautet:
# /etc/systemd/system/socat.service [Unit] Description=socat Port-Mapper After=network.target [Service] ExecStart=socat -d -d -d tcp4-listen:443,reuseaddr,fork tcp6-connect:<IPv6-Adresse oder FQDN oder DDNS>:443 Restart=always [Install] WantedBy=multi-user.target
Selbstverständlich muss die “ExecStart”-Zeile wunschgemäß angepasst werden.
Nun führt man folgende Befehle aus:
systemctl daemon-reload systemctl enable socat.service systemctl start socat.service systemctl status socat.service
Sofern eine Firewall auf dem VPS bzw. Linux-System läuft oder vorgeschaltet ist, muss der Port dort ebenfalls freigegeben werden.
Nach jeder Änderung muss man folgende Befehle ausführen:
systemctl daemon-reload systemctl restart socat.service
Wie hat Dir der Artikel gefallen ?
Du möchtest den Blog unterstützen ?
Neben PayPal.ME gibt es noch weitere Möglichkeiten, lies hier wie du diesen Blog unterstützen kannst.
Quellen
GitHub – BasterdOperator – IPv4-to-IPv6-Only-Portmapper
Redflo’s Tiki – socat examples
TecAdmin.net – How to Run Shell Script as Systemd in Linux
AskUbuntu – Redirecting multiple ports with socat
Red Hat – Blog – Getting started with socat, a multipurpose relay tool for Linux

Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, seit 2001 in der IT tätig und seit über 15 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen.


XING











Schreibe einen Kommentar