如何在cygwin上获取traceroute?

Kir*_*ill 15 cygwin package-management traceroute

traceroute(tracert) 的实现在 Windows 和 Unix 上有所不同。我想将两者与 Wireshark 进行比较。我现在在 Windows 7 上,我想快速获得 Unix traceroute 实现。

我的第一个想法是使用 MSYS 或 Cygwin 来获取它。我安装了 Cygwin 并检查了“inetutils*”包,但在/usr/bin/.

我还尝试使用Cygwin 包搜索搜索“traceroute”,并在“zsh”文件列表中找到了这个子字符串。我安装的zsh和尝试traceroute,并tcptraceroute没有结果。

我应该检查哪个包来安装 traceroute,Cygwin 是否有 traceroute?

Ste*_*itt 16

tracerouteCygwin 包中没有,因为tracert在 Windows 上始终可用。请参阅https://cygwin.com/ml/cygwin/2005-12/msg00443.html以获取简要讨论此问题的线程。您可以尝试traceroute从源代码 usign Cygwin编译 Unix 样式。

如果你想比较 Windows 风格tracert和 Unix 风格traceroute,我建议traceroute在 Unix 或 Linux 上运行,因为网络堆栈是不同的;因此,traceroute在 Windows 上运行 Unix 风格不会为您提供与 Unixtraceroute上的 Unix风格完全相同的网络跟踪。

  • 公平的说,`traceroute` 比 `tracert` 提供了更多的功能。 (4认同)
  • `ping` 也存在于 Windows 上,但可用于 Cygwin :) 无论如何,感谢您的回答。也许我会尝试手动为 Cygwin 编译 `traceroute`。 (3认同)

Kir*_*ill 5

好的,正如 Stephen Kitt 所说,Cygwin 还没有准备好使用 traceroute 二进制文件。这就是为什么我试图自己编译它。

我可以看到有现代 traceroute但从它的描述如下,它不能与旧的 Linux 内核一起使用,对我来说编译卡在缺少“dccp.h”上,我放弃了。

我能够编译旧的实现,但它的工作原理就像在 TTL 超出时看不到 ICMP 回复(有星号而不是结果):

1 * * *

2 * * *

也许它需要一些修复才能在 Cygwin 上工作,这就是为什么没有用于 Cygwin 的 traceroute 包的原因。

我检查了 Wireshark,看到它使用 UDP 测试数据包,并且正确传递了相应的 ICMP 回复。我想注意到这个旧的 traceroute 像 Win 一样缓慢地工作tracert(一个一个地“查询”节点)。现代 traceroute 非常快速地给出结果。