路由追踪:traceroute tcptraceroute

一、介绍

在网络通信中,路由追踪(traceroute)是一种定位网络数据包路由路径的方法。这个过程中,traceroute 发送一个 ICMP/UDP 报文(Ping 测试),并探查包经过的路由中的服务器或节点。一般来说,路由在本地网络内已知。当一个包是通过本地网络外的路由,到达远程网络时,网络拓扑和路径就无法预测,故使用路由追踪就显得尤其重要。traceroute 可以帮助你查出任意两点之间的网络路径,显示每个路由器的 IP 地址、拥塞程度(即 TTL 计数)、以及 ICMP 输出格式的探测时间。

不同于普通的 Ping 命令,traceroute 不断发送探针包,直至目的节点发出应答(或者超时)。在整个过程中,traceroute 依次遍历到目的网络中的下一跃点(sup-h-ping 可以实现从本地网络的任意一台主机上对其它主机的操作系统及连接进行测试,定位其速度慢或连接难度的起因。),从而确定到达目的主机的路径。在路径探测过程中,traceroute 不仅提供路径,还能显示出路径的依赖性,也就是指路由结点之间的关系。

本文将介绍两种常见的路由追踪工具:traceroute 和 tcptraceroute。traceroute 使用 ICMP 协议,可追踪 UDP 和 TCP 当前网络拓扑。当追踪网络拓扑时,通常使用 UDP 或 ICMP 协议的探测包,因为它们都是不可靠的,而 TCP 协议是可靠的,使用 TCP 协议会产生可观的流量负载。

二、traceroute 的使用方法

1. 命令参数

traceroute 命令使用很简单,并且它支持多种参数选项,用来改变其行为,具体如下:

```

-h <跃点数> 指定最大的跳数

-I 使用 ICMP 回应(默认)

-n 不对地址进行 DNS 反向解析

-p <端口> 改变源端口,范围为 1 到 65535

-T 使用 TCP 连接,这需要一个带 SYN/ACK bit 的端口

-t 改变 ICMP/TCP 包的服务类型字节,参照 RFC 1349

-U 尝试使用 UDP 包而非 ICMP 包

-w <秒数> 设定等待远端主机回声应的秒数,默认值为 5 秒钟

```

2. 常规使用方法

traceroute 常规使用方法如下:

```

$ traceroute

```

例如:

```

$ traceroute 8.8.8.8

```

该命令会显示到达 IP 地址 8.8.8.8 的路由路径和跃点数。具体的输出如下:

```

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets

1 _gateway (192.168.1.1) 4.850 ms 4.992 ms 5.337 ms

2 183.192.161.1 (183.192.161.1) 40.679 ms 40.712 ms 40.755 ms

3 202.97.6.146 (202.97.6.146) 47.610 ms 47.663 ms 202.97.62.22 (202.97.62.22) 42.238 ms

4 202.97.60.93 (202.97.60.93) 42.269 ms 202.97.17.65 (202.97.17.65) 44.512 ms 49.998 ms

5 72.14.194.126 (72.14.194.126) 46.393 ms 108.170.243.1 (108.170.243.1) 47.607 ms 72.14.194.126 (72.14.194.126) 47.629 ms

6 74.125.253.176 (74.125.253.176) 39.923 ms 72.14.233.204 (72.14.233.204) 41.748 ms 74.125.253.176 (74.125.253.176) 42.069 ms

7 dns.google (8.8.8.8) 42.317 ms 39.259 ms 39.307 ms

```

traceroute 显示了从本地主机到达 8.8.8.8 所经过的路由器 IP 地址和运行时间(以毫秒为单位)。路由器的数量由 max Hops 参数设置,30 路由器是默认值。第一列表示的是节点号。第二列表示的是节点的 DNS 名称或 IP 地址。第三列表示的是从本地主机到达节点所需要的时间(以毫秒为单位)。这些时间排列在每个节点的偏移量之前。如此的排列方式使得与节点越近的时间越容易比较。

