《UNIX/Linux系统管理技术手册-读书笔记-第十五章
IP路由选择
1. 分组转发详解(路由表如何工作)
1.1 核心原则
| 原则 |
说明 |
| 下一跳路由 |
每个系统只需决定分组到达最终目的地的下一个路由器,无需预先知道完整路径 |
| 最长前缀匹配 |
路由表查找时,掩码最长的匹配项优先(最具体路由优先) |
| 默认路由(0.0.0.0/0) |
无更具体匹配时使用,指向Internet出口网关 |
| 直连网络 |
配置接口时自动添加,网关地址为0.0.0.0(直接投递,无需路由) |
1.2 路由表解读(示例网络拓扑)
场景:主机A(199.165.145.17)→ 路由器R1 → 主机B(199.165.146.4)
主机A路由表:
Destination Gateway Genmask Flags Iface
127.0.0.0 0.0.0.0 255.0.0.0 U lo
199.165.145.0 0.0.0.0 255.255.255.0 U eth0
0.0.0.0 199.165.145.24 0.0.0.0 UG eth0
- 默认路由指向R1(199.165.145.24)
- 发往199.165.146.4的分组匹配默认路由 → 转发至R1
路由器R1路由表:
Destination Gateway Genmask Flags Iface
127.0.0.0 0.0.0.0 255.0.0.0 U lo
199.165.145.0 0.0.0.0 255.255.255.0 U eth0
199.165.146.0 0.0.0.0 255.255.255.0 U eth1
0.0.0.0 199.165.146.3 0.0.0.0 UG eth1
- 匹配199.165.146.0/24 → 直连eth1 → 直接投递给主机B
- 其他流量 → 默认路由指向R2(Internet出口)
主机B路由表(正确配置):
Destination Gateway Genmask Flags Iface
127.0.0.0 0.0.0.0 255.0.0.0 U lo
199.165.145.0 199.165.146.1 255.255.255.0 U eth0
199.165.146.0 0.0.0.0 255.255.255.0 U eth0
0.0.0.0 199.165.146.3 0.0.0.0 UG eth0
- 必须同时配置到145网络的静态路由(通过R1)和默认路由(通过R2)
- 不推荐依赖ICMP重定向:重定向不可靠、增加网络负载、安全风险
1.3 IPv6路由表(示例)
Destination Gateway Flags Netif
default 2001:886b:4452::1 UGS re0
2001:886b:4452::/64 link#1 U re0
fe80::/10 ::1 UGRS lo0
fe80::%re0/64 link#1 U re0
fe80::/10 = 本地链路地址(用于OSPF等邻居发现,日常不使用)
2. 路由协议分类
2.1 距离向量协议(Distance-Vector)
| 特点 |
说明 |
| 工作原理 |
“我离网络Y有5跳,你挨着我,所以你离Y有6跳” —— 邻居互相宣告已知路由 |
| 优点 |
实现简单,配置少,通用性强 |
| 缺点 |
收敛慢,可能产生路由环路,更新频率高(“话痨”) |
| 代表协议 |
RIP(15跳限制)、EIGRP(Cisco专有)、BGP(外部路由) |
2.2 链路状态协议(Link-State)
| 特点 |
说明 |
| 工作原理 |
路由器交换连通性原始信息(“路由器X与路由器Y相邻”),各自计算完整拓扑图 |
| 优点 |
收敛快,支持多重路径,无环路 |
| 缺点 |
内存和CPU消耗大,配置复杂 |
| 代表协议 |
OSPF(唯一真正的链路状态协议) |
2.3 成本度量(Cost Metric)
- 跳数:最简单,每跳成本=1
- 带宽:高速链路成本低(Cisco OSPF默认)
- 延迟、经济成本:可自定义
- 路径总成本 = 各链路成本之和,成本最低的路径优先
2.4 内部协议 vs 外部协议
| 类型 |
作用域 |
代表协议 |
说明 |
| 内部网关协议(IGP) |
自治系统(AS)内部 |
RIP、OSPF、EIGRP |
单一组织管理,拓扑相对可控 |
| 外部网关协议(EGP) |
AS之间 |
BGP |
跨组织,需处理政策/安全/多ISP选路 |
3. 主要路由协议对比
| 协议 |
类型 |
适用规模 |
特点 |
推荐场景 |
| RIP/RIPv2 |
距离向量 |
小型(≤15跳) |
简单、通用、广播频繁 |
小型局域网、叶子网络 |
| RIPng |
距离向量 |
小型(≤15跳) |
RIP的IPv6版本 |
IPv6小型网络 |
| OSPF(v2/v3) |
链路状态 |
中大型(企业级) |
收敛快、支持多路径、区域划分 |
复杂企业网络首选 |
| EIGRP |
距离向量(增强) |
中大型 |
Cisco专有、高效、收敛快 |
仅Cisco设备环境 |
| BGP |
路径向量(外部) |
Internet骨干 |
策略丰富、支持数十万路由 |
多ISP连接、自治系统间 |
选型建议:
- 单出口网络 → 静态默认路由(无需动态协议)
- 小型多路由器网络 → RIP(简单够用)
- 大型企业网络 → OSPF(开放标准、功能完整)
- 全Cisco环境 → EIGRP(高效,但有厂商锁定风险)
- 多ISP连接 → BGP
4. 路由协议多播协调地址
| 用途 |
IPv4 |
IPv6 |
| 该子网所有系统 |
224.0.0.1 |
ff02::1 |
| 该子网所有路由器 |
224.0.0.2 |
ff02::2 |
| OSPF路由器 |
224.0.0.5 |
ff02::5 |
| OSPF DR路由器 |
224.0.0.6 |
ff02::6 |
| RIP路由器 |
224.0.0.9 |
ff02::9 |
| EIGRP路由器 |
224.0.0.10 |
ff02::10 |
💡 这些地址是链路本地多播,不跨路由器转发,用于邻居发现和路由信息交换。
5. 路由守护进程(UNIX/Linux软件实现)
5.1 routed(过时RIP实现)
| 特性 |
说明 |
| 协议 |
RIP(RIPv2支持较差,不支持RIPng) |
| 最有用模式 |
routed -q(安静模式:只侦听更新,不广播) |
| 特点 |
无需配置文件,简单但功能有限 |
| 状态 |
已过时,新环境建议使用Quagga |
5.2 Quagga(主流多协议路由守护进程)
| 特性 |
说明 |
| 架构 |
核心zebra(路由信息交换中心)+ 各协议守护进程 |
| 支持的协议 |
RIP、RIPng、OSPFv2、OSPFv3、BGP |
| 配置方式 |
各守护进程独立配置文件(/etc/quagga/)+ vtysh命令行接口 |
| 命令行风格 |
类似Cisco IOS(enable进入特权模式,config term进入配置模式) |
| 文档 |
Quagga官网有详细配置示例和FAQ |
守护进程对应关系:
| 守护进程 |
协议 |
配置文件 |
zebra |
核心路由交换 |
/etc/quagga/zebra.conf |
ripd |
RIPv2 |
/etc/quagga/ripd.conf |
ripngd |
RIPng(IPv6) |
/etc/quagga/ripngd.conf |
ospfd |
OSPFv2(IPv4) |
/etc/quagga/ospfd.conf |
ospf6d |
OSPFv3(IPv6) |
/etc/quagga/ospf6d.conf |
bgpd |
BGP |
/etc/quagga/bgpd.conf |
基本操作:
1
2
3
4
5
6
|
vtysh # 进入Quagga命令行接口
enable # 进入特权模式
configure terminal # 进入配置模式
router rip # 启用RIP
network 192.168.1.0/24 # 宣告网络
write memory # 保存配置
|
5.3 XORP(可扩展开放路由器平台)
| 特性 |
说明 |
| 目标 |
仿真完整专用路由器(路由+过滤+流量管理) |
| 支持的平台 |
Unix、FreeBSD、macOS、Windows Server |
| 独特功能 |
liveCD可直接在PC硬件上运行 |
| 定位 |
比Quagga更全面,但更复杂 |
生产建议:动态路由优先使用专用路由器(Cisco/Juniper),更可靠、更安全、性能更好。UNIX/Linux路由守护进程更适合测试网络、辅助子网、小规模场景。
6. Cisco路由器基础(IOS)
6.1 访问模式
| 模式 |
提示符 |
功能 |
| 用户模式 |
router> |
查看基本状态(show interfaces等) |
| 特权模式 |
router# |
全部配置和操作权限(需enable密码) |
| 全局配置模式 |
router(config)# |
修改配置(需从特权模式进入) |
6.2 常用命令
| 命令 |
功能 |
enable |
进入特权模式 |
config terminal |
进入全局配置模式 |
show running-config |
查看当前运行配置 |
show startup-config |
查看保存的配置 |
write memory |
将运行配置保存到NVRAM |
hostname name |
设置路由器名称 |
interface eth0/1 |
配置特定接口 |
ip address 192.168.1.1 255.255.255.0 |
设置接口IP |
no ip directed-broadcast |
禁用定向广播(安全) |
line vty 0 4 |
配置虚拟终端(SSH/telnet)访问 |
6.3 配置示例(典型企业路由器)
version 12.4
hostname acme-gw
enable secret xxxxxxxx
interface Ethernet0
description Acme internal network
ip address 192.108.21.254 255.255.255.0
no ip directed-broadcast
interface Ethernet1
description Acme backbone
ip address 192.225.33.254 255.255.255.0
no ip directed-broadcast
ip classless
line vty 0 4
password xxxxxxxx
login
end
6.4 最佳实践
| 实践 |
说明 |
| 命名路由器 |
hostname命令设置,防止误操作其他设备 |
| 备份配置 |
每晚使用scp/tftp保存运行配置 |
| VTY访问控制 |
使用访问列表限制命令行访问来源IP |
| 接口访问列表 |
控制进出流量 |
| 物理安全 |
能接触设备就能重置密码(物理安全=网络安全) |
| RANCID工具 |
每晚自动登录路由器检索配置,版本控制+差异报告 |
7. 路由策略选择指南
| 网络复杂度 |
推荐方案 |
理由 |
| 单个网络 |
无路由配置 |
无需网关 |
| 单出口网络 |
静态默认路由 |
一个出口足够,无需动态 |
| 少量网络(<5个) |
静态路由 |
手动管理简单可维护 |
| 中等复杂网络 |
静态路由 + RIP被动监听 |
RIP只用于分发,不用于计算 |
| 大型复杂网络 |
OSPF |
收敛快、无环路、支持多路径和区域划分 |
| 全Cisco环境 |
EIGRP(可选) |
高效但厂商锁定 |
| 多ISP连接 |
BGP |
政策路由、多路径选择 |
核心原则:
- 能用静态路由就用静态(最简单、最可控)
- RIP适合“叶子网络”(只需接收路由信息,无需宣告)
- OSPF是复杂网络的开放标准首选
- BGP是多ISP环境的唯一选择
8. 本章核心命令速查表
| 命令/操作 |
功能 |
netstat -rn |
查看路由表(全平台,数字形式) |
ip route show |
查看路由表(Linux推荐) |
ip route add 10.0.0.0/8 via 192.168.1.1 |
添加静态路由(Linux) |
route add -net 10.0.0.0/8 192.168.1.1 |
添加静态路由(FreeBSD) |
routed -q |
安静模式RIP守护进程(只侦听) |
vtysh |
进入Quagga命令行接口 |
enable(vtysh/IOS) |
进入特权模式 |
configure terminal(vtysh/IOS) |
进入配置模式 |
write memory(IOS) |
保存配置到NVRAM |
show running-config(IOS) |
查看当前配置 |
DBA视角补充:
- 数据库服务器路由配置:生产数据库通常只需静态默认路由(指向核心交换机/边界路由器)。只有在数据库需要跨多个子网/数据中心复制时,才需考虑动态路由或静态路由表补充。
- 跨AZ/跨地域数据库复制:云环境中的VPC路由表(AWS/GCP)取代了传统动态路由协议。DBA需理解VPC路由表、对等连接、VPN网关的配置,确保数据库复制流量走私有路径(避免公网流量费用和安全风险)。
- 网络分区与数据库可用性:在网络分区(网络分裂)场景下,动态路由协议可自动切换路径,避免数据库集群完全失联。但在云环境中,多AZ部署是更常见的容错方案。
- 排查数据库连接超时:若应用连接数据库偶尔超时,检查路由表是否正确(尤其多子网环境),使用
traceroute确认路径,用mtr持续监控丢包率。
- BGP与多ISP:若数据库需对外提供公网服务(如云数据库公网访问),且使用了多条ISP链路,需配置BGP实现链路冗余和负载均衡。但这通常由网络团队负责,DBA只需理解其对数据库连接的影响。