有没有办法让“arp”列出网络所有子网上的设备?

有没有办法让“arp”列出网络所有子网上的设备?

我在 Mac OS X 上使用arp -an它来列出我网络上的所有设备,但(据我所知)这只列出了同一子网上的设备。是否可以列出全部网络上的设备而不仅仅是我的计算机的子网?

我不知道该arp命令是否可以实现这一点,或者我是否可以自动切换子网并运行arp

答案1

ARP 将仅列出与您的计算机位于同一子网的地址。

要执行您想要的操作,您可能需要nmap检查连接到特定网络的所有计算机。

或者,如果您的所有设备都是通过 DHCP 配置的(是的,DHCP 可以为多个子网提供服务,具体取决于所使用的 DHCP 服务器),您可以检查 DHCP 租约文件。

按要求编辑:

nmap -n -sn 10.0.0.0/24

或者

nmap -n -sP 10.0.0.0/24

取决于您拥有的 nmap 版本(-sn 适用于较新的版本)。

替换每个子网的 10.0.0.0/25。

答案2

从您的系统来看,没有办法这样做。这可以通过容纳所述子网的路由器来完成。您的计算机永远不会知道它甚至是子网的一部分(如果有的话)。因此,您的 show ARP 将仅显示子网内的信息。

答案3

您的计算机只需要跟踪同一子网上的计算机的 ARP 条目。对于所有其他计算机,它通过路由器到达那里。路由器存储它所知道的所有设备的 arp 条目。话虽如此,如果您的计算机连接到多个子网(通常使用多个 NIC 或一个 NIC 上的多个 VLAN),那么它将具有以下 ARP 条目全部所连接的网络。

如果您真的不需要 MAC 地址,那么可以使用其他基于 IP 地址的工具。如果您可以使用 SNMP 工具查询主路由器,那么您可以获得大量信息。如果您只知道您的 IP 范围,那么您可以编写一个简单的循环脚本或使用网络扫描仪 ping 每个地址。​​正如其他人提到的,nmap 是执行此操作的绝佳工具。

如果您确实需要子网外设备的 MAC 地址,那么对于某些类型的设备,可能有一些技巧可以做到这一点。例如,在 Windows 网络上,您可以使用 Windowsnbtstat -a hostname返回已启用 NetBIOS 的特定工作站的 NetBIOS 信息。我不确定 OS X 世界中所有可用的功能。对于某些打印机,您可以查询其配置页面。

相关内容