Socat: Unterschied zwischen den Versionen
K Textersetzung - „ TCP“ durch „ TCP“ |
|||
| (3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 64: | Zeile 64: | ||
== Anwendung == | == Anwendung == | ||
; Daten von stdin über TCP an <nowiki>192.168.0.10:80</nowiki> senden und Antwort anzeigen | ; Daten von stdin über [[TCP]] an <nowiki>192.168.0.10:80</nowiki> senden und Antwort anzeigen | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
socat - TCP:192.168.0.10:80 | socat - [[TCP]]:192.168.0.10:80 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Auf Port 8080 lauschen und Datenverkehr an 192.168.0.10 auf Port 80 weiterleiten | ; Auf Port 8080 lauschen und Datenverkehr an 192.168.0.10 auf Port 80 weiterleiten | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
socat TCP-LISTEN:8080,fork TCP:192.168.0.10:80 | socat [[TCP]]-LISTEN:8080,fork [[TCP]]:192.168.0.10:80 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Erstellen Sie einen einfachen TCP-Echo-Server auf Port 9000 | ; Erstellen Sie einen einfachen [[TCP]]-Echo-Server auf Port 9000 | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
socat TCP-LISTEN:9000,reuseaddr fork EXEC:/bin/cat | socat [[TCP]]-LISTEN:9000,reuseaddr fork EXEC:/bin/cat | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Leiten Sie den Datenverkehr zwischen den Ports 1234 und 5678 auf localhost weiter u | ; Leiten Sie den Datenverkehr zwischen den Ports 1234 und 5678 auf localhost weiter u | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
socat | socat [[TCP]]4-LISTEN:1234 fork [[TCP]]4:localhost:5678 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Zeile 89: | Zeile 89: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Stellen Sie eine Datei über TCP bereit. Verbinden Sie sich mit Port 8081, um die Protokolldatei zu lesen | ; Stellen Sie eine Datei über [[TCP]] bereit. Verbinden Sie sich mit Port 8081, um die Protokolldatei zu lesen | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
socat TCP-LISTEN:8081,fork FILE:/path/to/output.log | socat [[TCP]]-LISTEN:8081,fork FILE:/path/to/output.log | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Daten über TCP an Port 6000 empfangen und an eine lokale Datei anhängen | ; Daten über [[TCP]] an Port 6000 empfangen und an eine lokale Datei anhängen | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
socat TCP-LISTEN:6000,reuseaddr OPEN:/path/to/file,create,append | socat [[TCP]]-LISTEN:6000,reuseaddr OPEN:/path/to/file,create,append | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Leiten Sie den TCP-Datenverkehr an Port 7000 an ein serielles Gerät mit einer Baudrate von 115200 weiter | ; Leiten Sie den [[TCP]]-Datenverkehr an Port 7000 an ein serielles Gerät mit einer Baudrate von 115200 weiter | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
socat TCP-LISTEN:7000,fork /dev/ttyUSB0,b115200,raw | socat [[TCP]]-LISTEN:7000,fork /dev/ttyUSB0,b115200,raw | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Zeile 111: | Zeile 111: | ||
; 500 ms Verzögerung für weitergeleiteten Datenverkehr zwischen den Ports 12345 und 80 einführen | ; 500 ms Verzögerung für weitergeleiteten Datenverkehr zwischen den Ports 12345 und 80 einführen | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
socat | socat [[TCP]]4-LISTEN:12345,fork,delay=500ms [[TCP]]4:localhost:80 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Zeile 126: | Zeile 126: | ||
; Auf lokalem Port 8080 lauschen und Datenverkehr über SSL/TLS an example.com weiterleiten | ; Auf lokalem Port 8080 lauschen und Datenverkehr über SSL/TLS an example.com weiterleiten | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
socat TCP-LISTEN:8080,fork OPENSSL:www.example.com:443,verify=0 | socat [[TCP]]-LISTEN:8080,fork OPENSSL:www.example.com:443,verify=0 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; SSL-Verbindungen auf 8443 akzeptieren und an Nicht-SSL 8080 weiterleiten | ; SSL-Verbindungen auf 8443 akzeptieren und an Nicht-SSL 8080 weiterleiten | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
socat OPENSSL-LISTEN:8443,cert=test.pem,verify=0,fork TCP:localhost:8080 | socat OPENSSL-LISTEN:8443,cert=test.pem,verify=0,fork [[TCP]]:localhost:8080 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Zeile 152: | Zeile 152: | ||
=== Siehe auch === | === Siehe auch === | ||
<div style="column-count:2"> | <div style="column-count:2"> | ||
<categorytree hideroot=on mode="pages"> | <categorytree hideroot=on mode="pages">Netzwerk/Befehl</categorytree> | ||
</div> | </div> | ||
---- | ---- | ||
| Zeile 171: | Zeile 171: | ||
{{DEFAULTSORT:socat}} | {{DEFAULTSORT:socat}} | ||
{{DISPLAYTITLE:socat}} | {{DISPLAYTITLE:socat}} | ||
</noinclude> | </noinclude> | ||
[[Kategorie:Netzwerk/Befehl]] | |||
[[Kategorie:Linux/Befehl]] | |||
Aktuelle Version vom 4. Juli 2026, 12:04 Uhr
socat - Multipurpose relay (SOcket CAT)
Beschreibung
- Bidirektionale Byte-Streams aufbauen
- Daten überagen
Da die Streams aus einer Vielzahl unterschiedlicher Datensenken und -quellen (siehe Adresstypen) aufgebaut werden können
- da viele Adressoptionen auf die Streams angewendet werden können, kann socat für viele verschiedene Zwecke verwendet werden Filan ist ein Dienstprogramm, das Informationen über seine aktiven Dateideskriptoren auf stdout ausgibt
- Es wurde zum Debuggen von socat geschrieben, kann aber auch für andere Zwecke nützlich sein
- Verwenden Sie die Option -h, um weitere Informationen zu erhalten
- Procan
Procan ist ein Dienstprogramm, das Informationen über Prozessparameter auf stdout ausgibt
- Es wurde geschrieben, um einige UNIX-Prozesseigenschaften besser zu verstehen und zum Debuggen von socat, kann aber auch für andere Zwecke nützlich sein
- Lebenszyklus
Der Lebenszyklus einer socat-Instanz besteht in der Regel aus vier Phasen
- Init-Phase
In der init-Phase werden die Befehlszeilenoptionen geparst und die Protokollierung initialisiert Während der open-Phase öffnet socat die erste Adresse und anschließend die zweite Adresse
- Diese Schritte sind in der Regel blockierend; daher müssen insbesondere bei komplexen Adresstypen wie Socks Verbindungsanfragen oder Authentifizierungsdialoge abgeschlossen sein, bevor der nächste Schritt gestartet wird
- Übertragungsphase
In der Übertragungsphase überwacht socat die Lese- und Schreib-Dateideskriptoren beider Streams über select() und wenn auf einer Seite Daten verfügbar sind und auf die andere Seite geschrieben werden können, liest socat diese, führt bei Bedarf Zeilenumbruchkonvertierungen durch und schreibt die Daten in den Schreib-Dateideskriptor des anderen Streams, um dann weiter auf weitere Daten in beide Richtungen zu warten Wenn einer der Streams effektiv EOF erreicht, beginnt die Schließungsphase
- Socat überträgt die EOF-Bedingung an den anderen Stream, d. h. es versucht, nur seinen Schreibstream zu schließen, um ihm die Möglichkeit zu geben, ordnungsgemäß zu beenden
- Für eine definierte Zeit überträgt socat weiterhin Daten in die andere Richtung, schließt dann aber alle verbleibenden Kanäle und beendet sich
Installation
sudo apt install socat
Aufruf
socat [options] <address> <address>
socat -V
socat -h[h[h]] | -?[?[?]]
filan
procan
Optionen
| Unix | GNU | Parameter | Beschreibung |
|---|---|---|---|
Parameter
Umgebungsvariablen
Exit-Status
| Wert | Beschreibung |
|---|---|
| 0 | Erfolg |
| >0 | Fehler |
Anwendung
- Daten von stdin über TCP an 192.168.0.10:80 senden und Antwort anzeigen
socat - [[TCP]]:192.168.0.10:80
- Auf Port 8080 lauschen und Datenverkehr an 192.168.0.10 auf Port 80 weiterleiten
socat [[TCP]]-LISTEN:8080,fork [[TCP]]:192.168.0.10:80
- Erstellen Sie einen einfachen TCP-Echo-Server auf Port 9000
socat [[TCP]]-LISTEN:9000,reuseaddr fork EXEC:/bin/cat
- Leiten Sie den Datenverkehr zwischen den Ports 1234 und 5678 auf localhost weiter u
socat [[TCP]]4-LISTEN:1234 fork [[TCP]]4:localhost:5678
- Lesen Sie die Eingabe vom Terminal und senden Sie sie an den UDP-Server study-notes.org#
socat STDIN UDP:192.168.0.10:5678 Dan Nanni
- Stellen Sie eine Datei über TCP bereit. Verbinden Sie sich mit Port 8081, um die Protokolldatei zu lesen
socat [[TCP]]-LISTEN:8081,fork FILE:/path/to/output.log
- Daten über TCP an Port 6000 empfangen und an eine lokale Datei anhängen
socat [[TCP]]-LISTEN:6000,reuseaddr OPEN:/path/to/file,create,append
- Leiten Sie den TCP-Datenverkehr an Port 7000 an ein serielles Gerät mit einer Baudrate von 115200 weiter
socat [[TCP]]-LISTEN:7000,fork /dev/ttyUSB0,b115200,raw
- Auf einem UNIX-Socket lauschen und eingehende Daten wiedergeben
socat UNIX-LISTEN:/tmp/mysocket,fork EXEC:/bin/cat
- 500 ms Verzögerung für weitergeleiteten Datenverkehr zwischen den Ports 12345 und 80 einführen
socat [[TCP]]4-LISTEN:12345,fork,delay=500ms [[TCP]]4:localhost:80
- Verbindung zu example.com auf Port 443 herstellen und dabei die Zertifikatsüberprüfung deaktivieren
socat - OPENSSL:example.com:443,verify=0
- Auf Port 8443 über SSL/TLS als einfacher SSL-Echo-Server lauschen
socat OPENSSL-LISTEN:8443,cert=server.pem,verify=0,fork EXEC:/bin/cat
- Auf lokalem Port 8080 lauschen und Datenverkehr über SSL/TLS an example.com weiterleiten
socat [[TCP]]-LISTEN:8080,fork OPENSSL:www.example.com:443,verify=0
- SSL-Verbindungen auf 8443 akzeptieren und an Nicht-SSL 8080 weiterleiten
socat OPENSSL-LISTEN:8443,cert=test.pem,verify=0,fork [[TCP]]:localhost:8080
Fehlerbehebung
Konfiguration
Dateien
| Datei | Beschreibung |
|---|---|
Anhang
Siehe auch
Dokumentation
- Man-Page