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匹注文する):

送信されたデータが失われたと推定されます。

結論として、次に送信されるすべてのデータは放送(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)

走るUbuntu14.04

現在、回避策として以下を使用していますsocat

echo "Hello" | socat - UDP-DATAGRAM:255.255.255.255:4000,broadcast

しかし、とにかく私はなぜNetCatが同じことをすることができないのか理解したいと思います。

ベストアンサー1

私はあなたが使用していると仮定しますnetcat-openbsd。を指定するので、ブロードキャストアドレスを有効にする必要があります-4-b、私たち全員が知っているように、このバージョンのnetcatは.netcatを使用してもUDPブロードキャストをサポートしません-bDebian のバグ #702204この問題を解決するには、パッチを使用することをお勧めします。

代替パッケージをインストールできますNetcat - 伝統的これはUDPを正しくサポートしているようです-b。実行時に呼び出されるnetcatは、次のように/bin/nc設定できます。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

おすすめ記事