mtr 将 'traceroute' 和 'ping' 程序的功能结合在一个网络诊断工具中。
当 mtr 启动时,它会调查运行 mtr 的主机与用户指定的目标主机之间的网络连接。它向目标发送生存时间(TTL)值逐渐增大的探测包,并利用中间路由器的响应来发现和测量路径。在此过程中,它会为每一跳打印运行统计信息。
中间路由器可能被配置为从不发送这些 ICMP 响应,或者可能对其进行速率限制,因此中间跳的明显丢失并不总是意味着转发流量在该点丢失。
mtr 根据 GNU 通用公共许可证第 2 版发布。详情请参阅 COPYING 文件。
如果你从 tarball 构建,编译 mtr 非常简单:
./configure && make
请注意,这指的是来自 https://www.bitwizard.nl/mtr/files/ 的 tarball,而不是 github 可以生成的 tarball。
(在过去,发行版中有一个 Makefile,它会为你运行 ./configure,然后使用生成的 Makefile 再次运行 make,但这已经有些过时了。它与 git 配合不佳。)
如果你从 git 仓库构建,你需要运行:
./bootstrap.sh && ./configure && make
当编译看起来成功时,你可以用以下命令测试 mtr:
sudo ./mtr <host>
(在 <host> 处填入主机名或 IP 地址)或者直接继续安装:
make install
注意,mtr-packet 必须设置为 suid-root,因为它需要访问原始 IP 套接字。有关安全信息,请参阅 SECURITY。
旧版本在安装 GTK 的情况下构建非 GTK 版本时,需要一个不存在的 GTK 路径。这不再是必需的。现在 ./configure --without-gtk 应该可以工作。如果不行,可以尝试在 make 步骤中使用 make WITHOUT_X11=YES。
在 Solaris 上,你需要使用 GNU make 来构建。(使用 gmake 而不是 make。)
在 Solaris(可能还有其它系统)上,"gtk"库可能安装在一个目录中,当二进制文件设置为 setuid 时,动态链接器拒绝查找该目录。Roman Shterenzon 报告说,如果你使用 GNU LD,在命令行中添加 -Wl,-rpath=/usr/lib 会起作用。他告诉我,当你使用 Sun LD 时,你就没办法了。这并不完全正确,因为你可以将 gtk 库移动到 /usr/lib 而不是将它们留在 /usr/local/lib 中。(当 ld 告诉你 /usr/local/lib 不可信而 /usr/lib 可信,并且你足够信任 gtk 库以至于希望它们在 setuid 程序中时,那么将它们移动到"可信"目录是有道理的。)
在 MacOS 上构建不需要任何特殊步骤。
在 Windows 上使用 mtr 需要 Windows Subsystem for Linux (WSL)。
要安装带有 Ubuntu 发行版(默认)的 WSL,请参阅
如何在 Windows 上通过 WSL 安装 Linux。
完成初始过程后,很简单:
sudo apt-get -y install mtr
如果你更喜欢传统方法。获取 Cygwin,请参阅 https://cygwin.com/install.html。
接下来,使用以下参数重新运行 cygwin 的 setup-x86.exe(如果你使用的是 64 位 cygwin,则为 setup-x86_64.exe),
这将安装构建所需的软件包:
setup-x86.exe --package-manager --wait --packages automake,pkg-config,make,gcc-core,libncurses-devel,libjansson-devel
像在 Unix 下一样构建:
./bootstrap.sh && ./configure && make
最后,安装构建好的二进制文件:
make install
mtr 现在托管在 github 上。 https://github.com/travis cross/mtr
参见 mtr 网页:http://www.BitWizard.nl/mtr/
错误报告和功能请求应提交给 Github 错误跟踪系统。
补丁可以通过克隆 Github 仓库并提交拉取请求,或通过电子邮件发送给我。请使用统一差异格式。通常 diff 会有些杂乱,所以请检查 diff 是否干净并且不包含太多你的本地内容(例如,我不需要/要你本地的 automake 制作的"configure"脚本)。
(曾经有一个邮件列表,但收到的全是垃圾邮件。所以当服务器升级时,邮件列表就消失了。)
REW