Linux:Ping 子网内的所有主机

Linux:Ping 子网内的所有主机

有一个 solaris 命令可以 ping 子网中的所有主机,方法是发出以下命令:

ping -s 255.255.255.255

Linux 中是否有类似的东西?我的目的是在 ping 所有主机后找到一个如下所示的 mac 地址:

arp -an | grep mac_address

答案1

你所做的只是 ping 广播地址。GNU/Linux 版本的 ping 要求你使用-b开关

-b 允许 ping 广播地址

似乎也没有与 Solaris-s交换机直接等效的设备(它只是每秒发送一次 ping 并收集统计数据),但也许它隐藏在Linux 手册页- 非常值得一读(可能是索莱斯)。

我也不会去 ping 255.255.255.255(可能需要一段时间才能完成)我会使用我所连接的网络的广播地址。

答案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

相关内容