Skip to main content

SoCat - Fast start

1. Was ist socat?

Socat steht für (SOcket CAT und) ist ein extremsehr vielseitigesflexibles Kommandozeilen-Tool fürzum dieWeiterleiten Datenübertragungvon Datenströmen zwischen zweiNetzwerk-Ports, Endpunkten.
EsDateien, funktioniertPipes, ähnlichUNIX wieSockets netcatoder ("nc"), ist aber deutlich mächtiger und flexibler.
Typische Anwendungsfälle:SSL/TLS-Verbindungen.

  • PortweiterleitungTemporäres (lokalPort-Forwarding zwischen unterschiedlichen Netzen oder übers Netzwerk)Interfaces
  • ProtokollübersetzungDebugging & Überbrückung von Netzwerkrestriktionen
Brücke zwischen alten und neuen Protokollen (z.B. vonaltes TCPTLS zu UDPmodernem oder von alten zu neuen SSL/TLS-Protokollen) Debugging von Netzwerkverbindungen Temporäre Ersatzlösung, wenn keine Firewallregel angepasst werden kann SSL/TLS-"Terminator": Alte Verbindungen mit modernen Zertifikaten sichern (oder andersrum)TLS)

Socat sollte wegen seiner Flexibilität aber nicht als Dauerlösung genutzt werden!Tipp: Für produktiveproduktiven SetupsDauerbetrieb sind spezialisierteReverse-Proxys, Reverse-Proxys wie nginx, stunnelVPNs oder HAProxyFirewalls oftdie besserbessere geeignet.Wahl – socat ist ideal als temporärer Workaround!

2. Installation unter Debian/Linux

Die Installation ist sehr einfach – alle benötigten Pakete sind in den Debian-Repositories enthalten.

apt-get update
apt-get install socat

  • apt-get update: AktualisiertPaketquellen die Paketlisten.aktualisieren.
  • apt-get install socat: InstalliertSocat das socat-Paket.installieren.

3. GrundlegendeEinfaches Nutzung:Port-Forwarding: Ports192.168.0.1 und→ Daten weiterleitenlocalhost

MitBeispiel: socatDu lassen sich Daten von einem Port anmöchtest einen anderenDienst weiterleitenauf –192.168.0.1:8080 entwederlokal lokal,als überlocalhost:8000 das Netzwerk oder zwischen verschiedenen Protokollen.bereitstellen.

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

  • TCP-LISTEN:12348000,bind=localhost: WartetLauscht auf eingehende Verbindungenlokal auf Port 12348000 (nur auf allen lokalen Interfaces)localhost).
  • reuseaddr,fork: Mehrere/kurze Verbindungen, sofortige Wiederverwendung.
TCP:localhost:192.168.0.1:8080: LeitetWeiterleitung diezum eingehenden Daten an Port 8080Dienst auf localhost192.168.0.1:8080 weiter..

Nutze

4. diesMehrere z.B.,Ports/Services umvon eine Verbindung zwischen zwei Ports auf demselben Rechner oder zwischen verschiedenen Rechnern im Netzwerk herzustellen.

Tipp: Wenn du nur auf einer bestimmten IP (z.B. 192.168.0.1) lauschen möchtest, ergänze bind=192.168.0.1:

socat TCP-LISTEN:1234,bind=192.168.0.1 zu localhost weiterleiten
socat TCP-LISTEN:8001,bind=localhost,reuseaddr,fork TCP:localhost:8080

192.168.0.1:8081

