ping 广播地址

网络工程 播送 国际会议 网络发现
2021-07-03 07:24:05

我在用linux。我在网上的某个地方看到ping 255.255.255.255 会ping 到网段中的每个人。它将返回该子网中的每个 IP 地址。但是当我尝试

ashokkrishna@ashokkrishna-Lenovo-B560:~$ ping -b 255.255.255.255
WARNING: pinging broadcast address
PING 255.255.255.255 (255.255.255.255) 56(84) bytes of data.
64 bytes from 192.168.1.220: icmp_seq=1 ttl=64 time=100 ms
64 bytes from 192.168.1.220: icmp_seq=1 ttl=64 time=100 ms (DUP!)
64 bytes from 192.168.1.220: icmp_seq=2 ttl=64 time=128 ms
64 bytes from 192.168.1.220: icmp_seq=2 ttl=64 time=130 ms (DUP!)

我只收到一个 ip 的回复。如何获取每个 ip,我知道如何使用 nmap 获取每个 ip 但我在互联网上读到的内容在我的 senario 中完全相反,为什么?

ashokkrishna@ashokkrishna-Lenovo-B560:~$ 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.220: icmp_seq=1 ttl=64 time=55.2 ms
64 bytes from 192.168.1.220: icmp_seq=1 ttl=64 time=66.6 ms (DUP!)
64 bytes from 192.168.1.220: icmp_seq=2 ttl=64 time=78.5 ms
64 bytes from 192.168.1.220: icmp_seq=2 ttl=64 time=79.2 ms (DUP!)
4个回答

并非所有机器都会回答广播 ping。(所有广播 - 255.255.255.255,或子网广播 - 例如 xxx255)有些人将其视为“安全功能”,因为可以欺骗源以淹没网络上的任何主机。

许多现代操作系统现在都禁用对广播的响应。他们忽略它们以避免安全问题。

如果您使用的是 linux,请使用 来检查您的系统 sysctl net.ipv4.icmp_echo_ignore_broadcasts,它可能会显示 1。您不会收到来自其他机器的任何数据包,因为其他机器可能也有类似的设置。

尝试使用 arp 而不是 icmp 来访问机器。

在您网络的所有机器上尝试此操作,以便在 ping 广播地址时从它们接收数据包

sudo sysctl net.ipv4.icmp_echo_ignore_broadcasts=0

为什么要使用边界选项 (-b) ?

尝试不使用此选项,除非您的路由器阻止广播的 ping 请求,否则它应该可以工作。