linux 路由表详解-追踪路由

linux 路由表详解-追踪路由

Markdown Example

linux 路由表详解

通过 route 命令查看 Linux 内核的路由表:

$route

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

default _gateway 0.0.0.0 UG 0 0 0 p5p1

default _gateway 0.0.0.0 UG 100 0 0 em1

10.150.0.0 10.150.54.126 255.255.0.0 UG 0 0 0 em2

10.150.54.0 0.0.0.0 255.255.255.128 U 0 0 0 em2

link-local 0.0.0.0 255.255.0.0 U 1002 0 0 p5p1

link-local 0.0.0.0 255.255.0.0 U 1004 0 0 em1

link-local 0.0.0.0 255.255.0.0 U 1005 0 0 em2

172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0

172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-de7a849d77f1

172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-9bc222159381

172.24.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-2d803453c335

172.33.1.0 _gateway 255.255.255.0 UG 0 0 0 em1

172.33.9.0 0.0.0.0 255.255.255.0 U 100 0 0 em1

172.33.137.0 0.0.0.0 255.255.255.0 U 0 0 0 p5p1

$route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

0.0.0.0 172.11.120.254 0.0.0.0 UG 0 0 0 p5p1

0.0.0.0 172.32.8.254 0.0.0.0 UG 100 0 0 em1

10.150.0.0 10.150.54.126 255.255.0.0 UG 0 0 0 em2

10.150.54.0 0.0.0.0 255.255.255.128 U 0 0 0 em2

169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 p5p1

169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 em1

169.254.0.0 0.0.0.0 255.255.0.0 U 1005 0 0 em2

172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0

172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-de7a849d77f1

172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-9bc222159381

172.24.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-2d803453c335

172.33.1.0 172.32.8.254 255.255.255.0 UG 0 0 0 em1

172.33.9.0 0.0.0.0 255.255.255.0 U 100 0 0 em1

172.33.137.0 0.0.0.0 255.255.255.0 U 0 0 0 p5p1

各列字段说明:

含义

Destination

目标网络网关或目标主机。Destination 为 default(0.0.0.0)时,表示这个是默认网关,所有数据都发到这个网关(这里是172.11.120.254和172.32.8.254)

Gateway

本机的网关地址,0.0.0.0 表示当前记录对应的 Destination 跟本机在同一个网段,通信时不需要经过网关;如不在同一个网段,可借助相关路由跳过去,如这里借助10.150.54.126网关跳到10.150.0.0 段的网络

Genmask

目标网络(Destination) 字段的网络掩码,Destination 是主机时需要设置为 255.255.255.255,是默认路由时会设置为 0.0.0.0

Flags

标记,含义参考表格后面的解释

Metric

路由距离,到达指定网络所需的中转数,是大型局域网和广域网设置所必需的 (不在Linux内核中使用。)

Ref

路由项引用次数 (不在Linux内核中使用。)

Use

此路由项被路由软件查找的次数

Iface

网卡名字,例如 em1

Flags 含义:

U 路由是活动的

H 目标是个主机

G 需要经过网关

R 恢复动态路由产生的表项

D 由路由的后台程序动态地安装

M 由路由的后台程序修改

! 拒绝路由

如何看这个路由表:

从右往左看:比如第三行: 10.150.0.0 | 10.150.54.126 | 255.255.0.0 | UG | 0 | 0 | 0 | em2

流量数据从本机的网卡em2出去到(交换机)网关10.150.54.126,借助这个网关将数据送往目标网络地址(网关)10.150.0.0

其中要明确地址10.150.54.126 与 10.150.0.0 是能通讯的、否则流量是过不去的

ip route show查看

"ip route show" 是 Linux 中的命令,用于显示计算机上的路由表。路由表记录了计算机如何将数据包发送到网络中的其他计算机

$ip route show

default via 172.33.137.254 dev p5p1

default via 172.33.9.254 dev em1 proto static metric 100

