📘 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
2
3
4
[R3] ip route-static 4.4.4.4 32 NULL 0
[R3] ospf 1
[R3-ospf-1] import-route static
[R3-ospf-1] quit
命令 白话解释
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
2
3
4
5
[R3] ospf 1
[R3-ospf-1] area 1
[R3-ospf-1-area-0.0.0.1] stub
[R3-ospf-1-area-0.0.0.1] quit
[R3-ospf-1] quit

R2配置(ABR):

1
2
3
4
5
[R2] ospf 1
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] stub
[R2-ospf-1-area-0.0.0.1] quit
[R2-ospf-1] quit

验证命令:

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
2
3
4
5
[R2] ospf 1
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] stub no-summary // 关键参数!
[R2-ospf-1-area-0.0.0.1] quit
[R2-ospf-1] quit
参数 白话解释
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
2
3
4
5
6
7
8
9
10
11
12
13
// R3(内部路由器)
[R3] ospf 1
[R3-ospf-1] area 1
[R3-ospf-1-area-0.0.0.1] nssa // 改成NSSA
[R3-ospf-1-area-0.0.0.1] quit
[R3-ospf-1] quit

// R2(ABR)
[R2] ospf 1
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] nssa // ABR也必须同步改
[R2-ospf-1-area-0.0.0.1] quit
[R2-ospf-1] quit

在NSSA区域里引入外部路由(仅限R3):

1
2
3
4
[R3] ip route-static 5.5.5.5 32 NULL 0
[R3] ospf 1
[R3-ospf-1] import-route static // 这条命令在Stub里会报错,但在NSSA里生效!
[R3-ospf-1] quit

验证(关键观察):
在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上看不到

排查步骤:

  1. 在R2(ABR)上敲 display ospf lsdb | include 5.5.5.5,确认R2是否成功把Type 7转换成了Type 5。
  2. 检查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