我在 Linux 中执行了跟踪路由,跟踪路由结果在每一跳中给出了多个网关。我如何找到到达目的地的路由路径?请参考以下输出:
traceroute to ipv4.google.com (216.58.199.142), 30 hops max, 38 byte packets
1 10.10.20.1 (10.10.20.1) 0.947 ms 0.833 ms 0.870 ms
2 abts-tn-dynamic-1.64.65.182-airtelbroadband.in (182.65.64.1) 5.296 ms 5.235 ms 4.962 ms
3 125.17.96.17 (125.17.96.17) 5.409 ms 5.012 ms 125.17.103.181 (125.17.103.181) 7.465 ms
4 182.79.198.22 (182.79.198.22) 4.839 ms 182.79.239.193 (182.79.239.193) 5.631 ms 182.79.198.26 (182.79.198.26) 8.211 ms
5 72.14.211.198 (72.14.211.198) 5.258 ms 6.221 ms 5.345 ms
6 182.79.177.69 (182.79.177.69) 11.637 ms 182.79.142.222 (182.79.142.222) 6.840 ms 182.79.177.69 (182.79.177.69) 10.703 ms
7 216.239.41.84 (216.239.41.84) 29.267 ms 209.85.247.252 (209.85.247.252) 95.052 ms 209.85.255.160 (209.85.255.160) 29.631 ms
8 108.170.248.193 (108.170.248.193) 32.930 ms 74.125.242.131 (74.125.242.131) 6.579 ms 108.170.248.209 (108.170.248.209) 33.016 ms
9 72.14.236.75 (72.14.236.75) 29.411 ms 37.831 ms 108.170.248.209 (108.170.248.209) 29.900 ms
10 108.170.248.209 (108.170.248.209) 32.564 ms bom07s01-in-f14.1e100.net (216.58.199.142) 26.744 ms 108.170.248.193 (108.170.248.193) 33.178 ms
答案1
可能有几条路径。
许多运营商使用 ECMP 或其他多路径/负载平衡技术;通常相同的流(即相同的源/目标 IP、相同的协议、相同的源/目标端口号)采用相同的路径,但具有不同端口号的数据包可能采用不同的路径。(有时路径可能导致同一位置的冗余路由器 - 或不同的城市 - 甚至不同的运营商。例如,看到奇数 IP 地址通过 Telia 而偶数地址通过 Cogent 并不罕见。)
Linux路由追踪默认情况下使用带有递增端口号的 UDP 探测,这意味着如果每个探测经过 ECMP 路由器,则可以分配不同的路径。
首先,你可以切换 traceroute 来使用--icmp
探测(就像 Windows 那样)或--udp
具有静态端口号。这两者都应该不受 ECMP 的影响;它们不会显示所有路径,但至少在整个跟踪过程中应该坚持相同的路径。
更先进的方法将是以下工具巴黎跟踪路由或者都柏林跟踪路由,两者都声称能够规划出全部路径以某种方式。