问题:访问一个环境中的路由器172.16.1.1,发现ssh无法访问,ping发现回网络不可达
C:\Windows\System32>ping 172.16.1.1
正在 Ping 172.16.1.1 具有 32 字节的数据:
来自 172.16.81.1 的回复: 无法访问目标网。
来自 172.16.81.1 的回复: 无法访问目标网。
来自 172.16.81.1 的回复: 无法访问目标网。
来自 172.16.81.1 的回复: 无法访问目标网。
172.16.1.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
已知组网如下:
排查过程:
平时访问正常,检查路由是否正常?
发现组图上的路由正常存在,证明网口up,配置没有问题。因为物理口正常up,路由才存在在路由打印里。
tracert跟踪一下,这个网络不可达是谁发的?
C:\Windows\System32>tracert -w 1 -d 172.16.1.1
通过最多 30 个跃点跟踪到 172.16.1.1 的路由
1 172.16.81.1 报告: 无法访问目标网。
跟踪完成。发现是172.16.81.1回的,而pc的usb网卡配置的172.16.81.100/24,这个172.16.81.1是直连路由可达的节点。arp -a | findstr 172.16.81.1看一下设备mac地址?
C:\Windows\System32>arp -a | findstr 172.16.81.1
172.16.81.1 64-a3-41-b2-b3-e1 动态
感觉有点不对劲,设备上标签的mac是这个
64:b3:41:b2:16:21
而64-a3-41-b2-b3-e1这个mac地址是另一个设备的标签标注的mac
为啥会从这个设备上回消息,这两个设备默认ip地址都是172.16.81.1,难道接到一个广播域里了?
pc上抓包看一下?pc的usb网卡抓包,过滤一下icmp消息
发现,ping的request消息发给64-a3-41-b2-b3-e1,icmp的目标不可达,原因是网络不可达是64-a3-41-b2-b3-e1发出的
getmac /v查看pc的mac地址
C:\Windows\System32>getmac /v
连接名 网络适配器 物理地址 传输名称
=============== =============== =================== ==========================================================
以太网 Realtek PCIe Gb CC-96-E5-23-39-3C \Device\Tcpip_{E23FF6BD-F5DA-4E0C-B23F-FB03429AAAB6}
WLAN Realtek 8821CE 74-97-79-A9-A6-13 媒体已断开连接
VMware Network VMware Virtual 00-50-56-C0-00-01 \Device\Tcpip_{B8E81AEF-0935-4643-9CE1-94227577892E}
VMware Network VMware Virtual 00-50-56-C0-00-08 \Device\Tcpip_{FAA21B1C-B7DF-42A2-AE78-E5AACA20FE59}
以太网 2 TAP-Win32 Adapt 00-FF-59-A6-9D-3A 媒体已断开连接
以太网 4 Realtek USB GbE 00-0F-C9-24-10-B1 这是usb网卡的mac地址\Device\Tcpip_{BAD890BC-283C-4C22-845B-A085D6B91131}
确定是从usb网卡发出ping的request,而且是usb口收到的icmp网络不可达消息。
过滤一下icmp or arp,cmd下执行arp -d && ping 172.16.1.1看看wireshark里arp查询172.16.81.1(路由表的下一跳)是谁应答的?
发现cmd下有如此打印:
C:\Windows\System32>arp -d && ping 172.16.1.1
正在 Ping 172.16.1.1 具有 32 字节的数据:
来自 172.16.1.1 的回复: 字节=32 时间<1ms TTL=63
来自 172.16.81.1 的回复: 无法访问目标网。
来自 172.16.81.1 的回复: 无法访问目标网。
来自 172.16.81.1 的回复: 无法访问目标网。
172.16.1.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
先通后回网络网络不可达,奇怪,看看wireshark里的情况?
wireshark里显示,arp -d && ping 172.16.1.1时,pc的usb网卡发出路由表里下一跳地址mac地址的arp查询消息,正常的设备响应,在第一步ping 的request发出和reply到达后,错误的设备发出arp的reply消息,后三包ping的request被发给错误的设备mac地址,错误设备发出网络不可达消息。
错误的设备被接入同一广播域?检查ac的插线情况,发现eth3口和错误的设备相连,断开后,正常、
C:\Windows\System32>arp -d && ping 172.16.1.1
正在 Ping 172.16.1.1 具有 32 字节的数据:
来自 172.16.1.1 的回复: 字节=32 时间=1ms TTL=63
来自 172.16.1.1 的回复: 字节=32 时间<1ms TTL=63
来自 172.16.1.1 的回复: 字节=32 时间<1ms TTL=63
来自 172.16.1.1 的回复: 字节=32 时间<1ms TTL=63
172.16.1.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 1ms,平均 = 0ms
问题解决。
正常设备的172.16.81.1的路由和子网情况:
C 127.0.0.0/8 is directly connected, lo
C 172.16.1.0/24 is directly connected, vlan1.3
C 172.16.81.0/24 is directly connected, vlan1.1
C 192.168.205.0/24 is directly connected, vlan1.205
C 192.168.206.0/24 is directly connected, vlan1.206
Interface IP-Address Status Protocol Description
vlan1.1 172.16.81.1 UP UP
vlan1.3 172.16.1.206 UP UP 3
vlan1.4093 169.254.139.71 DOWN DOWN
vlan1.4094 DOWN DOWN
vlan1.205 192.168.205.2 UP UP 205
vlan1.206 192.168.206.2 UP UP 206
显然有172.16.1.0/24的子网,而且是up态的。
错误设备的路由和子网
C 127.0.0.0/8 is directly connected, lo
C 172.16.81.0/24 is directly connected, vlan1.1
XOS#show int brief
The brief information of interface(s) under route mode:
Status: ADM - administratively down
Interface IP-Address Status Protocol Description
vlan1.1 172.16.81.1 UP UP
vlan1.4093 ADM DOWN
vlan1.4094 ADM DOWN
显然,没有172.16.1.0/24的子网,而且也没有对应的缺省路由,所以收到目的ip是172.16.1.0/24的ping的request消息,会回目的网络不可达。
结论:
同一广播域里存在ip冲突,会响应对应ip的arp查询,后到的arp响应会改写mac地址缓存表,导致ping的request消息发给错误设备,而错误设备没有对应网络配置,因此会回网络不可达消息。
大多数操作系统(如Linux、Windows)的ARP缓存会以最后收到的ARP响应为准,覆盖之前的条目。这意味着MAC地址表会动态更新为最新响应的MAC地址。