《Linux 中 ip route show 输出结果解析及关键概念》
以下是对 ip route show 输出结果的详细解析,帮助你理解每条路由的含义及作用:
一、路由表整体结构
Linux 路由表中的每条条目包含 目标网络 / 主机、下一跳网关、出接口、路由协议、作用域、源地址、度量值 等信息。当前输出(以 [root@VM-20-4-centos ~]# ip route show 为例)共有 3 条路由:
二、逐条解析路由条目
1. 默认路由(Default Route)
default via 10.2.20.1 dev eth0 
目标网络:default(等价于 0.0.0.0/0),匹配所有未明确匹配其他路由的流量。
下一跳网关(via):10.2.20.1,所有匹配默认路由的流量将被发送到该网关。
出接口(dev):eth0,流量从物理网卡 eth0 发出。
作用:这是系统访问互联网或非本地网络的 “默认出口”。例如,当访问 8.8.8.8 时,若没有更具体的路由匹配,流量会通过 eth0 发送到 10.2.20.1 网关。
2. 本地网络路由(直连路由)
10.2.20.0/22 dev eth0 proto kernel scope link src 10.2.20.4 
目标网络:10.2.20.0/22,子网掩码为 255.255.252.0,表示网络范围是 10.2.20.0`` ~ ``10.2.23.255(共 1024 个 IP)。
出接口(dev):eth0,该网络直接通过 eth0 接口连接。
路由协议(proto kernel):表示这条路由由内核自动生成(通常通过 DHCP 或静态配置)。
作用域(scope link):表示该路由的作用范围是 “链路本地”,即仅在当前网络接口(eth0)所在的链路内有效。
源地址(src 10.2.20.4):当从该接口发送数据包时,默认使用 10.2.20.4 作为源 IP 地址(通常是接口的 IP 地址)。
作用:这是本地网络的直连路由,内核通过该路由直接与同一子网内的设备通信(无需经过网关)。
3. 链路本地地址路由(Link-Local Route)
169.254.0.0/16 dev eth0 scope link metric 1002 
目标网络:169.254.0.0/16,属于 APIPA(自动专用 IP 寻址) 地址段,用于当设备无法获取 DHCP 地址时的临时通信。
出接口(dev):eth0,该网络通过 eth0 接口访问。
作用域(scope link):仅在当前链路内有效,不能用于跨网段通信。
度量值(metric 1002):表示路由的优先级,数值越小优先级越高。此处 1002 较高,说明这是一条备用路由(当主路由失效时才会使用)。
作用:若 eth0 未获取到有效 IP 地址(如 DHCP 失败),系统会自动分配 169.254.x.x 地址,通过此路由与同网段设备通信(仅限本地链路)。
三、关键概念补充
1. 路由优先级(Metric)
度量值(metric)决定路由的优先级,数值越小越优先。
例如:默认路由通常没有显式 metric(优先级最高),而链路本地路由的 metric 较高(仅作备用)。
2. 直连路由(Direct Route)
当目标网络是接口所在的子网时,内核会自动添加直连路由(如 10.2.20.0/22),无需指定网关,直接通过接口通信。
3. 默认路由的重要性
若系统需要访问互联网,必须存在指向有效网关的默认路由(如 default via ``10.2.20.1`` dev eth0)。
四、验证与常见操作
1. 查看接口 IP 地址
ip addr show eth0 \# 输出应包含 \`10.2.20.4/22\`,与路由条目中的 \`src 10.2.20.4\` 对应。
2. 测试网络连通性
访问默认网关:ping ``10.2.20.1(验证网关可达)。
访问本地网络:ping ``10.2.20.5(同一子网内设备,直接通信)。
访问外部网络:ping ``8.8.8.8(通过默认路由转发)。
3. 修改路由(需谨慎)
添加默认路由:ip route add default via <网关> dev <接口>
删除路由:ip route del <目标网络> dev <接口>
总结
当前路由表配置表明:
服务器通过 eth0 连接到 10.2.20.0/22 本地网络,IP 地址为 10.2.20.4。
默认网关为 10.2.20.1,用于访问外部网络。
链路本地路由 169.254.0.0/16 作为备用,通常无需手动干预。
若网络配置正常,上述路由已满足基本通信需求。如需调整网络(如更换网关、添加新子网),需根据实际场景修改路由表或接口配置。
