我在 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 世界中所有可用的功能。对于某些打印机,您可以查询其配置页面。