ip route show
命令用于显示当前路由表中的所有路由规则。输出是 ip route show
命令的结果,下面是对输出内容的详细解读:
命令
ip route show
输出
default via 192.168.3.1 dev enp5s0 proto dhcp metric 100
192.168.3.0/24 dev enp5s0 proto kernel scope link src 192.168.3.181 metric 100
解释
1. 默认路由
default via 192.168.3.1 dev enp5s0 proto dhcp metric 100
-
default
:- 表示这是默认路由。默认路由是用于处理那些目标地址不匹配其他路由规则的数据包的路由。
-
via 192.168.3.1
:- 表示数据包应该通过 IP 地址
192.168.3.1
进行转发。这个地址是网关的 IP 地址,也就是连接到外部网络(例如互联网)的路由器或网关的地址。
- 表示数据包应该通过 IP 地址
-
dev enp5s0
:- 指定数据包将通过网络接口
enp5s0
发送。enp5s0
是你的网络接口的名称。
- 指定数据包将通过网络接口
-
proto dhcp
:- 表示这个路由是通过 DHCP 协议自动配置的。DHCP(动态主机配置协议)通常用于自动分配 IP 地址和网络配置。
-
metric 100
:- 路由的优先级指标。
metric
值越低,路由的优先级越高。如果存在多个路由规则可以匹配相同的目标地址,则优先使用metric
值最小的路由。
- 路由的优先级指标。
2. 本地网络路由
192.168.3.0/24 dev enp5s0 proto kernel scope link src 192.168.3.181 metric 100
-
192.168.3.0/24
:- 这是一个子网的网络地址和子网掩码。
192.168.3.0/24
表示网络地址为192.168.3.0
,子网掩码为255.255.255.0
(或 /24),用于指定这个网络范围。
- 这是一个子网的网络地址和子网掩码。
-
dev enp5s0
:- 数据包将在
enp5s0
网络接口上进行发送或接收。这个接口用于处理该网络的流量。
- 数据包将在
-
proto kernel
:- 表示这条路由是由内核自动添加的,通常在系统启动时根据网络接口的配置自动创建。
-
scope link
:- 表示这条路由的范围是链路级的(link-local)。它用于处理在本地网络接口上直接通信的数据包。
-
src 192.168.3.181
:- 指定源 IP 地址
192.168.3.181
。这是从本机enp5s0
接口发送的数据包使用的源地址。这个地址通常是本地接口的 IP 地址。
- 指定源 IP 地址
-
metric 100
:- 路由的优先级指标。与默认路由的
metric
相同,用于确定优先级。
- 路由的优先级指标。与默认路由的
总结
- 默认路由: 所有目标地址不匹配其他路由的流量都会通过网关
192.168.3.1
和enp5s0
接口发送。 - 本地网络路由: 处理与
192.168.3.0/24
网络相关的流量,通过本地接口enp5s0
,并且使用源地址192.168.3.181
。
这些路由规则确保了本地网络和外部网络(通过网关)之间的正确数据包转发。
默认路由表
ip route show
命令的输出内容属于同一个路由表。Linux 系统中,默认情况下使用主路由表(编号为 254 的 main
表)进行路由管理。以下是详细解释:
路由表结构
在 Linux 系统中,路由表结构通常包括多个路由条目,这些条目共同组成一个路由表。每个条目定义了一条路由规则,指定了如何处理发往不同目标地址的数据包。
ip route show
命令的输出
default via 192.168.3.1 dev enp5s0 proto dhcp metric 100
192.168.3.0/24 dev enp5s0 proto kernel scope link src 192.168.3.181 metric 100
解释
这两个条目共同组成了主路由表中的内容。具体来说:
- 第一条:定义了默认路由规则,所有未匹配其他路由规则的数据包都通过网关
192.168.3.1
和接口enp5s0
发送。 - 第二条:定义了本地网络
192.168.3.0/24
的路由规则,通过接口enp5s0
发送数据包,源地址为192.168.3.181
。
总结
- 这些路由条目都是主路由表的一部分。
ip route show
命令显示的是主路由表的内容。- 因此,这些条目属于 同一张路由表。
不同路由表的管理通常需要使用 ip route show table [table_number]
命令来查看特定编号的路由表,而 ip route show
命令默认显示的是主路由表。