私がこれを実行するとインターネット猫次のコマンド(エラーメッセージはまったくありません)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ブロードキャストをサポートしません-b
。 Debian のバグ #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
。