默认路由与路由汇总
High Contrast
Dark Mode
Light Mode
Sepia
Forest
2 min read322 words

默认路由与路由汇总

默认路由让所有"不知道去哪"的流量有了出口;路由汇总把几十条明细路由压缩成一条,减少路由表大小,提升转发效率。两者是路由工程师日常工具箱的标配。


默认路由:所有流量的兜底

默认路由 = 0.0.0.0/0
任何 IP 地址都匹配 0.0.0.0/0(前缀长度 0,匹配所有)
但最长前缀匹配规则使它优先级最低——只有没有更具体路由时才用

家用路由器/NAT 网关

# 场景:Linux 服务器作为出口网关
# 内网:10.0.0.0/8
# 公网接口:eth0(ISP 分配 IP)
# 配置默认路由
ip route add default via 203.0.113.1 dev eth0
# 开启 IP 转发(Linux 作为路由器必须开启)
sysctl -w net.ipv4.ip_forward=1
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
# 配置 MASQUERADE(源 NAT,内网出口)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

双默认路由(ISP 冗余)

# 两条 ISP 链路,主用 + 备用
# 主路由(metric 低 = 优先)
ip route add default via 203.0.113.1 dev eth0 metric 10
# 备用路由(metric 高 = 次选)
ip route add default via 198.51.100.1 dev eth1 metric 20
# 主链路断开时,备用路由自动生效
# 配合 keepalived 或 mwan3 实现真正的故障切换

路由汇总(Route Summarization)

将多条明细路由合并为一条汇总路由:

计算汇总路由

需要汇总的 4 条路由:
192.168.0.0/24
192.168.1.0/24
192.168.2.0/24
192.168.3.0/24
二进制对齐:
192.168.0.0 = 11000000.10101000.00000000.xxxxxxxx
192.168.1.0 = 11000000.10101000.00000001.xxxxxxxx
192.168.2.0 = 11000000.10101000.00000010.xxxxxxxx
192.168.3.0 = 11000000.10101000.00000011.xxxxxxxx
↑↑
第 22 位开始出现差异
公共前缀 = 前 22 位
汇总路由 = 192.168.0.0/22
验证:
192.168.0.0/22 包含 192.168.0.0 ~ 192.168.3.255 ✅

更多汇总示例

10.0.0.0/24  ┐
10.0.1.0/24  ├─→ 10.0.0.0/23   (.0 和 .1 的前 23 位相同)
┘
10.0.0.0/24  ┐
10.0.1.0/24  ├─→ 10.0.0.0/22   (.0-.3 的前 22 位相同)
10.0.2.0/24  │
10.0.3.0/24  ┘
172.16.0.0/16 ┐
172.17.0.0/16 ├─→ 172.16.0.0/15
┘

汇总路由的注意事项

⚠️ 危险:过度汇总可能导致流量黑洞
场景:
分支 A 有:10.0.1.0/24
分支 B 有:10.0.2.0/24
总部汇总为:10.0.0.0/22 发布给 ISP
如果 10.0.3.0/24(汇总范围内,但没有实际设备)
→ 外部目标 10.0.3.x 的流量被路由到总部
→ 总部没有明细路由 → 流量黑洞
解决方案:
配置黑洞路由作为防护:
ip route add blackhole 10.0.0.0/22 metric 255
(metric 高 = 最后选择,只有没有明细路由时才触发)

路由策略(Policy Routing)

基于源 IP 或其他条件,将不同流量发往不同路径:

# 场景:员工流量走 ISP1,服务器流量走 ISP2
# 创建两张路由表
echo "200 isp1_table" >> /etc/iproute2/rt_tables
echo "201 isp2_table" >> /etc/iproute2/rt_tables
# isp1_table:默认走 ISP1
ip route add default via 203.0.113.1 table isp1_table
# isp2_table:默认走 ISP2
ip route add default via 198.51.100.1 table isp2_table
# 策略规则:
# 员工网段(10.0.10.0/24)用 isp1_table
ip rule add from 10.0.10.0/24 table isp1_table priority 100
# 服务器网段(10.0.20.0/24)用 isp2_table
ip rule add from 10.0.20.0/24 table isp2_table priority 100
# 查看路由策略规则
ip rule show

验证与监控

# 查看完整路由表
ip route show table all
# 追踪特定目标的路由选择
ip route get 8.8.8.8
# 输出:8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.100
# 路由变化监控(实时)
ip monitor route
# 路由表统计
ip route show | wc -l
# 检查路由是否对称(去程和回程一致)
traceroute 10.0.30.100       # 从本机出发
# 在 10.0.30.100 上执行:
traceroute 10.0.10.100       # 从目标出发
# 对比两条路径是否相同

CCNA 对应考点

考纲位置:Domain 3.3 — Configure and verify static routing Domain 3.4 — Configure and verify single area OSPFv2

高频考题: - 默认路由的写法(0.0.0.0 0.0.0.00.0.0.0/0) - 路由汇总计算(给定 4 个 /24,求汇总后的 /22) - 末梢网络(Stub Network)使用默认路由


下一章OSPF 与路由协议进阶——静态路由适合小型网络,10 个路由器以上就该考虑 OSPF 这样的动态路由协议了。