netcatを使用したポートフォワーディング

netcatを使用したポートフォワーディング

私はプロセスを受信して​​いますIP:port。実際には、ソケットに接続されたスパークストリームです。問題は、あるポートでSparkに接続し、別のポートからデータをストリーミングするサーバーを何とか作成したいということです。

たとえば、Sparkストリーミングの例では、netcatユーティリティ(たとえばnc -lk 5005)を使用します。ただし、着信メッセージを受信して​​エクスポートする別のサービスがあります。したがって、サービスAからのメッセージを受信し、それをSparkに転送できる一種のサーバーが必要です。

私のサービスAはソケットによって異なります。私のSpark消費者はソケットを使用しています。

ポートからポートに転送するためにこれまでに行ったことは次のとおりです。しかし、うまくいかないようです。

nc -X 4 -x 127.0.0.1:5005 localhost 5006

アイデアはサービスA:5005- >ソケット - > 5006- >スパークです。

これを行う正しい方法が見つからないようです。

一部の回答では、以下を提案しました。

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

私のスパークソケットレシーバーが接続されていないか、接続できないようです。エラーが発生します。Error connecting to 127.0.0.1:5006 - java.net.ConnectException: Connection refused

答え1

または、モードなしでnc転送トラフィックのみを使用することはできません。nckeep-alivefork

代わりに別のツールを使用する必要がありますnc(例:socatまたは)。ncat


このコマンドはポートでリッスンし、5050すべてをポートに転送します。2020

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

Ncatは、コマンドラインからネットワーク経由でデータを読み書きできる機能豊富なネットワークユーティリティです。 NcatはNmapプロジェクト用に書かれており、歴史的なNetcatをはるかに改善して再実装しました。それ

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

使用できる他のツールは次のとおりです。

ポート1234でリッスンし、アドレス「1.1.1.1」のポート4567に転送します。

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

ポート1234でリッスンし、アドレス「1.1.1.1」のポート4567に転送します。源泉

./gost -L tcp://:1234/1.1.1.1:4567

答え2

同様のユースケースがあります。私の目的は、外部ポートでリッスンし、リバースSSHトンネルを指す内部ポートに転送することです。

外部ポート:8001

内部ポート:18820

nc -l -k -p 8001 -c "nc 127.0.0.1 18820"

引用:

あるローカルポートから別のポートにトンネルを作成する簡単な方法は何ですか?

netcat接続を開いたままにする方法は?

答え3

net catを介したポート転送の場合、パイプを使用できます。

mkfifo pip
nc -l -p port_to_listen < pip | nc target_ip port_to_be_forwarded > pip

または:

nc target_ip port_to_be_forwarded < pip | nc -l -p port_to_listen > pip

関連情報