为什么 UDP 跟踪路由不适用于 IPv6?

为什么 UDP 跟踪路由不适用于 IPv6?

我刚刚在 CMTS 上获得了双栈支持,并在路由器上启用了 IPv6。我的 PC 上安装了 Debian,我注意到默认的跟踪路由(在 Linux 上使用 UDP)只能到达我的路由器,而不会到达其他地方。

traceroute ipv6.google.com  #only first hop is shown, the rest timeout

但是,通过提供 -I 选项强制使用 ICMPv6,跟踪路由就会成功。

traceroute -I ipv6.google.com #able to see all hops until the destination

有人能解释一下这是为什么吗?

答案1

-I 强制使用 ICMP 而不是 UDP,ICMP 更像是通用的跟踪路由选项。

我能给出的最好解释是,许多端口由于各种原因而被阻止,而默认 UDP 跟踪路由的较高范围似乎就是其中之一。

这可能也会提供更多信息:

我当然无法解释微软为什么这样做,但我观察到,在当今更加注重安全的网络环境中,访问列表过滤有时会拒绝发往各种高端口号的 UDP 数据包(这正是 traceroute 所做的),但可能会允许 ICMP 数据包。因此,我见过很多次 IOS traceroute 不起作用,而 Microsoft tracert 却能正常工作的情况。

相关内容