10.150.0.0/16 via 10.150.54.126 dev em2

10.15.54.0/25 dev em2 proto kernel scope link src 10.15.54.10

169.254.0.0/16 dev p5p1 scope link metric 1002

172.3.1.0/24 via 172.13.9.254 dev em1

172.3.1.0/24 dev em1 proto kernel scope link src 172.3.1.12 metric 100

172.2.136.0/24 dev p5p1 proto kernel scope link src 172.2.136.12

上面路由记录的格式通常都是这样的:

<目的地> via <网关> dev <接口网卡> proto <协议> src <源地址或本机地址> <附加信息>

解析

<目的地>

目的地网络网关或主机,可以是具体的 IP 地址(如 10.15.54.50)、网络地址 (如10.15.54.0/25)或 default 等。default 会在没有其他符合的路由条目时使用;

via <网关>

可选字段,指的是到达目的地址需要使用的网关的 IP 地址。发往这个路由条目对应的目的地的数据包,都会把这个网关设置为下一跳,经由此发往最终目的地;比如:em1网卡 通过 网关via 172.13.9.254跳到 172.3.1.0/24网段 ,这样就实现了不同网段之间的通信

dev <接口网卡>

要发往本条目对应目的地时所需要使用的网络接口(设备网卡);

proto <协议>

添加本条条目的协议。常见的值有:kernel(本条目由内核添加)、static(手动添加)、dhcp(通过 DHCP 添加)、boot (在启动时添加)、redirect (由 ICMP 重定向添加)。此外,该值还可以是 bgp、ospf 这类动态路由协议。该值可能是整数值或者一个字符串值,字符串值都可以在 /etc/iproute2/rt_protos 中找到;

src <源地址>

在使用本条路由,向目的地发送数据包时所需采用的 IP 地址;

<附加信息>

代表多个可选项,常见的有:见下面

<附加信息>:

scope :定义这条路由的范围:

global 表示有网关的单播(unicast)路由

link 表示直连的单播或广播(broadcast)路由

host 表示本地(local)路由。该值可能是一个整数值或者是字符串值,字符串值应该能在 /etc/iproute2/rt_scopes 中找到

metric <整数>:表示路由的优先级,数字越小优先级越高。最小值为 0 ,最大值为 65535

table <表名/数字>:如果一条路由不属于 main 表,则会在这里指出该路由所属的路由表

路由追踪:traceroute

该命令用于显示数据包到主机间的路径。

使用详解:

$traceroute xiaoxin123.top

traceroute to xiaoxin123.top (198.181.38.205), 30 hops max, 60 byte packets

1 10.124.224.22 (10.124.224.22) 1.228 ms 11.63.120.22 (11.63.120.22) 0.990 ms 11.63.116.22 (11.63.116.22) 0.871 ms

2 11.63.116.121 (11.63.116.121) 1.287 ms 11.63.116.77 (11.63.116.77) 1.233 ms 11.63.116.117 (11.63.116.117) 1.267 ms

3 11.48.239.69 (11.48.239.69) 0.929 ms 11.88.168.21 (11.88.168.21) 5.739 ms 11.48.239.117 (11.48.239.117) 0.909 ms

4 45.112.220.37 (45.112.220.37) 1.256 ms 45.112.220.25 (45.112.220.25) 1.291 ms 45.112.220.77 (45.112.220.77) 1.971 ms

5 157.119.193.86 (157.119.193.86) 10.308 ms 117.49.54.74 (117.49.54.74) 35.224 ms 117.49.54.102 (117.49.54.102) 8.936 ms

6 11.94.143.102 (11.94.143.102) 9.224 ms 7.991 ms 117.49.37.246 (117.49.37.246) 7.707 ms

7 * * *

8 183.2.182.113 (183.2.182.113) 10.336 ms 9.631 ms 58.61.162.161 (58.61.162.161) 7.523 ms

# 数字(第几条) ip(当前跳的所在地址) 三个时间(RTT,也就是往返时延)

