每日一命令 第二天 路由追踪

用于追踪分析数据包在网络中传输时经过的路径,并输出到目标地址的延迟情况和节点信息。

windows下相关命令

Tracert

C:\Users\123>Tracert

用法: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout]
               [-R] [-S srcaddr] [-4] [-6] target_name

选项:
    -d                 不将地址解析成主机名。(可以加快速度)
    -h maximum_hops    搜索目标的最大跃点数。
    -j host-list       与主机列表一起的松散源路由(仅适用于 IPv4)。
    -w timeout         等待每个回复的超时时间(以毫秒为单位)。
    -R                 跟踪往返行程路径(仅适用于 IPv6)。
    -S srcaddr         要使用的源地址(仅适用于 IPv6)。
    -4                 强制使用 IPv4。
    -6                 强制使用 IPv6。

 

1:tracert命令用于确定 IP数据包访问目标所采取的路径,显示从本地到目标网站所在网络服务器的一系列网络节点的访问速度,最多支持显示30个网络节点。

2:最左侧的第一列,1,2,3,……,表明在我使用的宽带上,经过17(算自己本地的)个路由节点,可以到达百度的服务;

3:中间的三列,单位是ms,表示我们连接到每个路由节点的速度,返回速度和多次链接反馈的平均值;

4:后面的IP,就是每个路由节点对应的IP;

5:如果返回消息是超时,则表示这个路由节点和当前我们使用的宽带,是无法联通的,至于原因,就有很多种了,比如:特意在路由上做了过滤限制,或者确实是路由的问题等,需要具体问题具体分析;

6:如果在测试的时候,大量的都是 * 和请求超时,则就说明这个IP,在各个路由节点都有问题

如果需要了解每一跳的丢包率等信息,那就必须使用pathping命令了

pathping

C:\Users\123>pathping /?

用法: pathping [-g host-list] [-h maximum_hops] [-i address] [-n]
                [-p period] [-q num_queries] [-w timeout]
                [-4] [-6] target_name

选项:
    -g host-list     与主机列表一起的松散源路由。
    -h maximum_hops  搜索目标的最大跃点数。
    -i address       使用指定的源地址。
    -n               不将地址解析成主机名。
    -p period        两次 Ping 之间等待的时间(以毫秒为单位)。
    -q num_queries   每个跃点的查询数。
    -w timeout       每次回复等待的超时时间(以毫秒为单位)。
    -4               强制使用 IPv4。
    -6               强制使用 IPv6。

linux 下相关命令

traceroute 

命令选项

  • -4: 使用 IPv4。
  • -6: 使用 IPv6。
  • -d: 启用套接字级别的调试。
  • -F: 设置不分片标志,即不分片数据包。
  • -f first_ttl: 从指定的 TTL(生存时间)开始跟踪(而不是从 1 开始)。
  • -g gate,...: 通过指定的网关路由数据包。
  • -I: 使用 ICMP ECHO 进行追踪。
  • -T: 使用 TCP SYN 进行追踪,默认端口为 80。
  • -m max_ttl: 设置最大跳数(TTL),即要达到的最大 TTL。默认为 30。
  • -n: 不将 IP 地址解析为其域名。
  • -p port: 设置目标端口。对于默认方法,“udp” 的初始 UDP 端口值(默认为 33434),或 “icmp” 的初始 seq(也会增加,默认从 1 开始),或其他方法的某个常量目标端口(默认为 “tcp” 的 80, “udp” 的 53 等)。
  • -t tos: 设置出站数据包的 TOS(IPv4 服务类型)或 TC(IPv6 传输类)值。
  • -l flow_label: 为 IPv6 数据包使用指定的 flow_label。
  • -w MAX,HERE,NEAR: 等待一个探测时间不超过响应时间的 HERE 倍(默认为 3 倍),或者不超过下一个跳点的 NEAR 倍(默认为 10 倍),或者不超过 MAX 秒(默认为 5.0 秒)。
  • -q nqueries: 每个跳点的探测数。默认为 3。
  • -r: 绕过常规路由,直接发送到附加网络上的主机。
  • -z sendwait: 探测之间的最小时间间隔。默认为 0。如果值大于 10,则指定的是毫秒数,否则是秒数。
  • -e: 显示 ICMP 扩展(如果存在),包括 MPLS。
  • -A: 在路由注册表中执行 AS 路径查找,并在相应的地址之后直接打印结果。
  • -M name: 使用指定的模块(内置或外部)进行 traceroute 操作。大多数方法都有其快捷方式(例如 -I 表示 -M icmp)。
  • -O OPTS,...: 为 traceroute 模块使用特定的选项。
  • --sport=num: 使用指定的源端口号进行传出数据包。意味着 -N 1
  • --fwmark=num: 为传出数据包设置防火墙标记。
  • -U: 使用 UDP 对特定端口进行 traceroute(而不是每次探测都增加端口),默认端口为 53。
  • -UL: 使用 UDPLITE 进行 traceroute(默认目标端口为 53)。
  • -D: 使用 DCCP 请求进行 traceroute(默认端口为 33434)。
  • -P prot: 使用指定协议的原始数据包进行 traceroute。
  • --mtu: 发现沿路径的 MTU(最大传输单元)。意味着 -F -N 1
  • --back: 猜测反向路径中的跳数,并在不同的情况下打印它们是否不同。
  • -V: 打印版本信息并退出。
  • --help: 查看帮助文档。

