ARP 表未使用 NMAP 更新

网络工程 ip ipv4 MAC地址 arp
2021-07-05 23:39:50

这是我所做的以及会发生的事情:

  • 假设我有一个 IP XXX200 的设备 A 连接到网络
  • 我使用 Nmap ping 我的本地网络,使用命令“ nmap --send-ip -sP 192.168.1.1/24
  • 使用“ arp -a查看arp表,设备A显示有他的MAC,没问题
  • 现在我手动更改 A 的 IP,我将静态 IP 设置为 XXX201
  • 我使用相同的 Nmap 命令“ nmap --send-ip -sP 192.168.1.1/24
  • 用“ arp -a查看arp表,然后A出现了2次。一个用于 IP XXX200,一个用于 IP XXX201

所以Nmap命令并没有刷新IP XXX200,这意味着它并没有真正ping通所有IP。因为如果我手动ping XXX200,那么它不会得到任何响应并从arp表中消失。

所以我想知道如何使用这个工具,真正刷新一个重新填充arp表。

谢谢你。

2个回答

发生的事情是可取的。对于具有多个 IP 地址的接口来说,每次使用不同地址之一时都更改 ARP 缓存是不可取的。 ARP 缓存自然会超时 MAC 地址。您可能可以清除 ARP 缓存,它会自然重建。

进一步 Ron 的回答 - 您混淆了您的协议​​层 - NMAP(以及 ping 和其他应用程序)不会填充 ARP 缓存 - 您的系统操作系统通过您的 IP 堆栈执行此操作。

ARP 缓存不指示 MAC 到 IP 映射的活跃性,它只是告诉主机在最后 $arp_cache_timeout 秒内的某个时间点,该 MAC 响应了对该 IP 的 ARP 请求。

在您的示例中,当 nmap 尝试连接到 xxx200 时,您操作系统中的 IP 堆栈看到 ARP 缓存中已经有一个条目,并且只需构建一个以缓存的 MAC 地址(恰好是您的本地 MAC 地址)为目标的以太网帧) 并发送。没有收到响应是因为您的 IP 堆栈不再响应该 IP 地址。