Traceroute 与 tracert

myn*_*nyx 7 windows fedora traceroute

我有以下问题:

tracert从 Windows 7运行会将所有跃点返回到给定服务器。跑步traceroute从 Fedora 30,使用相同的连接和相同的目的地,除了网关 IP,它只返回 * * *。

你能解释一下为什么在 Windows 上它可以工作,而在 Fedora 上却不能吗?有什么不同?

另外,你能告诉我traceroute从 Fedora 运行时如何进行返回跳跃吗?

A.B*_*A.B 8

Windows'tracert正在使用 ICMP 同时增加 TTL 进行探测:

如何使用 TRACERT 实用程序

TRACERT 诊断实用程序通过向目标发送 Internet 控制消息协议 (ICMP) 回显数据包来确定到目标​​的路由。

traceroute默认情况下,Fedora的发送 UDP 探测,就像以前的 Unix 跟踪路由实现一样。UDP 是默认的提示(除了在写这个答案之前通过捕获进行双重检查)来自首先谈论 UDP 的man

我们不希望目标主机处理 UDP 探测数据包,因此目标端口设置为一个不太可能的值(您可以使用 -p 标志更改它)。ICMP 或 TCP 跟踪路由没有这样的问题(对于 TCP,我们使用半开放技术,这可以防止目标主机上的应用程序看到我们的探测)。

两种工具都希望收到ICMP TIME EXCEEDED作为构建路由的响应。

沿着这条路径,各种路由器可能会根据所使用的探测方法选择不同的回答(即:根本不回答)。

如果您知道 ICMP 探测更适合您的测试,您可以在 Fedora 上使用以下命令执行相同操作:

traceroute --icmp destination
Run Code Online (Sandbox Code Playgroud)

由于 ICMP 与 UDP 不同,通常需要制作特殊数据包,因此该命令可能需要 root 权限才能使用此选项运行。