如果我运行这些网猫以下命令(根本没有错误消息)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
这是捕获的数据(注意两个失踪的网络猫命令) :
正如我的结论,发送到的任何数据播送(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)
跑步乌班图14.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-传统这似乎正确支持-b
UDP。请注意,运行时调用的 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
。