
OSPF之重分发、默认路由注入与虚链路(高级特性与综合排障)
📘 OSPF 第五阶段实验笔记:重分发、默认路由注入与虚链路(高级特性与综合排障)
适用场景:公司有两个分部,分别运行OSPF和RIP协议,需要互通;总部路由器需要自动下发上网网关;一个非骨干区域(Area 2)因物理链路限制无法直连Area 0,需要借道Area 1绕行。
一、核心概念铺垫(先理解为什么需要它们)
| 技术 | 白话解释 | 为什么需要它? |
|---|---|---|
| 重分发(Route Redistribution) | 把其他协议(如静态路由、RIP、BGP)翻译成OSPF的路由,让OSPF网络知道“外面还有路”。 | 公司网络不可能只用OSPF,总会连接友商设备或专线,需要把对方的路由“搬运”进来。 |
| 默认路由注入(Default-Route Advertise) | ABR或ASBR主动向OSPF域内发一条“出门右拐”的路标(0.0.0.0/0)。 |
让内部所有路由器自动知道通往Internet的总出口,不用给每台设备手动配静态默认路由。 |
| 虚链路(Virtual Link) | 在两个ABR之间拉一条“逻辑隧道”,让一个不直连Area 0的区域通过第三个区域间接连接到Area 0。 | 物理布线受限时(比如Area 2只有一根线连到Area 1,Area 1连Area 0),必须靠虚链路让Area 2的逻辑连接到Area 0,否则Area 2的路由无法传遍全网。 |
二、实验拓扑与IP规划(四台设备,多协议+跨区域)
| 设备 | 接口 | IP地址/掩码 | 所属区域/协议 | 说明 |
|---|---|---|---|---|
| R1 | G0/0/0, Loop0 | 10.0.12.1/24, 1.1.1.1/32 |
Area 0 | 骨干路由器,观察汇总效果 |
| R2(ABR) | G0/0/0, G0/0/1 | 10.0.12.2/24, 10.0.23.2/24 |
Area 0 / Area 1 | ABR,连接Area 0和Area 1 |
| R3(ASBR + ABR) | G0/0/1, G0/0/2, Loop0 | 10.0.23.3/24, 10.0.34.3/24, 3.3.3.3/32 |
Area 1 / Area 2 | 同时是ABR(连接Area1/2)和ASBR(引入RIP) |
| R4(纯内部) | G0/0/2, Loop0 | 10.0.34.4/24, 4.4.4.4/32 |
Area 2 | Area 2内部路由器,不直接连Area 0 |
另外在R3上起一个RIP进程,模拟“另一家公司的网络”:
- R3的
interface LoopBack 10配172.16.10.1/24,并在RIP进程中宣告,模拟外部网络。
三、第一部分:重分发(将其他协议的路由“翻译”进OSPF)
第一步:在R3上配置RIP协议(模拟外部网络)
1 | [R3] rip 1 |
| 命令/参数 | 白话解释 |
|---|---|
rip 1 |
启动一个RIP进程。RIP是一种距离矢量路由协议,以“跳数”计算路径(最大15跳)。 |
version 2 |
指定RIP版本2(支持CIDR和子网掩码,比version 1更常用)。 |
network 172.16.0.0 |
在RIP中宣告网段,注意这里只能写主类网段(A/B/C类默认掩码),不能写具体子网。 |
第二步:在R3上配置OSPF重分发(将RIP路由翻译成OSPF)
1 | [R3] ospf 1 |
| 命令/参数 | 拆解 | 白话解释 |
|---|---|---|
import-route |
引入路由 | 告诉OSPF:“去把RIP进程1里学到的所有路由,全部翻译成OSPF的Type 5 LSA(外部路由) 发出去。” |
rip 1 |
指定源协议 | 指定要从哪个协议进程里“搬运”路由。 |
进阶控制(增加成本/类型):
1 | [R3-ospf-1] import-route rip 1 cost 10 type 1 |
| 参数 | 解释 |
|---|---|
cost 10 |
手动设置这条外部路由的开销为10(默认为1)。 |
type 1 |
外部路由类型为E1(累计内部开销+外部开销)。默认是 E2(只计外部开销,不累计内部路径开销)。 考试重点:E1路径更精确,适合在复杂拓扑中选路;E2更简单,适合出口单一的汇聚点。 |
验证重分发是否成功:
在R1上敲 display ip routing-table | include 172.16,如果看到:
1 | 172.16.10.0/24 OSPF 10 11 10.0.12.2 G0/0/0 |
说明重分发成功。(Proto显示为OSPF,说明它已经被翻译成OSPF路由了)
四、第二部分:默认路由注入(让全网自动获得“上网网关”)
在实际企业网中,只有连接运营商的那台路由器(通常是出口防火墙或边界路由器)有一条指向公网的静态默认路由(ip route-static 0.0.0.0 0.0.0.0 x.x.x.x)。我们希望在R1(边界路由器)上配置这条静态默认路由,并把它注入到OSPF域内,让R2/R3/R4都能自动学到0.0.0.0/0。
第一步:在R1上配置指向外网的静态默认路由(模拟连运营商)
1 | [R1] ip route-static 0.0.0.0 0.0.0.0 100.1.1.1 // 假设对端运营商IP是100.1.1.1(仅模拟) |
(注意:在eNSP中,这个IP不一定存在,但我们只需在R1上制造一条静态默认路由即可)
第二步:在R1的OSPF进程里注入这条默认路由
1 | [R1] ospf 1 |
| 命令 | 解释 |
|---|---|
default-route-advertise |
这条命令必须在ASBR(引入外部路由的路由器)上敲。它会检查本设备路由表中是否存在0.0.0.0/0(静态或其它协议学到的),如果存在,就生成一条Type 5 LSA(默认路由)发给全网。ASBR一般为引入外部路由的路由器就是ASBR一个网络中可以有多个ASBR,例如AR3为RIP的ASBR,AR1作为上网的ASBR,ASBR是一个动作,只要执行default-route-advertise(下发默认路由)与import-route(引入外部路由)那么他就是ASBR |
如果R1路由表里没有默认路由,但想强行下发(比如用于测试):
1 | [R1-ospf-1] default-route-advertise always |
| 参数 | 解释 |
|---|---|
always |
强制执行。即使本设备路由表里没有默认路由,也强行向OSPF域内发一条默认路由(常用于备份出口场景)。 |
验证默认路由是否注入成功:
在R4上敲 display ip routing-table | include 0.0.0.0,如果看到:
1 | 0.0.0.0/0 OSPF 10 1 10.0.34.3 G0/0/2 |
说明R4已经学到了通往互联网的默认网关。
五、第三部分:虚链路(Virtual-Link)—— 拯救“孤儿区域”
背景:Area 2(R4所在区域)只连接了Area 1(R3),没有物理链路直连Area 0。在OSPF规则中,所有非骨干区域(非0)必须直接或通过虚链路连接到Area 0。如果不做虚链路,R4能学到Area 1内部的3.3.3.3,但绝对学不到Area 0的1.1.1.1,因为R3(ABR)不会把Area 2的路由传给Area 0(因为Area 2不满足连接到Area 0的条件)。
解决方案:在R2(Area 0/1的ABR)和R3(Area 1/2的ABR)之间建立一条虚链路(Virtual Link),让Area 2“假装”通过Area 1这堵墙,逻辑上直接连到了Area 0。
第一步:在R2(连接Area 0的ABR)上配置虚链路
1 | [R2] ospf 1 |
第二步:在R3(连接Area 2的ABR)上配置虚链路(对端Router ID必须与R2配置的相对应)
1 | [R3] ospf 1 |
| 命令/参数 | 拆解 | 白话解释 |
|---|---|---|
area 1 |
虚链路所在的中转区域(Transit Area) | 虚链路必须在**同一个非骨干区域(这里是Area 1)**的两端配置。两端ABR必须都进入到这个区域的视图下配置。 |
vlink-peer |
虚链路对端(Virtual Link Peer) | 指定对端ABR的Router ID(不是IP地址!)。 - R2上的对端是R3的Router ID: 3.3.3.3。- R3上的对端是R2的Router ID: 2.2.2.2。注意:如果写错Router ID,虚链路永远起不来。 |
验证虚链路是否建立成功:
在R2上敲:
1 | [R2] display ospf vlink |
如果输出中 State 显示为 Full,说明虚链路已经建立成功。此时在R4上敲 display ip routing-table,你应该能看到 1.1.1.1/32(来自Area 0)和 10.0.12.0/24 了。
虚链路配置要点(考试高频):
- 中转区域(Transit Area)不能是Stub/NSSA。如果Area 1被配置成了Stub,虚链路会建立失败。必须先把Area 1的
stub或nssa配置去掉,或者改用普通区域。 - 两端必须互指Router ID,而非接口IP。
- 虚链路也支持认证:在
vlink-peer后面可以加authentication-mode md5参数,和接口认证的写法一致。
六、第五阶段排错流程(新手避坑指南)
❌ 场景1:重分发后,在R1上看不到外部路由(172.16.10.0)
排查步骤:
- 在R3上敲
display ip routing-table protocol rip,确认R3自己是否学到了RIP路由(如果没有,检查RIP配置和环回口IP是否在同一个主类网段)。 - 在R3上敲
display ospf lsdb | include 172.16,看R3是否生成了Type 5 LSA(如果没生成,检查import-route命令是否敲在OSPF进程视图下)。 - 检查Area 1是否被配置成了Stub区域(Stub区域禁止Type 5 LSA进入,如果Area 1是Stub,需要改成NSSA或者
no-summary)。
❌ 场景2:配置了default-route-advertise但内部路由器没收到默认路由
排查步骤:
- 在R1上敲
display ip routing-table | include 0.0.0.0,确认R1自己路由表里确实有静态默认路由(如果用的是always参数则忽略此步)。 - 在R1上敲
display ospf lsdb | include 0.0.0.0,看R1是否生成了Type 5 LSA(LinkState ID应为0.0.0.0)。 - 检查中间的ABR(R2/R3)是否过滤了Type 5 LSA(比如配置了
area 1 stub会丢弃Type 5,必须配置NSSA或普通区域)。
❌ 场景3:虚链路状态卡在 Down 或 Init
排查步骤:
- 检查两端配置的
vlink-peer是否写的是对方的Router ID(而不是IP地址)。 - 检查中转区域(Area 1)是否为普通区域(不能是Stub或NSSA)。
- 检查R2和R3之间是否能够IP层互通(必须能
ping通对方的接口IP10.0.23.2和10.0.23.3)。 - 检查两端是否配置了认证:如果虚链路区域(Area 1)配置了区域认证,那么虚链路也会继承认证,必须保证两端认证密码一致。
七、第五阶段核心笔记总结(速记口诀)
| 场景 | 命令(在谁上敲) | 白话解释 |
|---|---|---|
| 把其他协议的路由搬进OSPF | import-route rip 1(在ASBR的OSPF进程视图下) |
“把RIP学到的路由全部翻译成OSPF的外部路由(Type 5)。” |
| 给全网发一条“出门右拐”的路标 | default-route-advertise(在ASBR的OSPF进程视图下) |
“我这里有通往Internet的大门,你们都来我这上网。” |
| 强行下发默认路由(不管自己有没有) | default-route-advertise always |
“即使我没有默认路由,我也硬发一条给你们,因为我是备份出口。” |
| 让孤儿区域(Area 2)连接到Area 0 | area 1 + vlink-peer 对方Router ID(在两端ABR上配置) |
“虽然我们隔着Area 1,但我俩建个秘密隧道,让Area 2的逻辑直连Area 0。” |


.webp)

