Linux 路由状态决定对于某个 IP 目标,哪些下一跳、接口和源地址符合条件。旧式 route -n 视图仍然可见,但 ip route 能更直接地公开现代内核路由概念。
路由 · 第 2 课
路由表
学习如何读取 Linux 路由,并检查为某个目标选择的路由。
阅读 IPv4 路由
示例输出如下:
$ ip -4 route show
default via 192.168.224.2 dev eth0 proto dhcp src 192.168.224.10 metric 100
192.168.224.0/24 dev eth0 proto kernel scope link src 192.168.224.10 metric 100
直连 /24 路由会将匹配的目标直接通过 eth0 发送。默认路由使用下一跳网关 192.168.224.2。proto 描述路由的安装方式,src 是匹配流量的首选源地址,度量值则帮助排列其他方面可比的路由。
via 192.168.224.2 表示什么?
直连路由与默认路由
带有 scope link 且没有 via 下一跳的路由,会把该前缀视为可通过接口直接到达。默认路由匹配每个地址,但任何符合条件且更具体的路由都会优先于它。
直连的 scope link 目标通常如何到达?
前缀长度与度量值
路由选择会考虑策略规则,并选择最长的合格前缀。度量值用于排列适当的可比路由;低度量值默认路由不会仅凭数字较小就覆盖匹配的 /24。
哪条路由通常对 192.168.224.50 匹配得更具体?
策略规则与多张路由表
Linux 可以按照 ip rule 策略,根据源地址、标记、接口或其他选择条件查询多张路由表。因此,只查看主路由表可能会遗漏实际路径:
$ ip rule show
$ ip route show table all
网络命名空间和 VRF 也可以拥有独立状态。检查时应使用与受影响进程相同的上下文。
为什么仅运行 ip route show 可能无法解释应用程序路径?
查询生效路由
让内核评估目标和可选源地址:
$ ip route get 203.0.113.10
$ ip route get 203.0.113.10 from 192.168.224.10
结果预测当前时刻的本地查找。它不会发送探测,也不能证明邻居、下游、防火墙或应用程序可达。
ip route get 不会做什么?
课程已完成
你已完成 路由表
现在,你可以读取 Linux 路由条目并查询实际生效的本地决策。
区分直连路由与经由网关的路由。
阅读前缀、接口、协议、源地址和度量值字段。
在比较相关度量值前应用最长前缀匹配。
考虑策略路由表、命名空间和 VRF。
将
ip route get视为查找,而不是可达性测试。