Linux命令:traceroute命令

目录

  • 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:
Linux命令:traceroute命令_第1张图片

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  * * *

总结

需要注意的是:

  1. traceroute是Linux的命令,如果Windows想要跟踪路由,是tracert命令。
  2. Ubuntu系统默认没有此命令,需要自己安装
  3. 该命令也是工作中常用的排查网络方面的问题

这个是自己的学习内容,基本都是根据 traceroute 的帮助信息进行翻译,如果有不对的地方,欢迎帮忙指正。

你可能感兴趣的:(Linux命令,网络从头学,linux,网络,运维)