tracepath和traceroute之间的显着区别是什么?


58

最近,我读了一篇有关HowToGeek的文章,这使我有些挠头。我对Linux的经验还很少,如果是入门级的,请原谅我:

“ tracepath命令类似于traceroute,但是它不需要root特权。”

http://www.howtogeek.com/108511/how-to-work-with-the-network-from-the-linux-terminal-11-commands-you-need-to-know/

traceroute和tracepath如何执行相似的功能,不同?

traceroute做什么,需要root特权,而tracepath不需要?

在某些情况下,人们应该首选tracepath而不是traceroute吗?

Answers:


57

traceroute和tracepath如何执行相似的功能,不同?

这两个程序本质上都做一件事:发送和接收某些IP数据包。

您可以使用普通的套接字API来执行此操作,也可以操纵来自接口的原始数据包。套接字API不需要root特权,因为它相当安全。有内置的机制可以防止一个程序访问另一个程序创建的IP数据包。

Tracepath使用套接字API来实现所有功能。Traceroute操纵原始软件包以实现其某些功能。

traceroute做什么,需要root特权,而tracepath不需要?

它处理原始包。

要处理原始数据包,您需要root特权,因为这样做会绕过套接字API的安全性机制。您可以使用该界面访问所有其他进程和用户的通信。试想一下,如果病毒可以操纵原始程序包,该怎么办。

在某些情况下,人们应该首选tracepath而不是traceroute吗?

Traceroute中可用的一个高级命令是能够使用IPv4或IPv6协议运行网络跟踪的功能。也可以在ICMP,TCP或UDP数据格式之间进行选择。Traceroute可以为探针选择特定的源路由,并选择要从哪个端口发送。它可以设置最小和最大TTL限制以接受出站探针。此外,Traceroute可以显示响应ping的等待时间,并设置每个探测中发送了多少个数据包以及发送了多少个探测。这些命令中的某些命令可能不受路径上的网络硬件的支持,这可能会在探针到达目标目的地之前将其终止。

资料来源: 1 2 3


1
最后,给出一个会影响本地系统的合理安全问题的答案。谢谢!
Iszi 2014年

10

您可以使用traceroute高级网络跟踪,可以在IPv4和Ipv6协议之间进行选择,还可以在ICMP,TCP或UDP数据格式之间进行选择。

因此,与使用UDP数据包进行跟踪traceroute相比tracepath,具有更多的高级选项。

现在有关超级用户特权

您可以traceroute同时使用普通用户和超级用户,这取决于您要使用的选项,下面是一个示例:

在此处输入图片说明

在这里,我们使用不需要超级用户权限的UDP数据包

在此处输入图片说明

在这里,我们使用需要特权的ICMP回显数据包。

通过ICMP数据包,您可以进行DDOS攻击。

要了解有关ICMP选项的Traceroute手册页

要查看traceroute选项,请在终端中输入man traceroute

ICMP需要超级用户特权,以确保管理员可以使用它的某些选项,因为它可以用来使ping通并收集有关特定网络的信息,此处的特权将使超级用户能够使用ICMP更改选项。包。

可以看到它,当您尝试ping这样的网站时www.microsoft.com,您的ping甚至将无法在线进行,这是因为Microsoft路由器阻止了ICMP_requests。

因此linux保护系统免受非特权用户的攻击,因此他们不能使用此命令进行攻击。


3
通常,针对非特权用户的限制用于保护系统免受攻击 -而不是用作攻击其他系统的媒介。这对我来说不太有意义-您是否知道任何支持此目的的文档?
Iszi 2014年

3

我认为您必须阅读此 http://www.ehow.com/list_7526520_differences-between-traceroute-tracepath.html

从上面的链接:

跟踪路径

Tracepath跟踪到指定网络地址的路径,并报告“生存时间”或TTL滞后以及最大传输单位(MTU)。有权访问命令行提示符的任何其他用户都可以运行此命令。


Traceroute基础

Traceroute本质上与Tracepath相同,除了默认情况下,它只会提供TTL值。如果需要其他数据,则必须在命令行上请求这些变量。同样,traceroute需要超级用户访问权限才能在Linux机器上运行该命令,并且路径上的所有路由器都可能不支持某些高级数据请求。在Windows环境中,有权访问命令行的任何用户都可以运行Traceroute。


感谢您的链接,但是您可以在答案中添加一些实际内容吗?
Iszi 2012年

您好bodhi.zazen,谢谢您改善我的职位。:)
rɑːdʒɑ

5
感谢您的澄清。然而,这里的答案(没有得到审查环节还)是人仍下落不明的问题两个部分组成: 为什么traceroute要求超级用户权限(特别是因为它实际上似乎确实不太tracepath默认情况下)?而且,除了您不是超级用户的情况之外,为什么还要选择一个呢?
Iszi 2012年

1

pingtraceroute使用ICMP协议。像UDP和TCP一样,可以通过常规套接字API进行访问。除了root以外,只有小于1024的UDP和TCP端口号受到保护,不能使用。ICMP对所有用户免费提供。

如果您真的想查看ping和traceroute的工作方式,可以从CodeProject下载它们的示例C代码实现。

简而言之,他们简单地打开一个ICMP套接字,并且traceroute使用setsockopt更改TTL的增量,直到达到目标为止。

来源:链接


也; tracepath使用UDP-除了traceroute本身中的UDP选项外,它不需要提升的特权。
Ahmadgeo 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.