
在我的 Linux 機器上,traceroute
不起作用。輸出是這樣的:
$ traceroute google.com
traceroute to google.com (209.85.231.104), 30 hops max, 52 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
誰能告訴我為什麼它不起作用?背後有什麼可能的原因嗎?
答案1
預設情況下,traceroute
使用高 UDP 連接埠來追蹤主機。但是,有時防火牆會阻止這些 UDP 連接埠。
嘗試-I
在命令列中新增(大寫的 i)參數,例如:
traceroute -I www.google.it
這將使用 ICMP 而不是 UDP 來追蹤主機。
答案2
嘗試使用 -T (tcp) 或 -U (udp) 繞過防火牆。
有些路由器/防火牆不允許 icmp echo 通過,這就是為什麼你要使用這兩個來繞過它們。
不管怎樣,與維基百科中所述相反,在我的 debian 機器上,traceroute 仍然使用 icmp 封包而不是 udp。
編輯
我錯了...它使用 udp...返回的 icmp 用於無法訪問的端口...抱歉
答案3
可能是您上游的防火牆阻止了 UDP 封包 路由追蹤
在現代類 Unix 作業系統上,traceroute 實用程式預設使用 UDP 資料報,目標連接埠編號為 33434 到 33534。
答案4
這可能是因為 icmp TIME_EXCEEDED 答案是被您用作預設閘道的路由器/防火牆或 Linux 系統本身過濾