在我的 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 实用程序默认使用目标端口号从 33434 到 33534 的 UDP 数据报。
答案4
这可能是因为 icmp TIME_EXCEEDED 答案被你用作默认网关的路由器/防火墙或你的 Linux 系统本身过滤了