为什么广播 ping 不起作用?

Ser*_*gey 3 networking freebsd

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

  • Ping 到确切地址 10.254.239.2 工作正常。

当我尝试从 Freebsd ping 10.254.239.255 时,没有任何反应:

--- 10.254.239.255 ping statistics ---
3 packets transmitted, 0 packets received, 100.0% packet loss
Run Code Online (Sandbox Code Playgroud)
  • #arp -a说:
    ……
    ?(10.254.239.255) at (incomplete) on sk0 过期 [ethernet]
    ...

  • 防火墙允许所有在此接口上

去哪里看?怎么做才能使广播工作?

小智 11

如果要执行主机发现,请不要使用广播 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
Run Code Online (Sandbox Code Playgroud)

  • 虽然它确实提供了一种 ping 网络的替代方法,但它并没有回答“为什么广播 ping 不起作用?”的问题。 (3认同)

use*_*686 8

出于安全原因,默认情况下,大多数操作系统只是简单地忽略广播 ICMP ping 你没有“让它工作”,它对其他类型的广播没有影响。


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

  • 在 Linux 上,您可以使用以下命令启用广播 ping: sysctl net.ipv4.icmp_echo_ignore_broadcasts=0 (6认同)

归档时间:

查看次数:

20007 次

最近记录:

8 年,3 月 前