ping一个ip打印无法访问目的主机一次,然后打印请求超时问题定位过程

环境:win11,双网卡,主板网卡和usb网卡,主板网卡配置192.168.186.118/24,网关192.168.186.1,上internet。usb网卡配置内网172.16.81.100/22,无网关。

问题:现需要配置一个内网测试环境,需要一个ip地址,去尝试ping172.16.81.46,发现出现打印一次无法访问目的主机,然后打印三次请求超时。

疑问:无法访问目的主机,意味着主机发出arp请求请求,在指定时间内没有得到reply响应(windows是3s,arp发出4次,间隔1s,4s后没有响应,打印无法访问目的主机),pc打印这个意味着广播域里没有这个ip地址。

但请求超时意味着pc已经获得母的ip的mac地址,并用这个mac地址单播组包,ping的request消息已经发出,但指定时间内没有得到ping的reply响应(windows默认是5s),然后pc打印这个消息,这两者矛盾?

排查过程:

广播域里有一个ap,有串口,在串口下抓一下arp消息,看看是否广播域里arp?

发现打印四次arp请求消息后,再没有了,说明单播ping的request已经发出,发给谁了,在pc上抓包看看,抓两个网口的包,观察发给谁了?

过滤arp contains ac10-512e or icmp arp含172.16.81.46就是ac10-512e

如上图arp查询源mac是 00:0f:c9:24:10:b1,ping的request的源mac是Source: cc:96:e5:23:39:3c,目的mac是Destination: 64:a3:41:80:13:91,查一下这个两个源mac是那个网口的,目的mac是那个的?

cmd下getmac /v查看网卡的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 暂缺 没有硬件

VMware Network VMware Virtual 暂缺 没有硬件

以太网 2 TAP-Win32 Adapt 暂缺 没有硬件

以太网 4 Realtek USB GbE 00-0F-C9-24-10-B1 \Device\Tcpip_{BAD890BC-283C-4C22-845B-A085D6B91131}

发现00-0F-C9-24-10-B1是usb网口的mac地址,CC-96-E5-23-39-3C是主板网卡的mac地址,确定arp请求是从usb网口发出,而ping的request是从主板网口发出的,查一下发给了谁?

arp -a | findstr -i 91 查arp表包含91的项

C:\Windows\System32>arp -a | findstr -i 91

192.168.186.1 64-a3-41-80-13-91 动态 判断发给192.168.186.1

查路由表确定一下,route print -4 | findstr 186.1

C:\Windows\System32>route print -4 | findstr 186.1 发现符合就是0.0.0.0的默认路由

0.0.0.0 0.0.0.0 192.168.186.1 172.16.100.100 281

192.168.1.2 255.255.255.255 192.168.186.1 172.16.100.100 26

192.168.1.210 255.255.255.255 192.168.186.1 172.16.100.100 26

192.168.1.240 255.255.255.255 192.168.186.1 172.16.100.100 26

192.168.186.118 255.255.255.255 在链路上 172.16.100.100 281

结论:win11下双网卡情况下,ping内网ip不存在的地址,arp消息会从内网发出,若没有响应,系统会从默认路由发出ping的request消息,发给网关。

验证一下:指定内网ip发出ping消息ping 172.16.81.46 -t -S 172.16.81.100看看打印

广播域里达ap上tcpdump打印:

很有规律的一秒一个ping的request消息发出。

要点:

1、ping过程是路由查询,判断目的ip是否直连路由,是直连路由,检查mac地址缓存是否有对应mac地址和ip的对应项,有直接发出ping的request给目的mac,没有的话发出arp查询,超时没有响应打印无法访问目的主机或destnation host unreachable。若有响应,更新创建mac和ip对应表项,发出单播ping的request消息。

2、路由查询发现符合默认路由,就检查mac缓存表里是否有网关的mac,有直接组包发出,没有的话,用本地与网关同网段ip和mac发出arp查询。

3、win11下是双网卡下若直连没有arp响应,系统认为这个路由不可达,就用默认路由发出ping的request消息。

4、getmac命令列出本机mac地址列表,findstr查询命令输出或文件里符合的字符串的行,wireshark里contains查询包含的字符串或16进制数,每两个字节一段,超过的用-或:分开。

5、ping的选项中-S后面跟的ip就是用这个ip发出ping消息

相关推荐
飞睿科技4 分钟前
乐鑫ESP32-S3-BOX-3,面向AIoT与边缘智能的新一代开发套件
人工智能·嵌入式硬件·esp32·智能家居·乐鑫科技
郝学胜-神的一滴5 分钟前
深入理解Linux中的Try锁机制
linux·服务器·开发语言·c++·程序人生
Java后端的Ai之路6 分钟前
【AutoDL算力平台】-MobaXterm 连接 AutoDL 并上传文件资源(图文 + 实操)
服务器·网络·mobaxterm·autodl算力平台
阿巴~阿巴~9 分钟前
NAT技术:互联网连接的隐形桥梁
服务器·网络·网络协议·架构·智能路由器·nat·正反向代理
Y1rong11 分钟前
STM32之SPI
stm32·单片机·嵌入式硬件
DevOps-IT11 分钟前
HTTP状态码(常见 HTTP Status Code 查询)
运维·服务器·网络·网络协议·http
YJlio13 分钟前
Registry Usage (RU) 学习笔记(15.5):注册表内存占用体检与 Hive 体量分析
服务器·windows·笔记·python·学习·tcp/ip·django
p666666666813 分钟前
STM32(基于 ARM Cortex-M 内核)中函数调用栈帧的开辟 销毁过程
arm开发·stm32·嵌入式硬件
普马萨特14 分钟前
移动网络信号指标与单位整理(2G/3G/4G/5G Android vs IoT)
android·网络·物联网
阿巴~阿巴~19 分钟前
打通局域网“最后一公里”:ARP协议原理、流程与安全解析
服务器·网络·网络协议·tcp/ip·tcp·ipv4·arp