标题: 避免在VMware NAT Guest中tracert/traceroute 创建: 2023-11-09 17:31 更新: 2023-11-10 13:42 链接: https://scz.617.cn/network/202311091731.txt 假设到目标IP通信故障,初步排查时可能涉及如下动作: Win10 ping -4 -n 1 -i 255 tracert -4 -d -h 30 -w 5000 Ubuntu 22 traceroute -4 -n -I -m 30 traceroute -4 -n -T -m 30 traceroute -4 -n -m 30 若源位于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探测模式。 Win10 WSL1中traceroute没有意义,-T提示"socket: Protocol not supported",-I 提示"connect: Operation not supported",UDP模式则耗尽"-m 30"。 Ubuntu 22中traceroute没有s位,那岂非只能root用? ls -l $(readlink -f $(which traceroute)) 顺便说一下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