Traceroute(tracert) 的实现在 Windows 和 Unix 上有所不同。我想将两者与 Wireshark 进行比较。我现在使用的是 Windows 7,我想快速实现 Unix 跟踪路由。
我的第一个想法是使用 MSYS 或 Cygwin 来获取它。我安装了 Cygwin,并检查了“inetutils*”包,但/usr/bin/
.
我还尝试搜索“traceroute”Cygwin 包搜索并在“zsh”文件列表中找到该子字符串。我安装了 zsh 并尝试过traceroute
,但tcptraceroute
没有结果。
我应该检查哪个软件包来安装 Traceroute,以及 Cygwin 是否有 Traceroute?
答案1
traceroute
Cygwin 软件包中没有,因为tracert
在 Windows 上始终可用。看https://cygwin.com/ml/cygwin/2005-12/msg00443.html简要讨论此问题的线程。您可以尝试使用traceroute
Cygwin 从源代码编译 Unix 风格。
如果你想比较 Windows 风格tracert
和 Unix 风格traceroute
,我建议traceroute
在 Unix 或 Linux 上运行,因为网络堆栈不同;因此,在 Windows 上运行 Unix 风格traceroute
不会提供与traceroute
Unix 上的 Unix 风格完全相同的网络跟踪。
答案2
好吧,正如 Stephen Kitt 所说,Cygwin 还没有准备好使用跟踪路由二进制文件。这就是为什么我尝试自己编译它。
我可以看到有现代跟踪路由但从它的描述来看,它不能与旧的 Linux 内核一起使用,对我来说,编译陷入了缺少“dccp.h”的困境,我放弃了。
我能够编译旧的实现,但它的工作原理就像看不到超出 TTL 的 ICMP 回复(有星号而不是结果):
1 ** * *
2 ** * *
也许它需要一些修复才能在 Cygwin 上工作,这就是 Cygwin 没有跟踪路由包的原因。
我检查了 Wireshark,发现它使用 UDP 测试数据包,并且相应的 ICMP 回复已正确传递。我想注意到这个旧的跟踪路由像 Win 一样运行缓慢tracert
(一一“查询”节点)。现代跟踪路由可以很快给出结果。
答案3
mtr
我能够使用说明在 Cygwin32 中构建一个端口:
https://github.com/traviscross/mtr/
MTR 是另一种开源跟踪路由工具。它具有 GUI 和 Ncurses 文本界面。它不完全是经典的traceroute,但我更喜欢它。