BSD / OS Xからあるポートから別のポートにすべてのUDPトラフィックをリダイレクトする方法は?

BSD / OS Xからあるポートから別のポートにすべてのUDPトラフィックをリダイレクトする方法は?

実行Mac OS X 10.9.5中で無許可のUDPポート69を仮想マシンのポート69boot2dockerに一時的に転送しようとしています。boot2dockerVirtualboxは特権ポート転送のみをサポートします。

私はsocat次のように実行してみました。

socat UDP-LISTEN:69,fork,reuseaddr UDP:192.168.59.101:69

tftp接続を試みるまではうまくいき、クラッシュします。

socat[32232] E bind(5, {LEN=16 AF=2 0.0.0.0:69}, 16): Address already in use

検査の結果、netstat -anUDP がどの程度開いているかは表示されません。

udp6       0      0  *.58669                *.*
udp4       0      0  *.58669                *.*

これ関連する唯一のもの私がオンラインで見つけたものはあまり役に立ちませんでした。

Mac OS Xのあるポートから別のポートにUDPトラフィックを「ミラーリング」する良い方法は何ですか?

ベストアンサー1

私は次のステップを試しました。しなければならない仕事だが本当にいいえMacで動作しますが(ポート20 UDPテキストメッセージをポート29に転送)、次のことを試すこともできます。

  1. cd /tmp
  2. mkfifo backpipe
  3. sudo nc -ulk 20 0<backpipe |sudo nc -ulk 29 | tee backpipe
  4. 他の端末で - テストしてみてくださいecho -n “this is a test” | sudo nc -4u -w1 localhost 20

使用法が壊れているか、fifo特殊ファイルが機能しない可能性があります。

しかし、私は「より簡単な」方法を見つけました。

  1. 次の名前の非常に小さなCプログラムソースファイルをダウンロードしてください。udp_redirect(ダウンロードするにはここをクリック)
  2. それをコンパイルするgcc -w udp_redirect.c -o udp_redirect
  3. バックグラウンドで実行sudo ./udp_redirect 127.0.0.1 20 127.0.0.1 29 &
  4. テストのためにポート29でリッスンを設定します。sudo nc -ul 29
  5. 2番目の端末で、次のコマンドを使用してテストします。echo “this is a test” | sudo nc -4u -w1 localhost 20

このテストはUDPテキストメッセージをポート20に送信し、最初の端末のポート29で受信機がメッセージを印刷することを確認します。また、ポート20にリスナーを設定すると、使用可能なメッセージがなく、すべてポート29に転送(重複しない)があることを確認できます。

udp_redirectバイナリが使いやすく、特別なfifoファイルも必要なく、パイプも必要なく、ncユーティリティも必要なく、最も重要なことは動作することが「より簡単です」と言います。

おすすめ記事