Skip to main content

SoCat - Fast start

1. Was ist socat?

Socat (SOcket CAT) ist ein sehr flexibles Kommandozeilen-Tool zum Weiterleiten von Datenströmen zwischen Netzwerk-Ports, Dateien, Pipes, UNIX Sockets oder SSL/TLS-Verbindungen.

  • Temporäres Port-Forwarding zwischen unterschiedlichen Netzen oder Interfaces
  • Debugging & Überbrückung von Netzwerkrestriktionen
  • Brücke zwischen alten und neuen Protokollen (z.B. altes TLS zu modernem TLS)

Tipp: Für produktiven Dauerbetrieb sind Reverse-Proxys, VPNs oder Firewalls die bessere Wahl – socat ist ideal als temporärer Workaround!

2. Installation unter Debian/Linux

apt-get update
apt-get install socat
  • apt-get update: Paketquellen aktualisieren.
  • apt-get install socat: Socat installieren.

3. Einfaches Port-Forwarding: 192.168.0.1 → localhost

Beispiel: Du möchtest einen Dienst auf 192.168.0.1:8080 lokal als localhost:8000 bereitstellen.

socat TCP-LISTEN:8000,bind=localhost,reuseaddr,fork TCP:192.168.0.1:8080
  • TCP-LISTEN:8000,bind=localhost: Lauscht lokal auf Port 8000 (nur auf localhost).
  • reuseaddr,fork: Mehrere/kurze Verbindungen, sofortige Wiederverwendung.
  • TCP:192.168.0.1:8080: Weiterleitung zum Dienst auf 192.168.0.1:8080.

4. Mehrere Ports/Services von 192.168.0.1 zu localhost weiterleiten

socat TCP-LISTEN:8001,bind=localhost,reuseaddr,fork TCP:192.168.0.1:8081

5. Optionen erklärt

  • fork: Parallele Verbindungen möglich
  • reuseaddr: Port sofort wieder benutzbar
  • bind=localhost: Lauscht nur auf localhost (kein LAN-Zugriff möglich)

6. Verbindung nach Abbruch automatisch wiederherstellen (persist)

socat -d -d TCP:192.168.0.1:8080,persist STDOUT
  • persist: Baut Verbindung bei Abbruch erneut auf
  • -d -d: Debug-Ausgabe
  • STDOUT: Gibt Daten im Terminal aus (Beispiel)

7. SSL/TLS: Verbindung von altem 192.168.0.1-SSL auf lokalen Dienst

Beispiel: Dienst auf 192.168.0.1:8443 nutzt nur TLS 1.0, du möchtest lokal localhost:8000 bereitstellen.

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes -subj "/CN=localhost"
socat openssl-connect:192.168.0.1:8443,method=TLS1 TCP-LISTEN:8000,bind=localhost,reuseaddr,fork

8. Umgekehrter Weg: Lokaler Dienst auf localhost nach 192.168.0.1 im anderen Netz bereitstellen

socat TCP-LISTEN:8080,bind=192.168.0.1,reuseaddr,fork TCP:localhost:8000

9. Hinweise & Tipps

  • Der Rechner mit socat braucht Zugriff auf beide IPs/Netze.
  • Temporärer Einsatz: Nach Nutzung Strg+C oder Terminal schließen.
  • Für längere Nutzung: Reverse-Proxy, VPN oder Firewall bevorzugen.
  • Mit -d -d bekommst du hilfreiche Debug-Ausgaben.

10. Ressourcen