1、指定出口 -s

traceroute -s 192.168.1.10 example.com

这将会从 IP 地址为 192.168.1.10 的主机发送 traceroute 请求到 example.com。这在某些网络环境中可能很有用,特别是当主机有多个网络接口或 IP 地址时。

2、用 ICMP ECHO 请求 -I

traceroute -I example.com

这将会向 example.com 发送 ICMP ECHO 请求,并等待每个跳点返回 ICMP ECHO 回复。通过这种方式,你可以了解到数据包从源主机到达目标主机的路径上经过的每个路由器。

  • ICMP 追踪可能会受到网络中的防火墙和安全策略的影响。有些网络可能会阻止 ICMP 报文,因此在这样的网络环境中,ICMP 追踪可能无法正常工作。
  • 默认 UDP 追踪可能受到网络中防火墙和安全策略的影响,但相对来说受到的影响较少。因为 UDP 数据包更常见,大多数网络都会允许 UDP 流量通过。

3、指定探测端口

traceroute -T -p 443 baidu.com

来指定使用 TCP SYN 进行 traceroute,同时连接到百度网站的 443 端口(HTTPS 默认端口)

traceroute -U baidu.com 

-U 选项指示 traceroute 使用 UDP 数据包而不是默认的 ICMP 或 TCP 数据包。

UDP 追踪通常会发送到目标主机的默认 UDP 端口,例如 DNS(53)或其他应用程序端口。在这种情况下,traceroute 将尝试使用 UDP 数据包来进行跟踪,以了解数据包通过的路径和响应时间。

请注意,由于 UDP 的特性,数据包可能会被路由器或防火墙丢弃或过滤,因此 UDP 追踪可能不会像 ICMP 或 TCP 追踪那样成功。

4、指定协议

traceroute 中,-P 选项用于指定要使用的原始数据包的协议。这个选项允许你指定使用特定的协议进行追踪。

以下是 -P 选项的常见用法:

  1. 使用 -P icmp 追踪 ICMP 数据包

    traceroute -P icmp example.com

    这将使用 ICMP 数据包进行追踪。

  2. 使用 -P udp 追踪 UDP 数据包

    traceroute -P udp example.com

    这将使用 UDP 数据包进行追踪。在这种情况下,可以考虑结合 -p 选项来指定要使用的 UDP 端口。

  3. 使用 -P tcp 追踪 TCP 数据包

    traceroute -P tcp example.com

    这将使用 TCP 数据包进行追踪。在这种情况下,可以考虑结合 -p 选项来指定要使用的 TCP 端口。

  4. 其他协议:具体取决于所使用的 traceroute 实现,可能还支持其他原始数据包协议。

tracepath

参数

  • -4: 使用 IPv4 进行跟踪。
  • -6: 使用 IPv6 进行跟踪。
  • -b: 打印目标主机的名称和 IP 地址。
  • -l <length>: 指定数据包的长度。
  • -m <hops>: 指定最大跳数(最大 TTL)。
  • -n: 禁止进行 DNS 名称解析。
  • -p <port>: 指定目标端口。
  • -V: 打印版本信息并退出。