# 显示* * * 的情况 :

> 可能是路由器禁止了ICMP数据包

>如果从某跳开始所有的时间都成了星号,即超时,则网络故障很有可能就出现在了这一跳

相关命令参数:

traceroute [-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]

-d 使用Socket层级的排错功能。

-f<存活数值> 设置第一个检测数据包的存活数值TTL的大小。

-F 设置勿离断位。

-g<网关> 设置来源路由网关,最多可设置8个。

-i<网络界面> 使用指定的网络界面送出数据包。

-I 使用ICMP回应取代UDP资料信息。

-m<存活数值> 设置检测数据包的最大存活数值TTL的大小。

-n 直接使用IP地址而非主机名称。

-p<通信端口> 设置UDP传输协议的通信端口。

-r 忽略普通的Routing Table,直接将数据包送到远端主机上。

-s<来源地址> 设置本地主机送出数据包的IP地址。

-t<服务类型> 设置检测数据包的TOS数值。

-v 详细显示指令的执行过程。

-w<超时秒数> 设置等待远端主机回报的时间。

-x 开启或关闭数据包的正确性检验。

简化的路由追踪命令: tracepath

$tracepath xiaoxin123.top

1?: [LOCALHOST] pmtu 1500

1: 10.124.224.22 0.844ms

1: 10.124.224.22 0.767ms

2: 11.63.116.117 1.122ms

3: 11.48.239.125 1.124ms

4: 45.112.220.37 1.194ms

5: 117.49.54.50 6.602ms

6: 117.49.37.250 7.319ms

7: no reply

8: 183.2.182.125 14.588ms asymm 7

Resume: pmtu 1500 hops 16 back 16

相关命令参数:

用法及参数

-n 显示IP,不显示主机

-l 初始化包的长度,默认65535

-b 打印主机名以及IP信息

-p 指定端口

-m 设置最大的跳跃节点数,默认是30

扩展

arp

ARP 代表“地址解析协议”,是一种用于将 IP 地址映射到局域网上的物理 MAC 地址的协议

ARP(地址解析协议)是一种网络协议,用于从 IP 地址中找出设备的硬件 (MAC) 地址。

当设备想要与本地网络上的其他设备通信时使用它,发送设备使用 ARP 将 IP 地址转换为 MAC 地址。

设备发送一个 ARP 请求消息,其中包含接收设备的 IP 地址。 本地网段上的所有设备都会看到该消息,但只有具有该 IP 地址的设备会使用包含其 MAC 地址的 ARP 回复消息进行响应。 发送设备现在有足够的信息将数据包发送到接收设备。

ARP过程的解释:

假设主机 A 想与主机 B 通信。主机 A 知道主机 B 的 IP 地址,但不知道主机 B 的 MAC 地址。为了找出主机B的MAC地址,主机A发送一个ARP请求,列出主机B的IP地址作为目的IP地址,MAC地址为FF:FF:FF:FF:FF:FF(以太网广播) .交换机会将帧转发到所有接口。

网段上的每个设备都会收到该数据包,但由于目标 IP 地址是主机 B 的 IP 地址,因此只有主机 B 会回复 ARP 回复数据包,并列出其 MAC 地址。

Linux中的arp命令是什么

ARP 代表“地址解析协议”,是一种用于将 IP 地址映射到局域网上的物理 MAC 地址的协议。

arp常用命令

# 1.查看 Linux 上的 ARP 表

arp -a

#输出:第一列是IP地址,第二列对应MAC地址。

gateway (172.16.31.253) at ee:ff:ff:ff:ff:se [ether] on eth0

#2. 指定 IP 地址来查找特定 IP 地址的 ARP 缓存条目

arp -a

#3. 删除arp表中指定的 IP 地址

arp -d 192.168.67.23

#4. 删除所有

arp -d *

#5. 添加静态条目将IP地址解析为物理地址

arp -s 192.168.67.15 00-a5-00-34-c3-09