我有一台戴尔 5424,上面直接连接了大约 20 台机器。我对我的网络进行了 ping 扫描(并从所有 20 台机器中获得了答案),然后进入交换机的 CLI 并执行了show arp
。令我惊讶的是,我只看到两个 arp 条目:一个是我的路由器的条目,另一个是我通过 SSH 连接到的用于执行此工作的机器的条目。
这到底是怎么回事?并不是因为有另一个交换机,这些机器直接连接到交换机。我对交换机上所有这些 arp 条目的预期是错误的吗?
如果我ping (machine)
从 CLI 使用,该机器的 MAC 将显示在 arp 表中我期望的端口上。arp 超时设置为 3600,这对我来说似乎有点低,但这是此交换机的默认值。我的 ping 扫描和我的之间的时间show arp
比这要短得多。
答案1
除非交换机正在进行 ARP 监听,否则它不需要关心不直接与之通信的设备它拥有的 IP 地址。
如果它是子网的路由器,那么您可以合理地预期它会为网络上的大多数节点(至少是那些在子网外主动通信的节点)保留 ARP 条目;虽然听起来不像,但它需要做的就是跟踪哪个 MAC 地址位于哪个端口后面,并将每个帧发送到包含该 MAC 地址的端口。MAC 地址表(将 MAC 地址转换为端口)与 ARP 表(将 IP 转换为 MAC)是分开的。
答案2
正如 Shane 和 Aaron 所述,ARP 表是 IP 地址到 MAC 地址的映射表,并且只会填充与交换机通信的主机的条目,而不会填充通过交换机通信的主机的条目。您正在寻找的是 MAC 地址表,即 MAC 地址到端口的映射表,交换机使用它来将帧转发到正确的端口/主机。
答案3
您可能想要显示 mac 地址而不是显示 arp - arp 是 L3(IP)与 L2(MAC)地址的关系,并且交换机通常不关心 IP 地址(某些警告适用、管理等)
答案4
如果你对网络上 IP 地址对应的 MAC 地址特别感兴趣,那么你需要你的电脑arp 缓存,而不是交换机的缓存。如果是这种情况,请arp -a
在执行 ping 扫描后运行。正如其他答案中提到的,交换机不关心仅通过它进行通信的主机的 IP 地址。
如果您有可用的 Linux 主机,请查看该arp-scan
实用程序。