静态路由探究

1、路由表详解

1.1 什么是路由表?

路由表(Routing Table) 是存储在路由器或主机中的一张逻辑表,用于描述:

"去往某个目标网络 / 主机,应该从哪个接口发出,交给谁(下一跳)"

简单一句话:

路由表决定了 IP 数据包"往哪走、从哪走、交给谁"

路由表中保存的是网络拓扑的抽象结果,它既可以:

  • 由管理员手工配置(静态路由)
  • 也可以由路由协议自动学习(动态路由,如 OSPF、RIP、BGP)

本文主要讨论 Linux 下的静态路由表。

1.2 Linux 中查看路由表

在 Linux 系统中,可以使用 route 命令查看当前内核路由表:

bash 复制代码
[root@linux ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         192.168.10.30   0.0.0.0         UG    0      0        0 eth0

-n 表示不解析主机名和服务名,直接显示 IP,更清晰也更高效。

1.3 路由表项结构详解

一张路由表由 多条路由表项(Route Entry) 组成。

每发送一个 IP 报文,内核都会遍历这张表,选择一条最合适的路由。

名称 含义
Destination 目标网络或目标主机(0.0.0.0 表示默认路由)
Gateway 下一跳地址;为 0.0.0.0 表示直连网络
Genmask 网络掩码,用于匹配目标 IP
Flags 路由标志位
Metric 路由度量值(优先级参考)
Ref 被引用次数(已废弃,通常为 0)
Use 被查找使用的次数
Iface 出口网络接口

1.4 Flags 字段说明

名称 含义
U 路由已启用(Up)
H 主机路由(Host)
G 需要经过网关(Gateway)
D 动态路由生成
R 动态路由重新初始化
M 被路由守护进程修改
路由被禁用

最常见的组合是:

  • U:直连路由
  • UG:通过网关的路由(如默认路由)

1.5 两个"特殊"的路由表项

1️⃣ Gateway 为 0.0.0.0

Gateway = 0.0.0.0

表示:

目标网络与本机在同一个二层网络中,可以直接通信,不需要经过网关

此时:

  • 内核会通过 ARP 查询目标 IP 对应的 MAC 地址
  • 然后直接从 Iface 指定的网卡发出

2️⃣ Destination + Genmask 都为 0.0.0.0

0.0.0.0    192.168.10.30    0.0.0.0

这是 默认路由(Default Route),含义是:

"如果没有任何更精确的路由能匹配,就走这条路"

2 、路由表的匹配原理(核心)

1️⃣ 匹配流程

当系统需要发送一个 IP 报文时:

  1. 取出 目标 IP
  2. 用目标 IP 与每一条路由表项的 Genmask 做 按位与
  3. 将结果与 Destination 比较
  4. 相同 → 命中该路由

2️⃣ 命中后的行为

  • Gateway ≠ 0
    • 目标不在本地网段
    • 修改 目标 MAC 为网关 MAC
    • IP 目的地址不变,从 Iface 指定的网卡发送给目标主机
  • Gateway = 0
    • 目标在本地网段
    • 直接从 Iface 指定的网卡发送给目标主机

3️⃣ 没有任何匹配?

  • 查找默认路由
  • 没有默认路由 → 直接丢包

3、路由类型划分

3.1 主机路由

指向单个 IP 地址的路由。

c 复制代码
route add -host 8.8.8.8 gw 192.168.2.1 dev eth0

特点:

  • 掩码默认为 255.255.255.255
  • 优先级 高于网络路由

3.2 网络路由

指向一个网络段:

c 复制代码
route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.2.1 dev eth0

用于描述:

  • 可达的远端子网
  • 企业网络、跨网段通信

3.3 默认路由

兜底方案:

c 复制代码
route add default gw 192.168.2.1 dev eth0

添加前一定要确认:网关地址可达

4、总结

4.1 路由优先级与"最长前缀匹配"

当多条路由都能匹配同一个目标 IP 时,Linux 使用:

最长前缀匹配原则(Longest Prefix Match)

优先级从高到低:

  • 主机路由 /32
  • 网络路由(掩码越长越优先)
  • 默认路由 /0

举例:

bash 复制代码
8.8.8.8/32        → 优先
8.8.8.0/24
0.0.0.0/0

4.2 一个完整的转发流程示例

对于一个跨网段的 IP 数据报:

  1. 查询路由表
  2. 命中最精确的路由项
  3. 根据路由项选择出口网卡
  4. 若需网关:
    a. 查 ARP
    b. 修改目标 MAC
  5. 发送数据包
  6. 无匹配且无默认路由 → 丢弃

4.3 路由表工作的层次

路由表工作在:

OSI 七层模型的网络层(Layer 3)

但要注意:

真正的数据转发还依赖:

  • 二层 ARP
  • 网卡驱动
  • 物理链路
相关推荐
哼?~4 小时前
NAT、代理服务、内网穿透
网络
Upsy-Daisy5 小时前
AI Agent 项目学习笔记(二):Spring AI 与 ChatClient 主链路解析
人工智能·笔记·学习
杨浦老苏6 小时前
AI原生笔记应用Tolaria
笔记·ai·markdown·obsidian
上海云盾-小余7 小时前
内网边界安全管控:访问权限隔离与入侵阻断方案
网络·安全·web安全
南京码讯光电技术有限公司7 小时前
工业无线AP选型指南:从WiFi 5到WiFi 6+5G CPE,如何构建全覆盖、零漫游、高可靠的智能工厂网络?
服务器·网络·5g
中屹指纹浏览器7 小时前
浏览器网络栈隔离技术研究:TCP/IP底层指纹生成与规避原理
经验分享·笔记
sulikey7 小时前
个人Linux操作系统学习笔记2 - gcc与库的理解
linux·笔记·学习·操作系统·gcc·
优橙教育8 小时前
5G网络优化关键参数解读:从入门到实战
网络·学习·5g
zt1985q8 小时前
本地部署网页监控工具 Webmonitor 并实现外部访问
运维·服务器·网络·网络协议
愚昧之山绝望之谷开悟之坡8 小时前
什么是Linter?什么是沙箱!
linux·笔记