路由是基于 IP 的,对吧?怎么可能以如此不同的方式路由我的数据包?一个成功了,但另一个却没有。
# traceroute A.com
traceroute to A.com (1.2.3.4), 30 hops max, 60 byte packets
1 ...
2 ...
3 ..
4 A.com
# traceroute zzz.A.com
traceroute to zzz.A.com (1.2.3.4), 30 hops max, 60 byte packets
1 ...
2 ...
3 ..
4 ..
5 ...
6 ..
7 ..
..
..
30 ***
答案1
这可能是多种多样的。
从最宽泛的意义上讲,BGP 路由是随机的。这意味着它们取决于当前正在使用的 BGP 路由以及如何以最低成本到达您的顶级提供商的端点 AS。另一个潜在问题是您有一个 DNS 记录,如 DNAME 或 NAPTR,这些记录过去曾给我自己造成过类似的问题。如果问题持续存在,请考虑您的提供商是否正在根据 HTTP 请求进行一些奇怪的流量整形(诚然不太可能)。但是,打印相关的跟踪路由信息会很有帮助。
答案2
我同意 Zephyr 的观点,但我必须补充一点,提供商可以进行 IP 路由负载平衡。
假设您是随机互联网提供商,并且有 4 条指向同一点的等效链路。您可以选择在这些链路之间对流量进行负载平衡。这意味着跳数将不相同。
答案3
如果没有完整的跟踪路由和真实的 IP 地址,就很难对这个问题做出任何明智的判断。请不要像这样隐藏数据 - IP 地址不是秘密。
话虽如此,我唯一能看到这种情况发生的情况是目标 IP 地址完全不同。有时在(部分)链路上进行每个数据包的负载平衡,这可能会导致部分故障。但是,两个跟踪路由都应该显示故障 - 而不是始终只有其中一个。
因此,鉴于目标 IP 地址不同,我最好的猜测是其中一个目标 IP 地址根本没有配置,或者使用了更严格的防火墙。Traceroute 将继续尝试进一步查找,直到收到目标主机的回复。如果目标主机不存在或拒绝回复,traceroute 将继续查找,直到达到其限制,其中 30 个跳数是常见设置。