web-dev-qa-db-ja.com

NetCatはネットワークデータをブロードキャストアドレスに無視(送信しない)

これらの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注文に注意してください):

Missing supposedly sent data.

結論として、ブロードキャスト(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からより詳細な診断を取得することをお勧めします。

6
yaegashi