无法 ping 广播地址

无法 ping 广播地址
  • 主机地址:192.168.0.13
  • 网络:192.168.0.0 255.255.255.0
  • 路由器:Cisco DPC3825 DOCSIS 3.0 网关(用户手册

我的家庭网络将192.168.0.0 /24网络用于我的(主要是无线)设备。在我经常使用的许多其他网络上,我将 ping 适用的广播地址以在我的(Windows 7 x64)结果中显示所有当前活动的设备arp -a。 ping 网络的广播地址有助于我识别当前在同一网络上通信的设备。

在我的家庭网络中,我丢失了 100% 发送到 的数据包192.168.0.255。因此,arp -a无法显示我网络上的所有实时设备。所有设备都直接连接到我的路由器,然后连接到我的 ISP。

为什么我无法 ping 通此网络中的广播地址?直接登录路由器检查 DHCP 客户端表很不方便。

更新:这些 ping 尝试都是通过以太网直接连接到路由器的计算机进行的。我尝试过从多个无线设备进行相同的 ping 尝试,但无济于事。

答案1

我认为操作系统响应广播 ping 的时代早已一去不复返。据我所知,每个现代操作系统都会忽略这些请求,作为一种避免广播风暴的安全措施。

Linux 中的默认设置:

$ sysctl net.ipv4.icmp_echo_ignore_broadcasts
net.ipv4.icmp_echo_ignore_broadcasts = 1

如果您想要发现机器,您将不得不采取单播 ping(nmap、ping loop 或其他方式),但请注意,可以将机器配置为始终忽略 ping 请求。

答案2

已经有人讨论过,对广播地址的 ping 响应不再被视为良好做法。您也可以对使用 IP 224.0.0.1 的全主机多播组进行 ping。理论上,每个支持多播的主机都应该响应对此 IP 的 ping,但我听说有些主机没有这样做。

有关多播地址的更多信息,请阅读 tldp:http://www.tldp.org/HOWTO/Multicast-HOWTO-2.html

另一种选择是仅单播网段中的所有 IP 地址,这可以通过大多数系统上的内置工具轻松实现。我只了解 GNU/Linux 和 MS Windows,所以我只能为您提供这些系统的示例。

GNU/Linux

for lastoctet in $(seq 254); do ping -c 1 192.168.0.$lastoctet; done

微软视窗

for /l %i in (1,1,254) do ping -n 1 192.168.0.%i

虽然不那么容易,ping 192.168.0.255但在大多数情况下确实有效。

答案3

参照#Jorge Nerin 所说:

将忽略参数设置为0。即;

$ sysctl net.ipv4.icmp_echo_ignore_broadcasts
net.ipv4.icmp_echo_ignore_broadcasts=0

在网络中的所有设备上以 root 权限执行此操作。它将允许响应广播 ping。

PS:这样做可能会带来安全威胁。

相关内容