![Traceroute 仅输出星号,而 tracert 可以工作](https://linux22.com/image/1632032/Traceroute%20%E4%BB%85%E8%BE%93%E5%87%BA%E6%98%9F%E5%8F%B7%EF%BC%8C%E8%80%8C%20tracert%20%E5%8F%AF%E4%BB%A5%E5%B7%A5%E4%BD%9C.png)
我正在我的虚拟机 ubuntu 和 windows 子系统 ubuntu 18.0 上测试traceroute
命令。它们都不起作用。它们只显示星星。但是当我tracert
在同一台计算机上测试 windows 命令时,它运行良好。有人能帮我吗?谢谢。以下是 Ubuntu traceroute 输出
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 _gateway (10.0.2.2) 0.377 ms 0.375 ms 0.363 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
============
已解决。添加 -I 选项以使用 ICMP。参见traceroute 在 linux 中(在虚拟机中)只显示 * * *,但在 windows 中可以正确显示所有 IP
答案1
Linux traceroute 默认发送 UDP 数据包;Windows 默认发送 ICMP 数据包。
某些路由器可能会/将阻止 ICMP 数据包 - 但这两种类型的 traceroute 都可以配置为发送 ICMP/UDP/TCP 数据包。建议您为 UDP/TCP 使用指定端口 443,并且您可能需要 root 访问权限才能访问 TCP 数据包。
例如sudo traceroute -T 8.8.8.8 -p 443
lft ,即第四层跟踪路由,执行 TCP 跟踪路由,类似于 traceroute -T ,但尝试提供与原始此类实现(也称为“lft”)的兼容性。它给出了更好的响应:-
sudo lft 8.8.8.8
Tracing .....**********
TTL LFT trace to dns.google (8.8.8.8):80/tcp
1 router (192.168.1.1) 0.6ms
** [neglected] no reply packets received from TTLs 2 through 3
4 128.hiper04.sheff.dial.plus.net.uk (195.166.143.128) 5.7ms
5 core1-BE1.colindale.ukcore.bt.net (195.99.125.132) 5.5ms
6 194.72.16.204 6.0ms
7 109.159.253.195 6.1ms
** [80/tcp no reply from target] Try advanced options (use -VV to see packets).