.webp)
OSPF之特殊路由与路由优化
📘 OSPF 第三阶段实验笔记:特殊区域与路由优化(Stub / Totally Stub / NSSA)
适用场景:在一个多区域OSPF网络中,边缘区域(如分公司、监控网段)的路由器性能较弱,不需要知道全网详细的外部路由(比如互联网路由),只需要知道“怎么走出去”即可。
一、核心概念铺垫(先理解“为什么要学这个”)
问题场景:
假设你有Area 0(骨干区)、Area 1(办公区)、Area 2(监控区)。Area 2里有200台监控摄像头,它们不需要知道总部有多少网段,也不需要知道互联网怎么走,它们只需要配置好“默认路由”把所有外网流量甩给总部即可。
如果让Area 2接收全网的Type 3(区域间)和Type 5(外部引入)LSA,路由表里会有成百上千条路由,会耗尽摄像头上联交换机的内存。
解决方案:
把Area 2配置为特殊区域,让ABR(区域边界路由器)代替该区域里的路由器向外发请求,只给它们留下一句“实在不行,找我就对了”(默认路由 0.0.0.0/0)。
二、OSPF特殊区域的三大类型(考试必须分清)
| 区域类型 | 允许进入的LSA类型 | 是否保留默认路由 | 可否引入外部路由(重分发) |
|---|---|---|---|
| 普通区域 | Type 1, 2, 3, 4, 5 | 无(按需) | ✅ 可以 |
| Stub(末节区域) | Type 1, 2, 3(不接收4/5) | ✅ 自动注入一条(0.0.0.0/0) | ❌ 禁止 |
| Totally Stub(完全末节) | 只有 Type 1, 2(不收3/4/5) | ✅ 自动注入一条(0.0.0.0/0) | ❌ 禁止 |
| NSSA(非完全末节) | Type 1, 2, 3(不收4/5),但可生成Type 7 | ✅ 可手动注入 | ✅ 可以(外部路由被转换成Type 7) |
记忆口诀(新手向):
- Stub = “我啥也不想看,你给我一条默认路由就行”。
- Totally Stub = “我连区域间的细路由都不想看,默认路由就够了”。
- NSSA = “我也是末节,但我自己也要引入外部路由(比如把另一家公司的网段带进来)”。
三、实验拓扑与IP规划(基于第二阶段扩展)
沿用第二阶段的三台设备,在Area 1里模拟“外部路由引入”的场景。
| 设备 | 接口 | IP地址/掩码 | 所属OSPF区域 | 说明 |
|---|---|---|---|---|
| R1 | G0/0/0 / Loop0 | 10.0.12.1/24 / 1.1.1.1/32 |
Area 0 | 骨干路由器 |
| R2 | G0/0/0 / G0/0/1 | 10.0.12.2/24 / 10.0.23.2/24 |
Area 0 / Area 1 | ABR(区域边界路由器) |
| R3 | G0/0/1 / Loop0 | 10.0.23.3/24 / 3.3.3.3/32 |
Area 1 | 末节区域路由器 |
| R3 | 静态路由(模拟外部网络) | 4.4.4.4/32(下一跳出接口Null 0) |
— | 模拟“外部公司网段” |
四、配置流程与命令详解
第一步:搭好OSPF基础(先确保第二阶段已经跑通)
在R1、R2、R3上配好基础IP和OSPF宣告(参考第二阶段笔记),确保 display ospf peer brief 显示R1-R2、R2-R3邻居均为Full。
第二步:在R3上引入一条外部路由(模拟连接了一个外部网络)
1 | [R3] ip route-static 4.4.4.4 32 NULL 0 |
| 命令 | 白话解释 |
|---|---|
ip route-static 4.4.4.4 32 NULL 0 |
写一条静态路由指向“黑洞”接口(NULL 0),表示这个网段存在于本设备上(实际工作中可能是指向另一台外部路由器)。 |
import-route static |
把静态路由“引入”OSPF,让全网都知道 4.4.4.4 这个网段。这条路由在OSPF里会变成 Type 5 LSA(外部路由)。 |
第三步:配置 Stub 区域(让Area 1成为“末节区域”)
关键约束:在Stub区域中,该区域内的所有路由器都必须配置 stub 命令(包括ABR R2 和内部路由器R3)。
R3配置:
1 | [R3] ospf 1 |
R2配置(ABR):
1 | [R2] ospf 1 |
验证命令:
1 | [R3] display ip routing-table |
此时,你会在R3的路由表里看到一条:
1 | 0.0.0.0/0 OSPF 10 1 10.0.23.2 G0/0/1 |
解释:R3不再接收4.4.4.4这个Type 5外部路由,取而代之的是ABR(R2)给R3发了一条默认路由(0.0.0.0/0),告诉它:“你要去任何外网,都找我(10.0.23.2)”。
第四步:配置 Totally Stub 区域(进一步缩小路由表)
这步会彻底抛弃Type 3 LSA(区域间路由),让路由表缩到最小。
只在ABR(R2)上加一条命令,内部路由器R3保持原有stub配置不变。
1 | [R2] ospf 1 |
| 参数 | 白话解释 |
|---|---|
stub no-summary |
只在ABR上敲。它的意思是:“我不仅不给你发外部路由(Type 5),连区域间路由(Type 3)我也不给你发了,只给你发一条默认路由。” |
验证命令:
在R3上敲 display ip routing-table,你会发现:
- 没有了
10.0.12.0/24(原本它是Type 3区域间路由)。 - 只留下
0.0.0.0/0默认路由。
这就是Totally Stub的效果:路由表被压缩到极致,只留一条默认路由。
第五步:配置 NSSA(非完全末节区域)—— 引入外部路由的唯一解法
如果你想让Area 1成为“末节”(不收外部Type 5 LSA),但同时又想让Area 1自己引入一条外部路由(比如R3要接入一个外部网络5.5.5.5),此时Stub会报错(因为Stub禁止import-route),必须用NSSA。
把R3和R2的Area 1改成NSSA:
1 | // R3(内部路由器) |
在NSSA区域里引入外部路由(仅限R3):
1 | [R3] ip route-static 5.5.5.5 32 NULL 0 |
验证(关键观察):
在R3上敲 display ospf lsdb,你会看到多出一条 Type 7 LSA(NSSA外部路由),而不是Type 5。
在R1上敲 display ospf lsdb,你会看到R2(ABR)已经把R3的Type 7 LSA转换成了 Type 5 LSA 传给了Area 0。
| LSA类型 | 产生者 | 作用范围 |
|---|---|---|
| Type 7 | NSSA区域内的ASBR | 仅在NSSA区域内传递 |
| Type 5 | ABR(转换器) | 在整个OSPF域(除了Stub区域)传递 |
五、第三阶段排错流程(新手避坑指南)
❌ 场景1:配置 Stub 后,邻居关系中断(卡在 Exstart 状态)
原因:Stub区域内的所有路由器(包括ABR和内部路由器)的 stub 配置标志必须完全一致。如果R3配了stub,但R2(ABR)忘了配stub,两台设备关于“该区域是否支持Stub”的认知不一致,邻居会起不来。
解决方法:在R2上补敲 stub,并重启OSPF进程(reset ospf 1 或 quit 后重新进入)。
❌ 场景2:在Stub区域里敲 import-route static 报错
原因:Stub区域禁止引入外部路由(这是协议规则)。必须把区域改成NSSA,或者把R3从Stub区域移到普通区域。
❌ 场景3:NSSA区域里引入了外部路由,但在R1上看不到
排查步骤:
- 在R2(ABR)上敲
display ospf lsdb | include 5.5.5.5,确认R2是否成功把Type 7转换成了Type 5。 - 检查R2上是否开启了
nssa并确保没有加no-summary参数(除非你确认不需要Type 3)。
❌ 场景4:忘了写 no-summary,导致路由表没缩小
原因:stub 只会阻隔Type 4/5(外部路由),Type 3(区域间路由)依然会发进来。你必须明确敲 stub no-summary 才能彻底清除Type 3 LSA。
六、第三阶段核心笔记总结(速记口诀)
| 场景 | 命令 | 效果 |
|---|---|---|
| 我要让一个区域不接收外部路由,且有默认路由 | area 1 stub(区域所有设备都要敲) |
阻止Type 4/5,生成默认路由 |
| 我要让一个区域连区域间路由都不收,只要默认路由 | 仅在ABR上敲 stub no-summary |
阻止Type 3/4/5,只留默认路由 |
| 我要让一个区域不接收外部路由,但我自己还要引入外部 | area 1 nssa(区域所有设备都要敲) |
允许Type 7 LSA,由ABR转换成Type 5 |
| 查看当前区域类型 | display ospf brief |
检查 Area Type 显示为 Stub / NSSA |


.webp)

