実行Mac OS X 10.9.5
中で無許可のUDPポート69を仮想マシンのポート69boot2docker
に一時的に転送しようとしています。boot2docker
Virtualboxは特権ポート転送のみをサポートします。
私は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 -an
UDP がどの程度開いているかは表示されません。
udp6 0 0 *.58669 *.*
udp4 0 0 *.58669 *.*
これ関連する唯一のもの私がオンラインで見つけたものはあまり役に立ちませんでした。
Mac OS Xのあるポートから別のポートにUDPトラフィックを「ミラーリング」する良い方法は何ですか?
ベストアンサー1
私は次のステップを試しました。しなければならない仕事だが本当にいいえMacで動作しますが(ポート20 UDPテキストメッセージをポート29に転送)、次のことを試すこともできます。
cd /tmp
mkfifo backpipe
sudo nc -ulk 20 0<backpipe |sudo nc -ulk 29 | tee backpipe
- 他の端末で - テストしてみてください
echo -n “this is a test” | sudo nc -4u -w1 localhost 20
使用法が壊れているか、fifo特殊ファイルが機能しない可能性があります。
しかし、私は「より簡単な」方法を見つけました。
- 次の名前の非常に小さなCプログラムソースファイルをダウンロードしてください。udp_redirect(ダウンロードするにはここをクリック)
- それをコンパイルする
gcc -w udp_redirect.c -o udp_redirect
- バックグラウンドで実行
sudo ./udp_redirect 127.0.0.1 20 127.0.0.1 29 &
- テストのためにポート29でリッスンを設定します。
sudo nc -ul 29
- 2番目の端末で、次のコマンドを使用してテストします。
echo “this is a test” | sudo nc -4u -w1 localhost 20
このテストはUDPテキストメッセージをポート20に送信し、最初の端末のポート29で受信機がメッセージを印刷することを確認します。また、ポート20にリスナーを設定すると、使用可能なメッセージがなく、すべてポート29に転送(重複しない)があることを確認できます。
udp_redirect
バイナリが使いやすく、特別なfifoファイルも必要なく、パイプも必要なく、nc
ユーティリティも必要なく、最も重要なことは動作することが「より簡単です」と言います。