网络不可达network unreachable问题解决过程

问题:访问一个环境中的路由器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地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值