Mac OS X 10.9.5
でboot2docker
を実行していますが、一時的に非特権UDPポート69をboot2docker
仮想マシンのポート69に転送したいと考えています。 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 *.*
関連するもののみ私がWebで見つけたものはあまり役に立ちませんでした。
Mac OS Xで、あるポートから別のポートにUDPトラフィックを「ミラーリング」する良い方法は何ですか?
以下の手順を試しましたが、は機能しますが機能しますが、Macでは機能しません機能します(ポート20を転送します)ポート29へのUDPテキストメッセージ)、しかしとにかくそれを試してみたいかもしれません:
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特殊ファイルが機能していない可能性があります。
しかし、私は「より簡単な」方法を見つけました。
gcc -w udp_redirect.c -o udp_redirect
でコンパイルしますSudo ./udp_redirect 127.0.0.1 20 127.0.0.1 29 &
Sudo nc -ul 29
echo “this is a test” | Sudo nc -4u -w1 localhost 20
を使用してテストしますこのテストでは、UDPテキストメッセージをポート20に送信し、最初の端末のポート29でリスナーがメッセージを出力するのを監視します。ポート20にリスナーを設定して、使用可能なメッセージがないことを確認することもできます。メッセージはすべてポート29に転送されます(複製されません)。
udp_redirect
バイナリの方がはるかに使いやすく、特別なfifoファイルを必要とせず、パイプを必要とせず、nc
ユーティリティを必要とせず、最も重要なのは、それが「簡単」だと私は言います、 できます!