![Linux:Ping 子网内的所有主机](https://linux22.com/image/695854/Linux%EF%BC%9APing%20%E5%AD%90%E7%BD%91%E5%86%85%E7%9A%84%E6%89%80%E6%9C%89%E4%B8%BB%E6%9C%BA.png)
有一个 solaris 命令可以 ping 子网中的所有主机,方法是发出以下命令:
ping -s 255.255.255.255
Linux 中是否有类似的东西?我的目的是在 ping 所有主机后找到一个如下所示的 mac 地址:
arp -an | grep mac_address
答案1
答案2
您可以随时尝试 ping 子网的广播地址。这取决于您的本地网络设置,但您可以使用以下方法找到它
$ ifconfig wlp4s0 | grep Bcast
inet addr:192.168.199.47 Bcast:192.168.199.255 Mask:255.255.255.0
从 Linux 执行 ping 操作需要-b
命令行开关,这是一种命令的预防措施。
但是,这并不能保证您将收集到连接到您的子网的所有设备的所有 MAC 地址,因为实际上由该设备来响应发送到广播地址的 ICMP ECHO 请求,即使在 TCP/IP RFC 的早期阶段另有意图(请查看是否/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
设置为 1)。
为了确保覆盖所有地址,请使用以下方式分别 ping 这些地址:
$ for ip in 192.168.199.{1..254}; do ping -c1 ${ip} & done
如果你使用 nmap 的特殊扫描类型,也可以实现类似的效果
$ sudo nmap -sn -PE -n 192.168.179.1-254
这也是我推荐的探测方式,因为您可以微调向客户端询问其 MAC 地址的方式。
答案3
尝试
ping -b 10.0.0.255
ifconfig 显示广播地址是 10.0.0.255