Linux traceroute命令介绍
traceroute是一个用于追踪网络数据包的路由途径的命令,它可以显示数据包从本地主机到目的主机经过的所有中间节点,以及每个节点的响应时间。traceroute的全称是trace route,意思是跟踪路由。traceroute命令可以帮助我们诊断网络连接的问题,比如延迟、丢包、路由环路等。traceroute命令使用的协议是TCP/IP,它发送UDP数据包,并利用TTL(Time to Live)字段和ICMP(Internet Control Message Protocol)消息来实现路由跟踪的功能。
Linux traceroute命令适用的Linux版本
traceroute命令在大多数Linux发行版中都是预装的,可以直接使用。如果没有安装,可以使用以下命令进行安装:
- 在基于Debian的Linux系统中,如Ubuntu,可以使用apt-get命令:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install traceroute
- 在基于Red Hat的Linux系统中,如CentOS,可以使用yum命令:
[linux@bashcommandnotfound.cn ~]$ sudo yum install traceroute
- 在基于Arch的Linux系统中,如Manjaro,可以使用pacman命令:
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S traceroute
Linux traceroute命令的基本语法
traceroute命令的基本语法格式如下:
traceroute [选项] [主机名称或IP地址] [数据包大小]
其中,主机名称或IP地址是必须指定的参数,表示要跟踪的目的主机。数据包大小是可选的参数,表示要发送的UDP数据包的大小,默认是40字节。
Linux traceroute命令的常用选项说明
traceroute命令有很多选项,可以用来控制跟踪的过程和输出的格式。以下是一些常用的选项:
选项 | 说明 |
---|---|
-d | 开启Socket层级的排错功能 |
-f <存活数值> | 设置第一个检测数据包的存活数值TTL的大小 |
-F | 设置勿离断位,防止数据包被分片 |
-g <网关> | 设置来源路由网关,最多可设置8个 |
-i <网络界面> | 使用指定的网络界面送出数据包 |
-I | 使用ICMP回应取代UDP数据包 |
-m <存活数值> | 设置检测数据包的最大存活数值TTL的大小 |
-n | 直接使用IP地址而非主机名称 |
-p <通信端口> | 设置UDP传输协议的通信端口 |
-r | 忽略普通的路由表,直接将数据包送到远端主机上 |
-s <来源地址> | 设置本地主机送出数据包的IP地址 |
-t <服务类型> | 设置检测数据包的TOS数值 |
-v | 详细显示指令的执行过程 |
-w <超时秒数> | 设置等待远端主机回报的时间 |
-x | 开启或关闭数据包的正确性检验 |
Linux traceroute命令的实例
以下是一些traceroute命令的实例,可以帮助我们更好地理解和使用这个命令。
实例1:显示到达目的地的数据包路由
[linux@bashcommandnotfound.cn ~]$ traceroute www.google.com
traceroute: Warning: www.google.com has multiple addresses; using 142.250.67.228
traceroute to www.google.com (142.250.67.228), 30 hops max, 60 byte packets
1 192.168.0.1 (192.168.0.1) 0.882 ms 1.118 ms 1.367 ms
2 10.0.0.1 (10.0.0.1) 2.453 ms 2.706 ms 2.969 ms
3 100.64.0.1 (100.64.0.1) 4.321 ms 4.583 ms 4.845 ms
4 202.97.33.1 (202.97.33.1) 6.189 ms 6.452 ms 6.714 ms
5 202.97.35.17 (202.97.35.17) 8.057 ms 8.320 ms 8.582 ms
6 202.97.35.22 (202.97.35.22) 10.925 ms 11.188 ms 11.450 ms
7 202.97.60.34 (202.97.60.34) 13.793 ms 14.056 ms 14.318 ms
8 202.97.60.42 (202.97.60.42) 16.661 ms 16.924 ms 17.186 ms
9 209.85.255.80 (209.85.255.80) 19.529 ms 19.792 ms 20.054 ms
10 209.85.249.195 (209.85.249.195) 22.397 ms 22.660 ms 22.922 ms
11 72.14.236.126 (72.14.236.126) 25.265 ms 25.528 ms 25.790 ms
12 nrt04s01-in-f4.1e100.net (142.250.67.228) 28.133 ms 28.396 ms 28.658 ms
这个实例显示了从本地主机到 www.google.com 的数据包路由,以及每个节点的响应时间。每个节点显示了IP地址和主机名称(如果有的话),以及三次测试的平均时间。traceroute命令默认发送60字节的数据包,最多跟踪30个节点,如果到达目的地或超过最大节点数,就停止跟踪。
实例2:指定数据包大小
[linux@bashcommandnotfound.cn ~]$ traceroute www.google.com 100
traceroute: Warning: www.google.com has multiple addresses; using 142.250.67.228
traceroute to www.google.com (142.250.67.228), 30 hops max, 100 byte packets
1 192.168.0.1 (192.168.0.1) 0.867 ms 1.103 ms 1.352 ms
2 10.0.0.1 (10.0.0.1) 2.439 ms 2.692 ms 2.955 ms
3 100.64.0.1 (100.64.0.1) 4.307 ms 4.569 ms 4.831 ms
4 202.97.33.1 (202.97.33.1) 6.175 ms 6.438 ms 6.700 ms
...
实例3:使用Traceroute跟踪到达目标主机的路径,设置最大跳数
$ traceroute -m 15 www.example.com
输出示例:
traceroute to www.example.com (93.184.216.34), 15 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 1.234 ms 1.123 ms 1.456 ms
2 10.0.0.1 (10.0.0.1) 5.678 ms 5.789 ms 5.890 ms
3 203.0.113.1 (203.0.113.1) 10.123 ms 10.234 ms 10.345 ms
...
实例4:使用Traceroute跟踪到达目标主机的路径,设置超时时间
$ traceroute -w 2000 www.example.com
输出示例:
traceroute to www.example.com (93.184.216.34), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 1.234 ms 1.123 ms 1.456 ms
2 10.0.0.1 (10.0.0.1) 5.678 ms 5.789 ms 5.890 ms
3 203.0.113.1 (203.0.113.1) 10.123 ms 10.234 ms 10.345 ms
...
实例5:使用Traceroute跟踪到达目标主机的路径,指定UDP端口号
$ traceroute -U -p 1234 www.example.com
输出示例:
traceroute to www.example.com (93.184.216.34), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 1.234 ms 1.123 ms 1.456 ms
2 10.0.0.1 (10.0.0.1) 5.678 ms 5.789 ms 5.890 ms
3 203.0.113.1 (203.0.113.1) 10.123 ms 10.234 ms 10.345 ms
...
请注意,这些实例仅供参考。在实际使用Traceroute命令时,你可以根据需要调整选项和目标主机,以便进行更具体的跟踪。
Linux traceroute命令的注意事项
- traceroute命令需要在终端或命令行界面中运行。
- 在某些Linux发行版上,Traceroute命令需要使用root或sudo权限才能运行。
- 如果出现"bash: traceroute: command not found"的错误提示,可能是因为Traceroute未安装。请按照适用于您的Linux发行版的安装命令进行安装。
评论区