4.5. Optionen erklärt

    fork: Parallele Verbindungen stabil halten & mehrere Clients unterstützen

    Standardmäßig beendet socat den Prozess nach einer einzelnen Verbindung. Möchtest du mehrere Clients gleichzeitig bedienen oder nach Verbindungsabbruch einen neuen Versuch ermöglichen, sind folgende Optionen wichtig:

      möglich reuseaddr: Port kann sofort neuwieder genutzt werden, auch wenn vorher noch eine Verbindung offen war.benutzbar forkbind=localhost: JederLauscht eingehendenur Clientauf bekommt einen eigenen socat-Subprozesslocalhost (erlaubtkein paralleleLAN-Zugriff Verbindungen).
      socat TCP-LISTEN:1234,bind=192.168.0.1,reuseaddr,fork TCP:localhost:8080
      
      
        fork: Besonders wichtig, wenn du im Testbetrieb mehrere Zugriffe brauchst (z.B. Browser-Reloads oder mehrere Nutzer im LAN). reuseaddr: Hilft, wenn Verbindungen "hängen" und der Port sonst blockiert bleibt.möglich)

        5.6. VerbindungenVerbindung nach Abbruch automatisch neuwiederherstellen aufbauen(persist)

        Mit der Option

        persist kann socat als Client nach einem Verbindungsabbruch immer wieder neue Versuche starten.
        Achtung: persist macht nur auf der Client-Seite Sinn (also dort, wo socat aktiv eine Verbindung aufbaut).
        socat -d -d TCP:192.168.0.1:443,8080,persist STDOUT
        
        
        • persist: Baut Verbindung bei Abbruch erneut auf
        -d -d: Debug-Ausgabe STDOUT: Gibt ausführliche Debug-Ausgaben (optional für Fehlersuche). persist: Baut nach Verbindungsverlust immer wieder automatisch neu auf. STDOUT: Gibt empfangene Daten aufim der KonsoleTerminal aus (nur als Beispiel, du kannst auch an einen Port oder eine Datei weiterleiten).Beispiel)

        Tipp:

        7. FürSSL/TLS: Server-SeiteVerbindung (z.B.von Port-Weiterleitungaltem im192.168.0.1-SSL LAN)auf reichtlokalen meist fork und reuseaddr. 6. Socat als temporärer SSL-"Proxy": Alte und neue Zertifikate kombinierenDienst ManchmalBeispiel: mussDienst einauf Client192.168.0.1:8443 odernutzt Server noch altes SSL/TLS (z.B.nur TLS 1.0, TLS 1.1) sprechen, während moderne Browser das nicht mehr unterstützen.
        Hier kann socat als temporärer "SSL-Terminator" genutzt werden, der alte Verbindungen entgegennimmt und an einen Zielport mit neuem Zertifikat (oder unverschlüsselt) weiterleitet – oder umgekehrt. 6.1. Selbsterstelltes Zertifikat für socat (schnell & einfach) Falls du keinmöchtest Zertifikatlokal zurlocalhost:8000 Hand hast, kannst du mit openssl schnell ein selbstsigniertes Zertifikat erstellen:bereitstellen. openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes -subj "/CN=localhost" socat key.pem:openssl-connect:192.168.0.1:8443,method=TLS1 PrivaterTCP-LISTEN:8000,bind=localhost,reuseaddr,fork Schlüssel8. cert.pem:Umgekehrter ÖffentlichesWeg: ZertifikatLokaler -nodes:Dienst Ohneauf Passwortlocalhost (praktischnach für temporäre Tests) -subj: Setzt den Common Name192.168.0.1 im Zertifikatanderen (z.B.Netz für "localhost") 6.2. Beispiel: Altes SSL abfangen & intern als Klartext oder modernes SSL weiterleiten Fall: Alter Client (z.B. ein Embedded-Gerät oder Legacy-Software) kann nur TLS 1.0, aber dein Server oder Browser will mindestens TLS 1.2.
        socat nimmt die alte Verbindung entgegen und gibt sie intern weiter.bereitstellen

        socat openssl-listen:443,TCP-LISTEN:8080,bind=192.168.0.1,reuseaddr,cert=cert.pem,key=key.pem,method=TLS1fork TCP:localhost:80808000

        9. Hinweise & Tipps

        • openssl-listen:443:Der Lauscht mit SSL/TLS auf Port 443
        bind=192.168.0.1: Hört nur auf dieser IP cert/key: Das eigene (Test-)Zertifikat method=TLS1: Akzeptiert explizit TLS 1.0 (je nach Bedarf auch SSLv3 etc.) TCP:localhost:8080: Gibt Daten an einen lokalen Server weiter (z.B. moderner Webserver auf Port 8080)

        Ergebnis: Alte Geräte können sich mit veraltetem Protokoll verbinden, socat "übersetzt" und dein moderner Server/Browser bleibt sicher.

        Achtung: Diese Methode ist unsicher und sollte nur im Ausnahme-/Testfall oder als kurzfristiger Workaround genutzt werden!

        6.3. Beispiel: Verbindung zu altem Zielserver erzwingen (Client-Seite downgraden)

        Fall: Dein System unterstützt nur noch moderne SSL/TLS-Versionen, aber der Zielserver ist alt.
        Mit socat kannst du von Klartext oder modernem SSL auf alte Protokolle "downgraden".

        socat TCP-LISTEN:1234,reuseaddr openssl-connect:192.168.0.10:443,method=TLS1
        
        
          TCP-LISTEN:1234: Lauscht auf Port 1234 (beliebiger lokaler Port) openssl-connect:192.168.0.10:443: Baut eine verschlüsselte Verbindung zum Zielserver auf (mit altem Protokoll TLS 1.0) method=TLS1: Erzwingt altes Protokoll

          Ergebnis: Neue Clients können sich lokalRechner mit socat verbinden,braucht dieserZugriff übernimmtauf diebeide (unsichere) Verbindung zum alten Server.

          7. Wichtige Hinweise und Grenzen

            Sicherheit: Altes SSL/TLS ist unsicher. Nutze das wirklich nur, wenn es keine Alternative gibt!IPs/Netze. Fehlerquellen: Achte auf Zertifikate, Port-Freigaben und ggf. Firewalleinstellungen. Temporärer Einsatz: SocatNach eignet sich ideal als Schnellhilfe, für Produktivbetrieb aber unbedingt professionelle Tools verwenden! Beende socat nach dem Einsatz mitNutzung Strg+C oder durchTerminal Schließenschließen. desFür Terminalfensters.längere Nutzung: Reverse-Proxy, VPN oder Firewall bevorzugen. Mit -d -d bekommst du hilfreiche Debug-Ausgaben.

            8. Weitere Beispiele &10. Ressourcen

            openssl req Manual Ubuntuusers Socat-EintragArtikel (deutsch)