你用的是什么发行版,debian8可是不需要自己处理权限的:
➜ ~ ll `which mtr`
-rwsr-xr-x 1 root root 100K Oct 19 2014 /usr/bin/mtr
Mtr(My traceroute)是一个把ping和traceroute并入一个程序的网络诊断工具。Mtr提供了两个界面:一个ncurses界面,对从一个telnet会话中使用MTR有用;还有一个GTK+界面,用于X(在mtr-gtk软件包中提供了)。MTR使用
1、mtr命令行工具
mtr使用比较简单,详细用法请参考mtr的man page。
[root@ts3-142 ~]# mtr –help
usage: mtr [-hvrctglspni46] [–help] [–version] [–report]
[–report-cycles=COUNT] [–curses] [–gtk]
[–raw] [–split] [–no-dns] [–address interface]
[–psize=bytes/-s bytes]
[–interval=SECONDS] HOSTNAME [PACKETSIZE]
各主要参数解释如下:
–report 追踪结果以报告模式输出
–report-cycles=COUNT 定义追踪的次数,默认为16
–raw 使结果以原始格式输出
–split 将每次追踪的结果分别列出来,不象–report一样,统计整个结果
–no-dns 只显示ip地址,不解析ip地址对应的主机名
–psize=bytes/-s bytes 定义数据包的大小,单位是字节
下面看一个简单的例子:
[root@ts3-142 ~]# mtr –report -c 10 -n
输出结果如下:
My traceroute [v0.71]
ts3-142.ts.cn.tlan (0.0.0.0) Fri Aug 3 22:39:50 2007
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Last Avg Best Wrst StDev
1. 172.16.76.1 0.0% 0.5 0.4 0.4 0.5 0.1
2. 202.108.132.17 0.0% 179.0 20.2 2.3 179.0 55.8
3. 172.19.140.69 0.0% 13.7 10.3 6.2 17.1 3.8
4. 172.17.0.17 0.0% 9.3 16.5 8.6 62.3 16.3
5. 172.16.0.57 0.0% 9.9 11.2 6.1 21.0 5.4
6. 192.168.0.25 0.0% 7.3 11.4 5.1 17.2 4.2
7. 210.74.176.241 10.0% 110.1 109.6 92.7 123.3 11.3
8. 202.96.13.101 20.0% 104.9 111.8 101.4 126.5 9.3
9. 202.106.192.233 30.0% 120.7 113.8 85.5 138.8 17.2
10. 61.148.143.26 10.0% 99.7 112.0 99.7 120.9 6.9
11. 202.96.8.246 20.0% 97.0 108.2 92.3 137.4 14.3
12. 210.77.38.126 11.1% 133.0 113.8 97.0 133.0 11.8
这个结果说明了,从我的主机到经过的路由节点以及到各节点数据包的丢包率和ping命令的最短/最长时间和标准偏差。
mtr -h提供帮助命令
traceroute 主要利用 IP 数据包的 TTL 字段值 + ICMP 来实现,它发送的用于探测网络路径的数据包的 IP 之上的协议可以是 UDP、TCP或ICMP。
协议表示该数据报文所携带的数据所使用的协议类型,占 8 位。
该字段可以方便目的主机的 IP 层知道按照什么协议来处理数据部分。不同的协议有专门不同的协议号。
例如,TCP 的协议号为 6,UDP 的协议号为 17,ICMP 的协议号为 1。
不同模式下,探测过程中设计的数据包如下:
UDP 探测数据包(目标端口大于 30000) + 中间网关发回 ICMP TTL 超时数据包 + 目标主机发回 ICMP Destination Unreachable 数据包
TCP [SYN] 探测数据包(默认目标端口为 80) + 中间网关发回 ICMP TTL 超时数据包 + 目标主机发回 TCP [SYN ACK] 数据包
ICMP Echo (ping) Request 探测数据包 + 中间网关发回 ICMP TTL 超时数据包 + 目标主机发回 ICMP Echo (ping) reply 数据包
UDP 端口扫描比较麻烦,它同TCP不一样,因为它不需要建立连接。
我们向 目标主机 的固定端口发送UDP数据包,可以得到 两种结果:
在运营商的路由器上,UDP 与 ICMP 的待遇大不相同。
为了利于 troubleshooting,ICMP ECHO Request/Reply 是不会封的,而 UDP 则不同。
UDP 常被用来做网络攻击,因为 UDP 无需连接,因而没有任何状态约束它,比较方便攻击者伪造源 IP、伪造目的端口发送任意多的 UDP 包,长度自定义。
所以运营商为安全考虑,对于 UDP 端口常常采用白名单 ACL,就是只有 ACL 允许的端口才可以通过,没有明确允许的则统统丢弃。比如允许 DNS/DHCP/SNMP 等。
当网络工程师用Ping时,Ping在偷摸做啥事儿?
ping命令是依托于 ICMP协议的, ICMP协议的存在就是为了更高效的转发 IP数据报和提高交付成功的机会。
ping命令除了依托于 ICMP,在局域网下还要借助于 ARP协议, ARP协议能根据 IP地址反查出计算机的 MAC地址。
另外 ARP是有缓存的,为了保证 ARP的准确性,计算机会更新ARP缓存。
有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。
出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
有些路由器会隐藏的自己的位置,不让ICMP Timeout的消息通过,结果就是在那一跳上始终会显示星号。此外服务器也可以伪造traceroute路径的,不过一般应用服务器也没有理由这么做,所以Traceroute的结果还是能够为网络分析提供一些参考的。
Linux下traceroute程序默认发送的探测包为UDP协议,windows下tracert、mtr,以及Linux下mtr默认都发送的是icmp的数据包,并不是所有网关都会如实返回 ICMP 超时报文。处于安全性考虑,大多数防火墙以及启用了防火墙功能的路由器缺省配置为不返回各种 ICMP 报文,其余路由器或交换机也可能被管理员主动修改配置变为不返回 ICMP 报文。因此 Traceroute 程序不一定能拿到所有的沿途网关地址。所以,当某个 TTL 值的数据包得不到响应时,并不能停止这一追踪过程,程序仍然会把 TTL 递增而发出下一个数据包。这个过程将一直持续到数据包发送到目标主机,或者达到默认或用参数指定的追踪限制(maximum_hops 默认最大为30)才结束追踪
如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。
如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。
动态图解traceroute(路由追踪)的原理与实现
https://zhuanlan.zhihu.com/p/404043710
IP数据报格式详解
http://c.biancheng.net/view/6411.html
解析为何traceroute探测的时候中间有些节点探测不到?
https://zhuanlan.zhihu.com/p/122465496
traceroute使用与实现原理分析
https://zhuanlan.zhihu.com/p/36811672
traceroute(路由追踪)的原理及实现
https://www.jianshu.com/p/75a5822d0eec
为什么目标地址ping能通,但是tracetoute不通?
https://cloud.tencent.com/developer/article/1642331
只会用ping测试网络通不通?高级网工还会这么用
https://zhuanlan.zhihu.com/p/458358961
当网络工程师用Ping时,Ping在偷摸做啥事儿?
https://zhuanlan.zhihu.com/p/513184441
traceroute原理
https://www.cnblogs.com/zyd112/p/7196341.html
TCP/UDP/ICMP Traceroute的原理及区别
https://zhuanlan.zhihu.com/p/101810847
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)