為什麼在我的 ISP 上 mtr 比 traceroute 更可靠?
我的
traceroute6
結果被截斷,而結果mtr
跨越整個路徑。為什麼會發生這種情況?mtr 預設使用 ICMP ECHO~~,就像跟踪路由~~. 在下執行 traceroute
sudo
不會改變結果。也不-M tcp
或-M udp
或-M icmp
。(注意我故意測試“IP 的生產版本”。舊的“實驗版本”按預期工作:-)。
地鐵
$ time mtr -n --report -c 1 google.co.uk Start: Thu Aug 11 11:29:08 2016 HOST: localhost.localdomain Loss% Snt Last Avg Best Wrst StDev 1.|-- fdaa:bbcc:ddee:0:924d:4af 0.0% 1 5.7 5.7 5.7 5.7 0.0 2.|-- ??? 100.0 1 0.0 0.0 0.0 0.0 0.0 3.|-- ??? 100.0 1 0.0 0.0 0.0 0.0 0.0 4.|-- ??? 100.0 1 0.0 0.0 0.0 0.0 0.0 5.|-- 2a00:2380:3013:9000::8 0.0% 1 23.1 23.1 23.1 23.1 0.0 6.|-- 2a00:2380:13::23 0.0% 1 23.2 23.2 23.2 23.2 0.0 7.|-- 2a00:2380:2001:5000::d 0.0% 1 19.2 19.2 19.2 19.2 0.0 8.|-- 2001:4860:0:1::1049 0.0% 1 13.0 13.0 13.0 13.0 0.0 9.|-- 2001:4860:0:1::8f 0.0% 1 19.6 19.6 19.6 19.6 0.0 10.|-- 2a00:1450:4009:809::2003 0.0% 1 24.0 24.0 24.0 24.0 0.0 real 0m6.229s user 0m0.002s sys 0m0.011s
跟踪路由6
$ time traceroute -6 -n google.co.uk traceroute to google.co.uk (2a00:1450:4009:809::2003), 30 hops max, 80 byte packets 1 fdaa:bbcc:ddee:0:924d:4aff:fe06:1c9 3.351 ms 3.324 ms 5.569 ms 2 * * * 3 * * * 4 2a00:2302::1103:100:37 20.128 ms !X 20.118 ms !X 20.120 ms !X real 0m0.221s user 0m0.000s sys 0m0.006s
跟踪路徑6
tracepath 類似於 traceroute,只是不需要超級使用者權限並且沒有花哨的選項。
它使用UDP埠埠或一些隨機埠。
tracepath6 是
$$ a $$很好的替代 traceroute6 和$$ a $$Linux錯誤隊列應用的經典例子。
$ time tracepath6 -n google.co.uk 1?: [LOCALHOST] 0.035ms pmtu 1488 1: fdaa:bbcc:ddee:0:924d:4aff:fe06:1c9 4.101ms 1: fdaa:bbcc:ddee:0:924d:4aff:fe06:1c9 3.161ms 2: no reply 3: 2a00:2302::1103:100:36 17.379ms asymm 5 4: 2a00:2302::1103:100:37 17.222ms !A Resume: pmtu 1488 real 0m5.068s user 0m0.001s sys 0m0.005s
執行之間的結果略有不同:有時未顯示第 3 跳。第 3 跳或第 4 跳的地址也發生了變化(無論使用什麼工具);看起來使用了兩條不同的路徑。
當
mtr
以互動方式執行時,它最終能夠找到第 3 跳(雖然不是第 4 跳)。該躍點顯示 80-90% 的損失。(如 NANOG 列表中所述,需要專家網路知識才能完全理解 mtr 等工具的輸出 :-)。
traceroute 手冊頁說
!X
指示 ICMP錯誤響應之一(除了所需的“超出 TTL”)。traceroute
看到一個就放棄。它看起來mtr
更健壯。這是一個奇怪的案例。當具有足夠大 TTL 的數據包簡單地通過時,我想不出為什麼要用“管理禁止”替換“超出 TTL”響應。感謝您
mtr
容忍這種怪異:)。在行程時間之後,可以列印一些附加註釋:!H、!N 或 !P(無法訪問主機、網路或協議)、!S(源路由失敗)、!F(需要分段)、!X(管理通信禁止)、!V(違反主機優先級)、!C(有效的優先級截止)或 ! (ICMP 無法訪問的程式碼)。如果幾乎所有的探測都導致某種無法訪問,traceroute 將放棄並退出。