traceroute显示星号不表示网络中断,而是某跳未返回icmp time exceeded或port unreachable报文;需区分真丢包与静默丢弃:第一跳全星号查本地出口,中间持续星号多因骨干设备禁用icmp响应,最后一跳星号则目标可能屏蔽icmp或udp端口;可通过换协议(-i/-t)、调参(-q/-w)及mtr、ping等交叉验证。

traceroute 出现超时(显示 *)不等于网络中断,而是某跳节点未返回预期的 ICMP Time Exceeded 或 Port Unreachable 报文。关键要区分是“真丢包”还是“被静默丢弃”。
看超时出现在哪一跳
第一跳就全 *:问题大概率在本地出口,比如本机防火墙拦截了ICMP回包、网关未响应TTL=1包,或局域网ARP解析失败;
中间某跳开始持续 *:该节点及其后续设备可能禁用了ICMP超时响应(常见于运营商骨干路由器或安全加固设备);
最后一跳 * 但前面都正常:目标主机可能关闭了ICMP、UDP端口全封、或防火墙丢弃了Port Unreachable报文。
换协议绕过ICMP限制
很多网络设备默认放行TCP SYN但屏蔽ICMP。可尝试:
-
ICMP模式(更接近ping行为):
traceroute -I example.com -
TCP模式(模拟HTTP请求):
sudo traceroute -T -p 80 example.com(需root权限) -
UDP自定义端口(避开常用过滤规则):
traceroute -U -p 5353 example.com
调参提升探测可靠性
默认每跳只发3个包、等5秒,容易误判。可增强容错:
- 增加每跳探测次数:
traceroute -q 5 example.com(发5次再统计) - 延长单次等待时间:
traceroute -w 8 example.com(等8秒才标*) - 结合mtr实时观察:
mtr -r -c 20 example.com(比traceroute更易识别间歇性丢包)
交叉验证确认是否真故障
单靠traceroute无法定论。应配合其他命令判断:
- 对超时跳的IP单独 ping:
ping -c 3 10.10.10.1,看是否完全不可达 - 用 telnet 或 curl 测试目标端口:
telnet example.com 443,确认应用层是否通 - 对比不同源执行 traceroute:从另一台内网机器跑,排除本机策略干扰










