これらのNetCatコマンドをWireSharkキャプチャ実行中に(キャプチャフィルター= udp dst port 4000
):
luis@Zarzamoro:~$ echo "Hello" | nc -w1 -4u 255.255.255.255 4000
luis@Zarzamoro:~$ echo "Hello" | nc -w1 -4u 255.255.255.1 4000
luis@Zarzamoro:~$ echo "Hello" | nc -w1 -4u 192.168.11.255 4000
luis@Zarzamoro:~$ echo "Hello" | nc -w1 -4u 192.168.11.100 4000
これはキャプチャされたデータです(2つの欠落しているnetcat注文に注意してください):
結論として、ブロードキャスト(xxx255)ネットワークアドレスに送信されたデータは、無視されます(エラーなし:-P)によってNetCat。
なんでこんなことが起こっているの?
追加データ:
これは私の完全なifconfig
です:
luis@Zarzamoro:~$ Sudo ifconfig
eth0 Link encap:Ethernet HWaddr b8:27:eb:ef:bb:aa
inet addr:192.168.11.140 Bcast:192.168.11.255 Mask:255.255.255.0
inet6 addr: fe80::ba27:ebff:feef:bbaa/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9672 errors:0 dropped:0 overruns:0 frame:0
TX packets:8567 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:503027 (503.0 KB) TX bytes:5993557 (5.9 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:153 errors:0 dropped:0 overruns:0 frame:0
TX packets:153 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:10926 (10.9 KB) TX bytes:10926 (10.9 KB)
実行中Ubuntu 14.04。
今のところ回避策として、私はsocat
を使用しています。
echo "Hello" | socat - UDP-DATAGRAM:255.255.255.255:4000,broadcast
しかし、とにかくNetCatが同じことを行うことができない理由を理解したいと思います。
-4
を指定しているので、 netcat-openbsd を使用していると思います。ブロードキャストアドレスを有効にするための-b
がありますが、UDPブロードキャストは-b
を使用してもこのバージョンのnetcatではサポートされないことがわかっています。 Debian Bug#702204 それを修正するパッチを提案しています。
代替パッケージをインストールできます netcat-traditional UDPで-b
を正しくサポートしているようです。両方のパッケージがシステムにインストールされている場合、/bin/nc
を実行して呼び出すnetcatは、 update-alternatives
を使用して構成できることに注意してください。
$ Sudo update-alternatives --config nc
There are 2 choices for the alternative nc (providing /bin/nc).
Selection Path Priority Status
------------------------------------------------------------
* 0 /bin/nc.openbsd 50 auto mode
1 /bin/nc.openbsd 50 manual mode
2 /bin/nc.traditional 10 manual mode
Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /bin/nc.traditional to provide /bin/nc (nc) in manual mode
最後に、-v
を追加して、nc
からより詳細な診断を取得することをお勧めします。