Simulieren Sie die TCP-Trennung mit Socat

Simulieren Sie die TCP-Trennung mit Socat

Ich versuche, mit dem Befehl socat eine TCP-Verbindungstrennung zwischen meinem Client-Dienst und dem EMS-Broker-Prozess auf einem Remote-Host zu simulieren. Ich führe diesen Befehl socat aus

socat TCP-LISTEN:8123,fork TCP:Remotehostname:Port

Ich führe diesen Befehl beispielsweise auf einem Server ausServer 1- und ich konfiguriere meinen Client-Dienst für die Verbindung mitServer1:8123– wodurch der Client eine Verbindung mit dem eigentlichen EMS-Broker herstellen kann.

Wenn ich jedoch eine Trennung simulieren möchte, beende ich den Socat-Prozess (ich finde die PID mit „ps aux | grep socat“), aber das scheint die Verbindung nicht zu beenden. Ich sehe, dass der Client immer noch mit dem EMS-Broker kommunizieren kann. (Warum wird Socat in diesem Stadium nicht beendet?)

Wenn ich meinen Client jetzt jedoch neu starte, kann keine Verbindung zum Broker hergestellt werden (weil der Socat-Prozess jetzt wirklich tot ist).

Ich kann nicht herausfinden, was hier passiert. Wie kann ich sicherstellen, dass der Socat-Prozess definitiv beendet wird?

Antwort1

Ich denke, es hängt davon ab, wie Sie den Socat-Prozess beenden. Wahrscheinlich akzeptiert Socat das von Ihnen verwendete Signal nicht. Versuchen Sie es mit 9:

kill -9 pid

Die Ausgabe von ps sollte mehr als eine PID für den Socat-Prozess anzeigen, Sie müssen die richtige auswählen.

Direkt nachdem Sie den Socat-Befehl ausgeführt haben, sollten Sie nur einen Prozess sehen:

[root@centos03 ~]# ps aux | grep socat
root     28801  0.0  0.3  41684  1936 pts/0    S+   15:22   0:00 socat TCP-LISTEN:8123,fork TCP:web:80
root     28803  0.0  0.1 103244   848 pts/3    S+   15:22   0:00 grep socat

Sobald der Client eine Verbindung hergestellt hat, sollten Sie einen weiteren Vorgang sehen:

[root@centos03 ~]# ps aux | grep socat
root     28801  0.0  0.3  41684  1940 pts/0    S+   15:22   0:00 socat TCP-LISTEN:8123,fork TCP:web:80
root     28807  0.0  0.2  45860  1452 pts/0    S+   15:25   0:00 socat TCP-LISTEN:8123,fork TCP:web:80
root     28809  0.0  0.1 103244   844 pts/3    S+   15:26   0:00 grep socat

Wenn Sie den Prozess jetzt mit PID 28801 beenden, wird keine neue Verbindung zugelassen, aber der Client bleibt weiterhin verbunden, bis Sie den Prozess mit PID 28807 beenden.

verwandte Informationen