当我想traceroute
在 Ubuntu 中使用时,收到以下消息:
traceroute www.google.com
The program 'traceroute' can be found in the following packages:
* inetutils-traceroute
* traceroute
Try: sudo apt-get install <selected package>
我尝试了这两个包,traceroute
这两个包中的实用程序都可以使用,但它们是不同的。为什么有两个不同的实用程序,它们各自有什么好处或优势?我找不到好的来源或比较。
答案1
有几种实现traceroute
。从Dmitry Butskoy 的traceroute
软件包主页:
它是一款著名的应用程序,出现已久。自 2000 年以来,它的初始实现一直未得到开发,并且不符合现代网络需求。已经有一些尝试继续或重写它,或创建具有附加功能的类似应用程序,但大多数此类作品要么提供部分功能,要么界面有很大不同。
此代码是从头编写的,使用了 Olaf Kirch 的 traceroute 的一些想法、Van Jacobson 的原始实现以及当前 BSD 的一些实现。它与 Van Jacobson 的原始 traceroute 完全兼容,该 traceroute 之前已广泛使用多年。
实施inetutils-traceroute
来自GNU 网络实用程序项目,其中包括几个网络工具。
各个实用程序最初源自 4.4BSDLite2 发行版,尽管其中一些或多或少已被重写。
与 Dmitry 的相比,这里的 traceroute 实现有些简单。与原始 4.4BSDLite2 实现。
您通常会使用 Dmitry 提供的功能更全面的实现。
答案2
即使 Dmitry 的 traceroute 更好,但打包效果较差。它的许多功能都需要 root 权限才能执行。
这是糟糕地解决了 inetutils-traceroute 包的问题,使得 traceroute 具有 suid 功能。
正确的解决方法是两个都软件包使用 libcap2-bin “setcap” 并赋予自己 cap_net_raw+ep 功能,这是他们完成所有需要做的事情所需的唯一“根”权力。