Verwendung von Netcat für die Portweiterleitung

14

Ich habe einen Prozess, der auf ein lauscht IP:port- in der Tat ist es Spark-Streaming, das eine Verbindung zu einem Socket herstellt. Das Problem ist, dass ich irgendwie einen Server erstellen möchte, der eine Verbindung zu einem Port herstellt, und Daten von einem anderen Port auf diesen Server gestreamt werden.

Im Spark-Streaming-Beispiel wird beispielsweise das Dienstprogramm netcat verwendet nc -lk 5005. Ich habe jedoch einen anderen Dienst, der auf eingehende Nachrichten wartet und dann eine Nachricht ausspuckt. Ich brauche also eine Art Server, der Nachrichten von Service A abhören und an Spark übergeben kann.

Mein Dienst A stützt sich auf Steckdosen. Und mein Spark-Konsument ist auf Steckdosen angewiesen.

Hier ist, was ich bisher getan habe, die Weiterleitung von Port zu Port, aber dies scheint nicht zu funktionieren:

nc -X 4 -x 127.0.0.1:5005 localhost 5006

Mit der Idee, dass der Service A:5005-> Socket -> 5006-> Spark

Ich kann nicht den richtigen Weg finden, um diese Arbeit zu machen.

Einige Antworten haben Folgendes vorgeschlagen:

socat tcp-l:5005,fork,reuseaddr tcp:127.0.0.1:5006

Der Empfänger meiner Zündkerze kann oder kann keine Verbindung herstellen. Ich erhalte den Fehler:Error connecting to 127.0.0.1:5006 - java.net.ConnectException: Connection refused

störend
quelle
Sind Sie sicher, dass Port 5006 geöffnet ist ?! ; Womit wird dieser Befehl ausgegeben? sudo netstat -nltp
بارپابابا

Antworten:

22

Sie können nicht nur ncfür den Vorwärtsverkehr verwenden, nc haben nicht keep-aliveoder forkModus

Sie müssen stattdessen ein anderes Werkzeug verwenden nc. Verwenden Sie zum Beispiel socatoderncat


Dieser Befehl überwacht den Port 5050und leitet alle an den Port weiter2020

socat tcp-l:5050,fork,reuseaddr tcp:127.0.0.1:2020

Ncat ist ein funktionsreiches Netzwerkdienstprogramm, mit dem Daten über Netzwerke von der Befehlszeile aus gelesen und geschrieben werden können. Ncat wurde für das Nmap-Projekt als stark verbesserte Neuimplementierung des ehrwürdigen Netcat geschrieben. Es

ncat -l localhost 8080 --sh-exec "ncat example.org 80"

Und Sie können andere Werkzeuge verwenden:

Lauschen Sie Port 1234 und leiten Sie ihn an Port 4567 unter der Adresse "1.1.1.1" weiter.

./proxy tcp -p ":1234" -T tcp -P "1.1.1.1:4567"

Hören Sie auf Port 1234 und leitet es an Port 4567 auf Adresse „1.1.1.1“ Quelle

./gost -L tcp://:1234/1.1.1.1:4567
بارپابابا
quelle
1
Danke, ich habe den ersten SOCAT-Test ausprobiert, aber das Problem ist, dass meine Streaming-Instanz ständig etwas erwartet und bei 5006 lauscht - ohne dies erhalte ich eine Fehlermeldung.
störende
ncap hat auch Optionen für Proxies ... Was einige interessante Dinge ermöglicht ... ( gostsieht aber super aus ...)
Gert van den Berg