创建: 2023-11-09 17:31
https://scz.617.cn/network/202311091731.txt
假设到目标IP通信故障,初步排查时可能涉及如下动作:
Win10
ping -4 -n 1 -i 255 <target>
tracert -4 -d -h 30 -w 5000 <target>
Ubuntu 22
traceroute -4 -n -I -m 30 <target>
traceroute -4 -n -T -m 30 <target>
traceroute -4 -n -m 30 <target>
若源位于VMware NAT Guest中,上述所有操作都受影响。在Guest中用Wireshark抓tracert操作,能看到来自NAT网关的ICMP超时报文,除此之外看不到来自其他沿线节点的ICMP超时报文,VMware NAT未向Guest转发后者。在Host中用Wireshark同步抓包,能看到来自其他沿线节点的ICMP超时报文。Guest中tracert收不到其他沿线节点的ICMP超时报文时,仍继续递增TTL,最终仍能收到来自目标的Icmp Echo Reply;外在表现是,tracert或"traceroute -I"能看到NAT网关与目标,其他沿线节点均显示"* * *",但能反映从源到目标的正确跳数。
在Guest中"traceroute -T",外在表现是,Guest只能看到NAT网关与目标,没有其他沿线节点,没有"* * *",不能反映从源到目标的正确跳数。
在Guest中用UDP模式traceroute,外在表现是,耗尽"-m 30",全部显示"* * *",得不到任何有效信息。Ubuntu 22的"traceroute -U"与"traceroute"不等价,缺省从33434/UDP开始递增探测,指定-U时,固定探测53/UDP。不过,这些端口值可以通过"-p port"来改变。
TCP、UDP探测模式亦可在Guest、Host同步抓包,都能得到合理解释,不在此一一详述。
显然,VMware NAT功能缺失,在Guest中用tracert、traceroute,意义有限,非要这么干时,只用ICMP、TCP两种探测模式,别用UDP探测模式。tracert只支持ICMP探测模式,traceroute缺省使用UDP探测模式。
顺便说一下Wireshark的近况。
https://www.wireshark.org/
https://2.na.dl.wireshark.org/win64/WiresharkPortable64_4.0.10.paf.exe
https://npcap.com/
https://npcap.com/dist/npcap-1.78.exe
Wireshark现在有便携版,安装过程相当于展开到指定目录,「程序和功能」中不出现。需要单独下载安装npcap,若之前已随其他软件装过npcap,无需再次安装,最新版npcap已支持loopback抓包。便携版Wireshark可以复制目录到任意位置并打开使用,可跨主机复制使用,比如在U盘上留一份。
关闭Wireshark自动升级
Edit->Preferences->Advanced->gui.update.enabled->FALSE