UDPポート転送:チャネル2:オープン失敗:接続失敗:接続が拒否されました。

UDPポート転送:チャネル2:オープン失敗:接続失敗:接続が拒否されました。

私の状況は次のとおりです。

現在、SSHトンネルを介してUDPパケットを送信するために2つのホスト間でプログラムを取得しようとしています。 2 つのホスト間に中間ホストもあります。 Server01 は 2 つのサブネットを分離します。

サブネット: //// 10.11.XX ///////// 192.168.XX
ホスト: クライアント <-------> Server01 <------> Server02

ここに画像の説明を入力してください。

SSH接続が正常に確立され、RSAキーを使用したため、パスワードは必要ありません。

その後、このチュートリアルに従いました。

UDP用のSSHポート転送

要約すると、次のように入力してsocatを使用してserver01でTCP-UDPリレーを設定するように求められます。

server01$ socat tcp4-listen:8000,reuseaddr,fork udp:server02:53

そしてクライアントでsocatを使用するUDP-TCPリレー:

client$ socat -T15 udp4-recvfrom:53000,reuseaddr,fork tcp:localhost:8000

これで問題が発生します。私のプログラムでlocalhost UDPポート53000にソケットを作成してデータを送信しようとすると、

channel 2: open failed: connect failed: Connection refused
channel 2: open failed: connect failed: Connection refused
channel 2: open failed: connect failed: Connection refused

私はserver02をクライアントと同じサブネットに配置すると、私のプログラムはUDPパケットを完全に交換するので、私のプログラムは大丈夫だと思います。

プログラムがUDPポート53000ソケットにアクセスできるようにする必要がある設定はありますか?それともsocatがUDPポートを使用しているため、UDPポートにソケットを作成できませんか?私はしばらくこの問題に閉じ込められていました...どんな助けでもいいでしょう。

よろしくお願いします。

ベストアンサー1

ポートにアクセスできるようにプログラムをsudoとして実行する必要があることを知っています。これが将来的に誰かに役立つことを願っています。

編集:私のCプログラムにはソケットをUDPポート53000に接続し、そのポートを介してパケットを送信するにはsudo権限が必要です。

おすすめ記事