如果想要查看每个节点的详细信息,可以通过命令指定 `-A` 选项参数,下面是具体的使用方法:

```

$ traceroute -A 8.8.8.8

```

3. 参照 TOS 指定优先级

IP 层可以使用 TOS 字节来表示服务所需的优先级。TOS 值是一个 8 位值,分为高 3 位和低 5 位。高 3 位称为 TOS 主部分,低 5 位称为 TOS 子部分。TOS 主部分的值和它所代表的访问类型相关,如:telnet(16),ftp(64),SMTP(32),等等。子部分是描述子部分处理方式,如,15 表示低延迟,1 表示最少成本。可参照 RFC 1349。

traceroute 使用参数 `-t ` 来改变 ICMP/TCP 包的 TOS 字节。具体方法如下:

```

$ traceroute -t tos

```

其中,tos 值是一个 8 位的十进制数,如:

```

$ traceroute -t 100 8.8.8.8

```

4. 控制 ICMP 包大小

traceroute 的默认探测包大小是 60 字节,如果需要增加或减小探测包大小,可以使用参数 `-l size`。例如,增加包大小到 100 字节:

```

$ traceroute -l 100 8.8.8.8

```

三、tcptraceroute 的使用方法

tcptraceroute 是 traceroute 的一种变体,可以通过 TCP 连接来避免 ICMP 投递被关闭的网络上的问题。例如,一些安全策略或路由器配置可能会在网络上关闭 ICMP 投递。由于其使用 TCP 连接,它可以检测防火墙、路由和网络瓶颈。

1. 命令参数

和 traceroute 一样,tcptraceroute 也支持多种参数选项,用来改变其行为,具体如下:

```

-h 设定最大的跃点数

-i 设定 TCP 连接尝试的间隔时间,以秒计

-M 设定最大查找探测包的数据块大小,默认 1460 字节

-n 不对地址进行 DNS 反向解析

-p 改变源端口,范围为 1 到 65535

-S 设定 SYN 报文的 IP 地址

-s 设定 SYN 报文的源地址端口

-t 改变 ICMP/TCP 包的服务类型字节,参照 RFC 1349

-u 设定 UDP 映射的列表并为每个端口生成一个分离的传输探测报文(用于对防火墙的策略进行分析)

-w 设定等待远端主机回声应的秒数,默认值为 5 秒钟

-z 设定查找探测包的数据块大小并加上 28 字节的控制头大小

```

2. 常规使用方法

tcptraceroute 的命令格式和 traceroute 一样,只需要将 traceroute 的命令行换成 tcptraceroute,如:

```

$ tcptraceroute

```

例如:

```

$ tcptraceroute 8.8.8.8

```

该命令会显示到达 IP 地址 8.8.8.8 的路由路径和跃点数。具体的输出与 traceroute 的输出相似,不同的地方是 tcptraceroute 使用的是 TCP 连接。

```

Selected device eth0, address 192.168.1.3, port 41107 for outgoing packets

Tracing the path to 8.8.8.8 (dns.google), 30 hops max

1 192.168.1.1 (192.168.1.1) 3.038 ms 3.014 ms 2.871 ms

2 * * *

3 202.97.104.2 (202.97.104.2) 18.296 ms 18.275 ms 21.224 ms

4 202.97.126.238 (202.97.126.238) 21.130 ms 20.996 ms 202.97.51.234 (202.97.51.234) 22.132 ms

5 202.97.50.241 (202.97.50.241) 26.706 ms 202.97.11.78 (202.97.11.78) 31.050 ms 27.686 ms

6 108.170.245.1 (108.170.245.1) 53.097 ms dns.google (8.8.8.8) 60.347 ms 108.170.238.240 (108.170.238.240) 55.152 ms

```

在这个例子中,tcptraceroute 显示了 8.8.8.8 的 IP 地址和 DNS 名称,跟踪到达它需要经过的路由器。每个探测包使用一个 TCP 连接,并尝试在每个跳点上打开一个新连接。

