动态学习的 MAC 地址似乎永不过期

网络工程 MAC地址 ARP
2022-02-28 16:54:44

我有一个用户在 Windows 机器上登录时收到错误“没有可用的登录服务器”。

拓扑是这样的:R1--SW1--IP电话--PC1

我既不能从网关 R1 也不能从 SW1(接入交换机)ping PC1。ARP 表显示为 INCOMPLETE:

SW1#sh ip arp 22.9.38.113
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  22.9.38.113             0   Incomplete      ARPA 

PC 的 MAC 地址由 SW1 动态学习:

SW1#show mac address-table dynamic address ECA8.6B2F.9B63
Unicast Entries
 vlan   mac address     type        protocols               port
-------+---------------+--------+---------------------+--------------------
 107    eca8.6b2f.9b63   dynamic ip,ipx,assigned,other GigabitEthernet2/22   

SW1#sh int GigabitEthernet2/22 status

Port      Name               Status       Vlan       Duplex  Speed Type
Gi2/22    IP Phone to PC     connected    107        a-full  a-100 10/100/1000-TX

我对不完整 ARP 表条件的理解是:通过从 SW1 发出 ping 命令,ARP 请求被发送到 PC1,但 PC1 出于某种原因没有将 ARP 回复发送回 SW1,因此 SW1 在 ARP 表中将 MAC 地址列为 INCOMPLETE。

那么我的问题是:为什么 PC1 MAC 地址列在 SW1 mac 地址表中?如果没有来自 PC1 的 ARP 回复,SW1 如何仍然动态学习其 MAC 地址?这是否意味着 SW1 仍在接收来自 PC1 的 ARP 数据包?我在超过 5 分钟(MAC 地址过期时间)后测试了连接,仍然看到 MAC 地址是动态学习的,但仍然没有成功 ping 到 PC1。

MAC 地址老化设置为默认 300 秒:

SW1#sh mac address-table aging-time vlan 107
Vlan    Aging Time      Configured Aging Time
----    ----------      ---------------------
Global Vlan Admin Age: 300
 107    300             300

以下是 SW1 上面向 PC 的接口的配置:

SW1#sh run int GigabitEthernet2/22  
Building configuration...

Current configuration : 374 bytes
!
interface GigabitEthernet2/22
 description IP Phone to PC
 switchport access vlan 107
 switchport mode access
 switchport voice vlan 707
 no logging event link-status
 snmp trap mac-notification change added
 snmp trap mac-notification change removed
 no snmp trap link-status
 spanning-tree portfast
 spanning-tree bpduguard enable
 service-policy input QOS-MARKING
end
3个回答

根据https://arstechnica.com/civis/viewtopic.php?t=233974中记录的类似经验,OP 的 ARP 响应不完整,并使用新的跳线解决了该问题 - 现有的跳线已卷曲。

我建议更换跳线或查看结构化布线设备。

一个简单的测试是从手机上拔下跳线并将其插入计算机,假设手机正在工作。然后在没有电话内联的情况下进行测试。

如果端口关联没有改变,仍然正确,并且 VLAN 关联也正确,那么您的问题不是 MAC 老化的问题。

您的问题是 MAC 层 (L2) 不起作用。ARP 在整个 L2 段(广播域)中广播。ARP 请求未到达目的地或响应未到达源。两者之间可能存在过滤器(检查 ACL 和类似内容)或交换机出现故障。

如果您更改了网络设置,则源也可能认为目标位于其自己的子网上,而实际上并非如此 - ARP 请求无法到达目标。

Ron Maupin 和其他用户的回答帮助我理解了为什么 ARP 表没有列出终端主机的 MAC 地址,即使交换机正在学习该 MAC 地址:

“一个不完整的 ARP 条目仅仅意味着请求主机没有(还没有?)得到查询主机的 ARP 回复。这与坏 NIC 没有任何关系。托管交换机可能有一个 ARP 表用于交换机中的管理“主机”,但它不参与二层交换,它只是用于交换机管理,就像局域网上的主机一样。具有该IP地址的主机离线,或者有一些阻止请求到达被查询主机的网络配置问题,或阻止回复到达查询者的问题。” - 罗恩·莫平