最近,我读了一篇有关HowToGeek的文章,这使我有些挠头。我对Linux的经验还很少,如果是入门级的,请原谅我:
“ tracepath命令类似于traceroute,但是它不需要root特权。”
traceroute和tracepath如何执行相似的功能,不同?
traceroute做什么,需要root特权,而tracepath不需要?
在某些情况下,人们应该首选tracepath而不是traceroute吗?
最近,我读了一篇有关HowToGeek的文章,这使我有些挠头。我对Linux的经验还很少,如果是入门级的,请原谅我:
“ tracepath命令类似于traceroute,但是它不需要root特权。”
traceroute和tracepath如何执行相似的功能,不同?
traceroute做什么,需要root特权,而tracepath不需要?
在某些情况下,人们应该首选tracepath而不是traceroute吗?
Answers:
这两个程序本质上都做一件事:发送和接收某些IP数据包。
您可以使用普通的套接字API来执行此操作,也可以操纵来自接口的原始数据包。套接字API不需要root特权,因为它相当安全。有内置的机制可以防止一个程序访问另一个程序创建的IP数据包。
Tracepath使用套接字API来实现所有功能。Traceroute操纵原始软件包以实现其某些功能。
它处理原始包。
要处理原始数据包,您需要root特权,因为这样做会绕过套接字API的安全性机制。您可以使用该界面访问所有其他进程和用户的通信。试想一下,如果病毒可以操纵原始程序包,该怎么办。
Traceroute中可用的一个高级命令是能够使用IPv4或IPv6协议运行网络跟踪的功能。也可以在ICMP,TCP或UDP数据格式之间进行选择。Traceroute可以为探针选择特定的源路由,并选择要从哪个端口发送。它可以设置最小和最大TTL限制以接受出站探针。此外,Traceroute可以显示响应ping的等待时间,并设置每个探测中发送了多少个数据包以及发送了多少个探测。这些命令中的某些命令可能不受路径上的网络硬件的支持,这可能会在探针到达目标目的地之前将其终止。
您可以使用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保护系统免受非特权用户的攻击,因此他们不能使用此命令进行攻击。
我认为您必须阅读此 http://www.ehow.com/list_7526520_differences-between-traceroute-tracepath.html
从上面的链接:
跟踪路径
Tracepath跟踪到指定网络地址的路径,并报告“生存时间”或TTL滞后以及最大传输单位(MTU)。有权访问命令行提示符的任何其他用户都可以运行此命令。
Traceroute基础
Traceroute本质上与Tracepath相同,除了默认情况下,它只会提供TTL值。如果需要其他数据,则必须在命令行上请求这些变量。同样,traceroute需要超级用户访问权限才能在Linux机器上运行该命令,并且路径上的所有路由器都可能不支持某些高级数据请求。在Windows环境中,有权访问命令行的任何用户都可以运行Traceroute。
traceroute
要求超级用户权限(特别是因为它实际上似乎确实不太比tracepath
默认情况下)?而且,除了您不是超级用户的情况之外,为什么还要选择一个呢?
ping
并traceroute
使用ICMP协议。像UDP和TCP一样,可以通过常规套接字API进行访问。除了root以外,只有小于1024的UDP和TCP端口号受到保护,不能使用。ICMP对所有用户免费提供。
如果您真的想查看ping和traceroute的工作方式,可以从CodeProject下载它们的示例C代码实现。
简而言之,他们简单地打开一个ICMP套接字,并且traceroute使用setsockopt更改TTL的增量,直到达到目标为止。
来源:链接