3. 使用 SYN 模拟 TCP 连接

tcptraceroute 可以使用 SYN 模拟 TCP 连接。使用这种方法可以绕过那些过滤 ICMP 的防火墙或路由器。使用 `-S` 参数指定一个 SYN 报文的 IP 地址,如:

```

$ tcptraceroute -S 192.168.1.3

```

4. 尝试不同的端口

tcptraceroute 可以尝试不同的端口,如:

```

$ tcptraceroute -p 80

```

如果目标主机的防火墙阻塞了 80 端口,tcptraceroute 将可以通过找到往其他端口的可用路径来绕过该限制。

5. 增加探测包大小

探测包的大小可以通过 `-z` 参数来增加,如:

```

$ tcptraceroute -z 1500

```

这将把探测包的大小增加到 1500 字节。

6. 使用 UDP 映射

tcptraceroute 使用 `-u` 参数来进行 UDP 映射探测。它为每个被扫描端口生成一个不同的 UDP 报文,并在进行每个端口的路由时使用这些单独的报文。这种方法可以用于破解防火墙策略和路由器的过滤器。

```

$ tcptraceroute -u 8.8.8.8 53 80 2362

```

四、案例分析

可以通过 traceroute 和 tcptraceroute 查找和分析路由路径,如下所示。

1. traceroute 案例

本例以访问 google.com 为例。

```

$ traceroute google.com

```

该命令将显示访问 google.com 所需要经过的路由器。例如:

```

traceroute to google.com (172.217.24.14), 30 hops max, 60 byte packets

1 home (192.168.1.1) 1.079 ms 3.339 ms 3.475 ms

2 202.97.6.1 (202.97.6.1) 45.507 ms 45.645 ms 45.729 ms

3 202.97.122.229 (202.97.122.229) 60.108 ms 202.97.62.18 (202.97.62.18) 52.825 ms 202.97.122.233 (202.97.122.233) 45.203 ms

4 202.97.60.113 (202.97.60.113) 44.481 ms 202.97.60.109 (202.97.60.109) 63.295 ms 202.97.60.113 (202.97.60.113) 60.252 ms

5 72.14.197.166 (72.14.197.166) 50.921 ms 51.059 ms 47.437 ms

6 216.239.41.76 (216.239.41.76) 49.982 ms 66.249.95.72 (66.249.95.72) 52.563 ms dns.google (8.8.8.8) 55.975 ms

```

这个例子中,traceroute 显示了到达 google.com 所需要经过的路由器。每个路由器的 IP 和域名(如果可用)都列出来了,与通往每个路由器所需的延迟时间。本例中,共处理了 30 个路由器,最后跳到了 google.com 的 IP 地址。

2. tcptraceroute 案例

本例以访问 yahoo.com 为例。

```

$ tcptraceroute yahoo.com

```

该命令将使用 tcp 连接检测访问 yahoo.com 所需要的路由器。例如:

```

Selected device wlp59s0, address 192.168.1.3, port 49828 for outgoing packets

Tracing the path to yahoo.com (98.137.11.163), 30 hops max

1 192.168.1.1 1.165 ms 2.145 ms 3.359 ms

2 * * *

3 202.97.105.173 [82.127.44.202.reverse.alphalink.fr] 31.964 ms 34.197 ms 36.395 ms

4 ask-border-81.54keys.net (81.54.127.1) 36.368 ms 81.54.127.13 (81.54.127.13) 37.489 ms 38.539 ms

5 * * *

6 ae-1-8.bar1.Brussels1.Level3.net (4.69.153.169) 42.291 ms 46.242 ms 43.857 ms

7 * * *

8 * * *

9 ae-1-8.bar1.Brussels1.Level3.net (4.69.153.169) 45.613 ms 46.946 ms 47.126 ms

10 * * *

11 * * *

12 * * *

13 * * *

14 * * *

15 * * *

16 * * *

17 * * *

18 * * *

19 * * *

20 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(39) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部