目录
- traceroute
- 1、简介
- 2、探测原理
- 3、traceroute说明
- 4、实例
- 设置每跳探测数
- 设置跳数
- 探测包使用的基本UDP端口设置6789
- 把对外发探测包的等待响应时间设置为3秒
- 总结
traceroute
1、简介
traceroute的主要功能是跟踪从IP网络发送到指定主机经过的网关的工具。它利用IP协议的生存时间(time to live, TTL)字段,并试图从路径上的每个网关引出ICMP TIME_EXCEEDED响应,从而得到探测包到达主机所经过的所有网关。它显示了每个跳的IP地址、主机名(如果配置了反向DNS查找)、延迟(以毫秒为单位),以及到达每个跳的往返时间(RTT)。
2、探测原理
TTL的作用:设置IP数据报被丢弃前,最多能够经过的节点数。
ICMP是 Internet Control Message Protocol 的缩写,即互联网控制消息协议。它是互联网协议族的核心协议之一。它用于 TCP/IP 网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些信息,使网络管理者可以对所发生的问题作出诊断,然后采取适当的措施解决问题。
traceroute的原理主要是利用TTL来实现的。每当数据包经过一个路由器,TTL就会减少1。如果TTL不为0就会向下一个节点转发,如果为0,则会丢弃数据包,并发一个ICMP TTL给原数据包的发出者。
traceroute探测过程:假设TTL设置为N:
3、traceroute说明
使用:traceroute [ -46dFITnreAUDV ] [ -f first_ttl ] [ -g gate,… ] [ -i device ] [ -m max_ttl ] [ -N squeries ] [ -p port ] [ -t tos ] [ -l flow_label ] [ -w MAX,HERE,NEAR ] [ -q nqueries ] [ -s src_addr ] [ -z sendwait ] [ --fwmark=num ] host [ packetlen ]
选项:
- -4:使用ipv4
- -6:使用ipv6
- -f first_ttl --first=first_ttl:从第一个ttl开始(而不是从1开始)
- -g gate,… --gateway=gate,…:通过指定网通过指定网关的路由报文(IPv4最多8个,IPv6最多127个)关的路由报文(IPv4最多8个,IPv6最多127个)
- -I --icmp:使用ICMP ECHO进行跟踪
- -T --tcp:使用tcp SYN进行跟踪(默认端口是80)
- -U --udp:使用UDP对应端口进行探测,默认是53
- -i device --interface=device:指定要操作的网络接口
- -N squeries --sim-queries=squeries:设置同时尝试探测的数量(默认为16)
- -n:不解析IP到对应域名
- -p port:指定要使用的端口
- -t tos --tos=to:设置IP数据包的类型字段
- -s src_addr:指定数据包的源地址
- -q nqueries:设置每跳探测数。默认是3
- –sport=num:发送报文时使用源端口,默认是”-N 1“
参数: - host:要探测的主机
- packetlen:完整的数据包长度(默认是IP首部的长度加上40)
4、实例
traceroute www.baidu.com
traceroute to www.baidu.com (153.3.238.102), 30 hops max, 60 byte packets
1 _gateway (192.168.92.2) 1.426 ms 1.230 ms 1.137 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
# 说明:输出按序号记录。每一个纪录就是一跳。每行的输出内容如下:
# 1.跃点序号:这是数据包经过的跃点的顺序编号。
# 2.经过的路由/网关
# 3.延迟时间,每一跳默认会进行三次探测,最后三个数字为三次探测的延迟时间。单位是ms
# 如果输出内容是*,可能是防火墙封掉了ICMP的返回信息,也可能是网络出问题了。
设置每跳探测数
traceroute -q 5 www.baidu.com
########
traceroute to www.baidu.com (153.3.238.110), 30 hops max, 60 byte packets
1 _gateway (192.168.92.2) 0.994 ms 0.887 ms 0.810 ms 0.736 ms 0.662 ms
2 * * * * *
3 * * * * *
4 * * * * *
5 * * * * *
6 * * * * *
7 * * * * *
8 * * * * *
9 * * * * *
10 * * * * *
11 * * * * *
12 * * * * *
13 * * * * *
14 * * * * *
15 * * * * *
16 * * * * *
17 * * * * *
18 * * * * *
19 * * * * *
20 * * * * *
21 * * * * *
22 * * * * *
23 * * * * *
24 * * * * *
25 * * * * *
26 * * * * *
27 * * * * *
28 * * * * *
29 * * * * *
30 * * * * *
设置跳数
traceroute -m 5 www.baidu.com
traceroute to www.baidu.com (153.3.238.110), 5 hops max, 60 byte packets
1 192.168.92.2 (192.168.92.2) 1.082 ms 0.983 ms 0.944 ms
2 * * *
3 * * *
4 * * *
5 * * *
探测包使用的基本UDP端口设置6789
traceroute -p 6789 -m 5 www.baidu.com
traceroute to www.baidu.com (153.3.238.110), 5 hops max, 60 byte packets
1 192.168.92.2 (192.168.92.2) 0.564 ms 0.459 ms 0.392 ms
2 * * *
3 * * *
4 * * *
5 * * *
把对外发探测包的等待响应时间设置为3秒
traceroute -w 3 -m 5 www.baidu.com
traceroute to www.baidu.com (153.3.238.110), 5 hops max, 60 byte packets
1 192.168.92.2 (192.168.92.2) 0.419 ms 0.165 ms 0.060 ms
2 * * *
3 * * *
4 * * *
5 * * *
总结
需要注意的是:
- traceroute是Linux的命令,如果Windows想要跟踪路由,是tracert命令。
- Ubuntu系统默认没有此命令,需要自己安装
- 该命令也是工作中常用的排查网络方面的问题
这个是自己的学习内容,基本都是根据 traceroute 的帮助信息进行翻译,如果有不对的地方,欢迎帮忙指正。