我是 Linux Mint 用户。我在Linux 上运行traceroute,在Windows 上运行tracert。在 Linux 上,我只得到星号。在 Windows 上一切似乎都工作正常。这是输出
视窗:
Linux 薄荷:
为什么会发生这种情况?我可以做些什么来解决这个问题吗?
答案1
造成这种差异的一个可能原因是 Windows 默认tracert
使用 ICMP,而 Linuxtraceroute
默认使用 UDP。使用-I
跟踪路由选项应该产生与以下相同的结果tracert
:
traceroute -w 10 -I google.it
从traceroute
文档中:
在现代网络环境中,由于防火墙的广泛使用,传统的traceroute方法并不总是适用。此类防火墙会过滤“不太可能”的 UDP 端口,甚至 ICMP 回显。为了解决这个问题,实现了一些额外的跟踪路由方法(包括 tcp),请参阅下面的可用方法列表。此类方法尝试使用特定的协议和源/目标端口,以绕过防火墙(防火墙将其视为允许的网络会话类型的开始)。
可用方法列表
一般来说,特定的跟踪路由方法可能必须通过 -M 名称来选择,但大多数方法都有其简单的命令行开关(您可以在方法名称后面看到它们,如果存在)。
默认
传统的、古老的跟踪路由方法。默认使用。
探测数据包是带有所谓“不可能”目标端口的 udp 数据报。第一个探测器的“不太可能”端口是 33434,然后对于每个下一个探测器,它都会增加 1。由于预计这些端口不会被使用,因此目标主机通常会返回“icmp unreach port”作为最终响应。 (但是,没有人知道当某些应用程序侦听此类端口时会发生什么)。
答案2
尝试这个:
traceroute -M icmp google.it