arp 更新未按预期工作

网络工程 转变 arp
2021-07-26 23:00:14

我有一个简单的网络设置如下(两个交换机都是第 3 层,交换机 1 也是一个路由器,可以到达外部网络): 在此处输入图片说明

我需要将 IP 地址从 PC A 移动到 PC B(在 PC 出现故障后)。上面的网络连接到两台 PC 上的 eth1。(eth0 连接到一个无关的网络)。

故障转移后,我从 PC B 发出此命令:

arping -U -I eth1 -c 5 172.31.253.4
ARPING 172.31.253.4 from 172.31.253.4 eth1
Sent 5 probes (5 broadcast(s))
Received 0 response(s)

如您所见,没有收到任何响应。如果我在 PC BI 上发出 ifconfig 可以确认 NIC 已启动并正在运行:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.1.15  netmask 255.255.255.0  broadcast 192.168.1.255
    ether 00:50:56:a5:19:72  txqueuelen 1000  (Ethernet)
    RX packets 27854916  bytes 15728132541 (14.6 GiB)
    RX errors 0  dropped 91  overruns 0  frame 0
    TX packets 19645321  bytes 2992871301 (2.7 GiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 172.31.253.4  netmask 255.255.255.0  broadcast 172.31.253.255
    ether 00:0c:29:1e:b0:1d  txqueuelen 1000  (Ethernet)
    RX packets 13397  bytes 7034331 (6.7 MiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 11998  bytes 6102989 (5.8 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  1. 为什么 ARP 更新(arping)失败?(没有回应)
  2. 我应该如何通知交换机 1(路由器)旧 IP 的路径已更改?(并且从 PC A 发出的 arping 不会到达交换机 1,因为它在 2 跳之外)
1个回答

交换机将根据它在端口上接收到的任何帧更新其 MAC 地址表。交换机对 IP 或任何其他第 3 层地址不感兴趣,只对第 2 层 (MAC) 地址感兴趣。ARP 是将第 3 层地址解析为第 2 层地址的主机协议。

由于 PC 的第 2 层地址没有变化,因此交换机不受 IP 地址变化的影响。

您可以清除路由器上的 ARP 缓存。无论如何,它最终都会超时,可能是在您注意到 PC A 已关闭并将 IP 地址移至 PC B 期间。

您正在尝试发送您自己的地址,但您没有收到回复。如果您发送网关地址,您应该会收到回复。

编辑

首先,三层交换机主要是二层交换机。交换机的三层路由器与二层交换机部分是分开的,通过(一个)虚拟接口连接到二层交换机,就好像它是一个单独的外部设备。路由器只关心连接到其第 3 层接口(虚拟或物理)的内容。

就像是一个单独的路由器一样,三层交换机的路由器维护一个 ARP 缓存,用于连接到二层网络,但它只知道它应该向哪个三层接口发送流量,而不知道是哪个特定的单个主机连接到的第 2 层端口。

第2层交换机部分就像任何其他第2层交换机一样,它维护一个MAC地址表,告诉它MAC地址连接到哪个端口,它对第3层地址一无所知。

路由器 ARP 缓存和 MAC 地址表条目是临时的;他们在一段时间后超时。该时间段可能是可配置的,具体取决于交换机型号。该时间段可能远小于您注意到 PC A 已关闭所需的时间,加上您使用 PC A 的 IP 地址配置 PC B 所需的时间。

交换机的第2层部分是与PC B连接的物理交换机端口有关的部分,它只关心PC B的MAC地址,我怀疑您在更改其IP地址时更改了MAC地址。

路由器的ARP缓存只关心哪个MAC地址应该与IP地址相关,而不是PC A或B连接的物理交换机端口。ARP 缓存条目可能是陈旧的,但不会太久,甚至可能根本不会。

当没有从 IP 地址接收到流量时,主机(包括路由器)会不断超时 ARP 缓存条目。将 IP 地址分配给 PC B 将导致它在需要联系路由器时针对路由器的 MAC 地址进行 ARP,并且这会将路由器的该 IP 地址的 ARP 缓存条目更改为指向 PC B 的 MAC 地址。

TL; 博士

简而言之,当 PC A 被禁用时,您无需对开关执行任何操作,您可以将地址从 PC A 分配给 PC B。