GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erste Schritte mit socat, einem Mehrzweck-Relay-Tool für Linux

Das Dienstprogramm socat ist ein Relais für bidirektionale Datenübertragungen zwischen zwei unabhängigen Datenkanälen.

Es gibt viele verschiedene Arten von Kanälen socat verbinden kann, einschließlich:

  • Dateien
  • Rohre
  • Geräte (serielle Leitung, Pseudoterminal usw.)
  • Sockets (UNIX, IP4, IP6 - roh, UDP, TCP)
  • SSL-Sockets
  • Proxy-CONNECT-Verbindungen
  • Dateideskriptoren (stdin usw.)
  • Der GNU-Zeileneditor (readline)
  • Programme
  • Kombinationen aus zwei davon

Dieses Tool gilt als erweiterte Version von netcat. Sie machen ähnliche Dinge, aber socat verfügt über weitere zusätzliche Funktionen, wie z. B. das Erlauben mehrerer Clients, an einem Port zu lauschen, oder das Wiederverwenden von Verbindungen.

Warum brauchen wir socat?

Es gibt viele Möglichkeiten, socate zu verwenden effektiv. Hier sind einige Beispiele:

  • TCP-Portweiterleitung (One-Shot oder Daemon)
  • Externer Sockenmacher
  • Tool zum Angriff auf schwache Firewalls (Sicherheit und Audit)
  • Shell-Schnittstelle zu Unix-Sockets
  • IP6-Relais
  • TCP-orientierte Programme auf eine serielle Leitung umleiten
  • Serielle Leitungen auf verschiedenen Computern logisch verbinden
  • Schaffen Sie eine relativ sichere Umgebung (su und chroot ) zum Ausführen von Client- oder Server-Shell-Skripten mit Netzwerkverbindungen

Wie verwenden wir socat?

Die Syntax für socat ist ziemlich einfach:

socat [options] <address> <address>

Sie müssen die Quell- und Zieladressen angeben, damit es funktioniert. Die Syntax für diese Adressen lautet:

protocol:ip:port

Beispiele für die Verwendung von socat

Beginnen wir mit einigen grundlegenden Beispielen für die Verwendung von socat für verschiedene Verbindungen.

1. Verbinden Sie sich mit TCP-Port 80 auf dem lokalen oder Remote-System:

# socat - TCP4:www.example.com:80

In diesem Fall socat überträgt Daten zwischen STDIO (-) und einer TCP4-Verbindung zu Port 80 auf einem Host namens www.example.com.

2. Verwenden Sie socat als TCP-Port-Weiterleitung:

Geben Sie für eine einzelne Verbindung Folgendes ein:

# socat TCP4-LISTEN:81 TCP4:192.168.1.10:80

Verwenden Sie für mehrere Verbindungen den fork Option wie in den folgenden Beispielen verwendet:

# socat TCP4-LISTEN:81,fork,reuseaddr TCP4:TCP4:192.168.1.10:80

Dieses Beispiel lauscht auf Port 81, akzeptiert Verbindungen und leitet die Verbindungen an Port 80 auf dem Remote-Host weiter.

# socat TCP-LISTEN:3307,reuseaddr,fork UNIX-CONNECT:/var/lib/mysql/mysql.sock 

Das obige Beispiel lauscht auf Port 3307, akzeptiert Verbindungen und leitet die Verbindungen an einen Unix-Socket auf dem entfernten Host weiter.

3. Implementieren Sie einen einfachen netzwerkbasierten Nachrichtensammler:

# socat -u TCP4-LISTEN:3334,reuseaddr,fork OPEN:/tmp/test.log,creat,append

Wenn in diesem Beispiel ein Client eine Verbindung zu Port 3334 herstellt, wird ein neuer untergeordneter Prozess generiert. Alle von den Clients gesendeten Daten werden an die Datei /tmp/test.log angehängt . Wenn die Datei nicht existiert, socat schafft es. Die Option reuseaddr ermöglicht einen sofortigen Neustart des Serverprozesses.

4. Senden Sie eine Rundsendung an das lokale Netzwerk:

# socat - UDP4-DATAGRAM:224.255.0.1:6666,bind=:6666,ip-add-membership=224.255.0.1:eth0

In diesem Fall socat überträgt Daten von stdin an die angegebene Multicast-Adresse mit UDP über Port 6666 für lokale und Remote-Verbindungen. Der Befehl weist auch die Schnittstelle eth0 an, Multicast-Pakete für die angegebene Gruppe zu akzeptieren.

Praktische Anwendungen für socat

Socat ist ein großartiges Tool zur Fehlerbehebung. Es ist auch praktisch für die einfache Herstellung von Remote-Verbindungen. Praktischerweise habe ich socat verwendet für entfernte MySQL-Verbindungen. Im folgenden Beispiel demonstriere ich, wie ich socat verwende um meine Webanwendung mit einem Remote-MySQL-Server zu verbinden, indem ich eine Verbindung über den lokalen Socket herstelle.

1. Auf meinem entfernten MySQL-Server gebe ich ein:

# socat TCP-LISTEN:3307,reuseaddr,fork UNIX-CONNECT:/var/lib/mysql/mysql.sock &

Dieser Befehl startet socat und konfiguriert es so, dass es über Port 3307 lauscht.

2. Auf meinem Webserver gebe ich ein:

# socat UNIX-LISTEN:/var/lib/mysql/mysql.sock,fork,reuseaddr,unlink-early,user=mysql,group=mysql,mode=777 TCP:192.168.100.5:3307 &

Der obige Befehl stellt über Port 3307 eine Verbindung zum Remote-Server 192.168.100.5 her.

Die gesamte Kommunikation erfolgt jedoch über den Unix-Socket /var/lib/mysql/mysql.sock , wodurch es wie ein lokaler Server aussieht.

Abschluss

socat ist ein ausgeklügeltes Dienstprogramm und in der Tat ein hervorragendes Werkzeug für jeden Systemadministrator, um Dinge zu erledigen und Fehler zu beheben. Folgen Sie diesem Link, um weitere Beispiele für die Verwendung von socat zu lesen.

[ Kostenloser Online-Kurs:Technischer Überblick zu Red Hat Enterprise Linux. ]


Linux
  1. Erste Schritte mit Linux-Firewalls

  2. Erste Schritte mit awk, einem leistungsstarken Textparsing-Tool

  3. 5 Tipps für den Einstieg in die Linux-Serversicherheit

  4. Erste Schritte mit PostgreSQL unter Linux

  5. Erste Schritte mit SSH unter Linux

Erste Schritte mit dem Linux-Betriebssystem

Vagrant-Tutorial – Erste Schritte mit Vagrant unter Linux

Erste Schritte mit VirtualBox unter Linux – Teil 1

Erste Schritte mit Flutter auf dem Linux-Desktop

Erste Schritte mit Buildah zum Verwalten von Linux-Containern

Erste Schritte mit und Installation von Slack für Linux