Linux ping广播交换机

9

在几乎所有可用的UNIX系统上使用ping命令,对广播地址进行ping测试非常简单:

$ ping 192.168.11.255

然而,在Linux上执行此操作时,会出现一个非标准的(并且不断令人烦恼的!)响应:
$ ping 192.168.11.255
Do you want to ping broadcast? Then -b

这让我非常烦恼,自从第一次看到它以来 - Linux ping 以前并不是这样。我寻找了这个开关的源头,但找不到它何时被引入或任何关于为什么需要它的讨论。
看起来这个开关甚至还不够:
$ ping -b 192.168.11.255
WARNING: pinging broadcast address
PING 192.168.11.255 (192.168.11.255) 56(84) bytes of data.
64 bytes from 192.168.11.22: icmp_seq=1 ttl=64 time=0.225 ms

这真的必要吗?很想写一个补丁来修复Linux ping,使其像应该工作一样...

我不敢相信没有其他人抱怨过这个问题,但如果他们确实有,我在谷歌上找不到。


我同意。我也很好奇为什么要添加这个。 - aioobe
在执行此操作之前,您需要三思而后行,以免通过让数百台计算机回复 ICMP 数据包而阻塞网络。 - nos
1
这应该在superuser.com上发布... - t0mm13b
2个回答

2
你可以放置
alias ping='ping -b'

在你的.bashrc文件中 :-)

我认为这个问题更多地是关于为什么首先存在 switch 的原因。 - Matti Virkkunen
Matti是正确的。此外,-b开关仅在地址为广播地址时才起作用;否则,将显示用法。 - Mei
@Matti:是的,我理解问题是关于添加“-b”开关的原因,而不是解决它的方法!@David:这里可以工作。据我从ping源代码(http://www.linux-ipv6.org/gitweb/gitweb.cgi?p=gitroot/iputils.git;a=blob;f=ping.c;h=4472d777f7e098525b57c09c8f748ec877e6d518;hb=HEAD)中了解到的,它只是通过设置套接字选项来允许广播。虽然我猜在某些系统上可能无法工作。 - Richard Fearn

1

我可以想象出一种情况,这可能是有用的。如果您在一个配置了广播地址但不是所有主机位都为1的网络上。因此,如果没有这样的提示,您可能会意外地ping到广播地址。我想那是不好的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接