为什么广播 ping 不起作用?

为什么广播 ping 不起作用?

我有 Freebsd 作为路由器。
本地网络位于接口 sk0 上:inet 10.254.239.1 netmask 0xffffff00 broadcast 10.254.239.255
在我的本地网络中,我有一台计算机(Windows 7),它从 Freebsd 上的 DHCP 服务器获取其 ip(10.254.239.2)。

  • 对精确地址 10.254.239.2 进行 ping 操作正常。

当我尝试从 Freebsd 本身 ping bradcast 10.254.239.255 时什么也没有发生:

--- 10.254.239.255 ping statistics ---
3 packets transmitted, 0 packets received, 100.0% packet loss
  • #arp -a说:
    ...
    ?(10.254.239.255)位于(不完整)sk0 上已过期 [以太网]
    ...

  • 防火墙允许此接口上的所有内容

在哪里可以找到?如何才能让广播正常工作?

答案1

如果您想要执行主机发现,请不要使用广播 ping,只需对给定子网的每个可能排列进行 ping 即可。这听起来很繁琐,但实际上只需几秒钟(括号很重要):

$ time ( s=192.168.0 ; for i in $(seq 1 254) ; do ( ping -n -c 1 -w 1 $s.$i 1>/dev/null 2>&1 && printf "%-16s %s\n" $s.$i responded ) & done ; wait ; echo )
192.168.0.5      responded
192.168.0.11     responded
192.168.0.2      responded
192.168.0.254    responded
192.168.0.4      responded

real    0m1.317s
user    0m0.004s
sys 0m0.084s

答案2

大多数操作系统默认忽略广播 ICMP ping,出于安全原因。你无需“让它工作”,它对其他类型的广播也不会产生任何影响。


在 FreeBSD 上,net.inet.icmp.bmcastechosysctl 切换此功能。

答案3

我知道这个问题很老了,但它是谷歌搜索“ubuntu broadcast ping”时最热门的结果之一。

我想补充一点从 Linux 主机轻松发送广播 ping 请求(ICMP 回应请求),选项如下-b。微软由于某种原因不允许这样做。

以下是从 Ubuntu 主机发送的广播 ping:

ping -b 192.168.1.255
WARNING: pinging broadcast address
PING 192.168.1.255 (192.168.1.255) 56(84) bytes of data.
64 bytes from 192.168.1.247: icmp_seq=1 ttl=64 time=0.031 ms
64 bytes from 192.168.1.254: icmp_seq=1 ttl=64 time=0.960 ms (DUP!)
64 bytes from 192.168.1.202: icmp_seq=1 ttl=64 time=92.3 ms (DUP!)

注意 -b 选项允许广播。如你所见,我的网络上的几个主机都已回复,包括一台思科交换机、我自己的 Ubuntu 主机和一台 Apple 笔记本电脑。

是的,正如其他人之前所说,广播 ping 对于扫描网络来说很糟糕。有些主机会直接忽略回显请求。有更好的工具可用于此目的(例如 nmap)。

相关内容