在大多数情况下,tracepath 工具并没有直接提供指定出口的选项。tracepath 通常使用系统默认的路由表来确定数据包的出口。

1、禁止dns名称解析

root@lenovo:~# tracepath -n baidu.com
 1?: [LOCALHOST]                      pmtu 1280
 1:  172.26.160.1                                          0.264ms
 1:  172.26.160.1                                          0.153ms
 2:  192.168.31.1                                          4.050ms
 3:  192.168.1.1                                          10.608ms
 4:  125.119.8.1                                          39.794ms
……
30:  no reply
     Too many hops: pmtu 1280
     Resume: pmtu 1280

 2、指定端口

tracepath -p 80 baidu.com
 1?: [LOCALHOST]                      pmtu 1280
 1:  lenovo                                                0.323ms
 1:  lenovo                                                0.208ms
 2:  192.168.31.1                                          3.761ms
 3:  192.168.1.1                                          36.388ms
 4:  125.119.8.1                                           6.726ms

……

30:  no reply
     Too many hops: pmtu 1280
     Resume: pmtu 1280

mtr

mtr 全称 my traceroute,是一个把 ping 和 traceroute 合并到一个程序的网络诊断工具。

linux 可直接通过apt/yum install mtr 安装

  • -F, --filename FILE: 从文件中读取主机名。
  • -4: 仅使用 IPv4。
  • -6: 仅使用 IPv6。
  • -u, --udp: 使用 UDP 替代 ICMP 回显。
  • -T, --tcp: 使用 TCP 替代 ICMP 回显。
  • -I, --interface NAME: 指定使用的网络接口。
  • -a, --address ADDRESS: 将传出套接字绑定到指定的地址。
  • -f, --first-ttl NUMBER: 设置起始 TTL。
  • -m, --max-ttl NUMBER: 设置最大跳数。
  • -U, --max-unknown NUMBER: 设置最大未知主机数。
  • -P, --port PORT: 设置 TCP、SCTP 或 UDP 的目标端口号。
  • -s, --psize PACKETSIZE: 设置用于探测的数据包大小。
  • -B, --bitpattern NUMBER: 设置在负载中使用的位模式。
  • -i, --interval SECONDS: 设置 ICMP 回显请求的间隔。
  • -G, --gracetime SECONDS: 设置等待响应的秒数。
  • -Q, --tos NUMBER: 设置 IP 头中的服务类型字段。
  • -e, --mpls: 显示 ICMP 扩展的信息。
  • -Z, --timeout SECONDS: 保持探测套接字打开的秒数。
  • -M, --mark MARK: 对每个发送的数据包进行标记。
  • -r, --report: 使用报告模式输出。
  • -w, --report-wide: 输出宽报告。
  • -c, --report-cycles COUNT: 设置发送的 ping 数量。
  • -j, --json: 输出 JSON 格式。
  • -x, --xml: 输出 XML 格式。
  • -C, --csv: 输出逗号分隔的值。
  • -l, --raw: 输出原始格式。
  • -p, --split: 分割输出。
  • -t, --curses: 使用 curses 终端界面。
  • --displaymode MODE: 选择初始显示模式。
  • -n, --no-dns: 不解析主机名。
  • -b, --show-ips: 显示 IP 数和主机名。
  • -o, --order FIELDS: 选择输出字段。
  • -y, --ipinfo NUMBER: 在输出中选择 IP 信息。
  • -z, --aslookup: 显示 AS 号码。
  • -h, --help: 显示帮助信息并退出。
  • -v, --version: 输出版本信息并退出。

 执行mtr baidu.com 

在这个输出中,我们可以看到从你的计算机(lenovo,IP 地址为 172.26.169.96)到百度网站(baidu.com,IP 地址为 110.242.68.66)的路径跟踪信息。每一行表示一个跳点,其中包括跳点的 IP 地址、丢包率、发送的数据包数量、最后一个数据包的延迟时间以及其他统计信息。

从输出中可以看到,跟踪经过了多个路由器,每个路由器都显示了不同的丢包率和延迟时间。在某些跳点上,出现了丢包率较高的情况,这可能是由于网络拥塞、路由器故障或防火墙过滤等原因导致的。最终,跟踪成功到达了目标主机(baidu.com)。

部分引用自:Windows系统下,tracert路由跟踪指令详解_windows tracert-CSDN博客

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值