大家好!今天给大家分享一次 OSPF 单区域配置实验的全过程,从拓扑规划、配置实现,到遇到 “时通时不通” 的诡异问题再到彻底解决,全程干货满满,新手也能轻松看懂~
一、实验目标与拓扑说明
🎯 实验目标
- 掌握华为设备 OSPF 单区域(Area 0)的基础配置方法
- 理解 OSPF 中
network命令的精确匹配规则 - 排查并解决 OSPF 邻居建立、路由学习导致的网络连通性问题
- 验证跨网段 PC 端的互通性
📐 拓扑与网段规划
本次实验采用三台华为路由器(R1/R2/R3)构建单区域 OSPF 网络,连接三个办公区的终端,拓扑与 IP 规划如下:
表格
| 网段 | 设备 / 接口 | IP 地址 | 说明 |
|---|---|---|---|
| 办公区 A | PC-1 | 192.168.1.1/24 | 终端设备 |
| R1 GE0/0/2 | 192.168.1.254/24 | 网关 | |
| 办公区 B | PC-2 | 192.168.2.1/24 | 终端设备 |
| R2 GE0/0/2 | 192.168.2.254/24 | 网关 | |
| 办公区 C | PC-3 | 192.168.3.1/24 | 终端设备 |
| R3 GE0/0/2 | 192.168.3.254/24 | 网关 | |
| 骨干链路 1 | R1 GE0/0/0 | 192.168.10.1/24 | R1-R2 互联 |
| R2 GE0/0/0 | 192.168.10.2/24 | ||
| 骨干链路 2 | R1 GE0/0/1 | 192.168.20.1/24 | R1-R3 互联 |
| R3 GE0/0/0 | 192.168.20.3/24 | ||
| 骨干链路 3 | R2 GE0/0/1 | 192.168.30.2/24 | R2-R3 互联 |
| R3 GE0/0/1 | 192.168.30.3/24 |
所有路由器都运行 OSPF 1 进程,Router-ID 分别为 1.1.1.1、2.2.2.2、3.3.3.3,全部接口宣告进 Area 0。
二、初始配置与问题现象
⚙️ 基础配置(三台路由器)
- 配置设备名称、接口 IP 地址
- 配置 OSPF 进程,宣告相关网段
# 以R1为例,其他路由器配置逻辑一致 ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 192.168.1.254 0.0.0.0 network 192.168.10.1 0.0.0.0 network 192.168.20.1 0.0.0.0 - PC 端配置 IP 地址、子网掩码和默认网关
❌ 诡异的连通性问题
配置完成后,PC-1(192.168.1.1)进行连通性测试,结果出现了奇怪的现象:
- ping 192.168.3.1(PC-3):第一次 ping 丢包 20%,后续恢复正常
- ping 192.168.2.1(PC-2):前两次 100% 丢包,第三次才恢复正常
- 有时甚至会出现完全无法 ping 通的情况,完全没有规律
三、排坑分析:OSPF 宣告的致命细节
我一开始以为是接口 IP 配置错误、链路没通,或者是防火墙问题,但排查后发现接口状态正常,链路也能通。问题出在 OSPF 的network命令上!
🔍 问题根源:宣告的地址与实际网段不匹配
我看了 R3 的配置,发现了关键错误:
ospf 1 router-id 3.3.3.3 area 0.0.0.0 network 192.168.3.254 0.0.0.0 network 192.168.30.254 0.0.0.0 ← 这里错了! network 192.168.20.3 0.0.0.0R3 的 GE0/0/1 接口 IP 是192.168.30.3/24,但宣告的却是192.168.30.254,而这个地址根本不在 R3 上!同理,R2 的配置也存在同样的问题,虽然宣告的是正确的接口 IP,但这种 “接口 IP 精确宣告” 的方式存在隐患。
💡 知识点补充:OSPF 的network命令
network 网段 反掩码的作用是:
- 宣告该网段下的所有接口,只要接口 IP 匹配网段 + 反掩码,就会启用 OSPF 并加入对应区域
- 当反掩码为
0.0.0.0时,是精确匹配,只宣告这个 IP 对应的接口 - 当宣告的 IP 不存在,或接口 IP 与宣告的不匹配时,该接口不会启用 OSPF,无法建立邻居、传递路由
🛠️ 修正方案
将所有路由器的 OSPF 宣告,改为宣告整个互联网段,避免接口 IP 写错导致的问题:
# R3修正后的OSPF配置 ospf 1 router-id 3.3.3.3 area 0.0.0.0 network 192.168.3.0 0.0.0.255 # 宣告整个办公区C网段 network 192.168.30.0 0.0.0.255 # 宣告R2-R3互联网段 network 192.168.20.0 0.0.0.255 # 宣告R1-R3互联网段同理修正 R1、R2 的 OSPF 宣告,确保所有互联网段和终端网段都被正确宣告进 Area 0。
四、修正后的验证与结果
✅ 邻居关系验证
修正配置后,在 R1 上查看 OSPF 邻居,发现 R2、R3 都成功建立了 Full 状态的邻居关系:
<R1>display ospf peer brief OSPF Process 1 with Router ID 1.1.1.1 Peer Statistic Information ---------------------------------------------------------------------------- Area Id Interface Router Id State ---------------------------------------------------------------------------- 0.0.0.0 GE0/0/0 2.2.2.2 Full 0.0.0.0 GE0/0/1 3.3.3.3 Full ----------------------------------------------------------------------------✅ 路由表验证
查看 R1 的 IP 路由表,发现已经学习到了所有网段的 OSPF 路由:
<R1>display ip routing-table protocol ospf Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Public routing table : OSPF Destinations : 4 Routes : 4 OSPF routing table status: <Active> Destinations : 4 Routes : 4 OSPF routing table status: <Inactive> Destinations : 0 Routes : 0 OSPF routing table status: <Deleted> Destinations : 0 Routes : 0 OSPF routing table status: <Hidden> Destinations : 0 Routes : 0 OSPF Active routes: ------------------------------------------------------------------------------ OSPF protocol's Routing Table: Destinations : 4 Routes : 4 OSPF routing table status: <Active> ------------------------------------------------------------------------------ 192.168.2.0/24, cost 2, type 2, tag 0 NextHop: 192.168.10.2, Interface: GigabitEthernet0/0/0 192.168.3.0/24, cost 2, type 2, tag 0 NextHop: 192.168.20.3, Interface: GigabitEthernet0/0/1 192.168.30.0/24, cost 2, type 2, tag 0 NextHop: 192.168.10.2, Interface: GigabitEthernet0/0/0 NextHop: 192.168.20.3, Interface: GigabitEthernet0/0/1✅ 终端连通性验证
修正后,PC-1 ping PC-2、PC-3 均实现 100% 无丢包:
PC>ping 192.168.2.1 Ping 192.168.2.1: 32 data bytes, Press Ctrl_C to break From 192.168.2.1: bytes=32 seq=1 ttl=126 time=62 ms From 192.168.2.1: bytes=32 seq=2 ttl=126 time=47 ms From 192.168.2.1: bytes=32 seq=3 ttl=126 time=47 ms From 192.168.2.1: bytes=32 seq=4 ttl=126 time=78 ms From 192.168.2.1: bytes=32 seq=5 ttl=126 time=62 ms --- 192.168.2.1 ping statistics --- 5 packet(s) transmitted 5 packet(s) received 0.00% packet loss round-trip min/avg/max = 47/59/78 ms五、实验总结与避坑指南
📌 核心知识点
- OSPF 宣告规则:
network命令必须和接口 IP 匹配,要么宣告接口 IP+0.0.0.0,要么宣告整个网段 + 反掩码,否则接口无法启用 OSPF - 邻居建立条件:区域 ID、Hello 时间、Dead 时间、认证方式、网段必须一致,否则无法建立 Full 邻居
- 路由传递逻辑:OSPF 通过 LSA 传递链路状态,所有路由器都会同步完整的链路状态数据库,最终计算出最短路径
🚫 新手避坑清单
- ❌ 错误:宣告不存在的 IP 地址(如 R3 宣告的 192.168.30.254)✅ 修正:宣告接口实际 IP,或整个网段
- ❌ 错误:接口 IP 配置错误,导致邻居无法建立✅ 修正:配置后用
display ip interface brief检查接口 IP 和状态 - ❌ 错误:忘记配置 PC 端的默认网关,导致终端无法跨网段通信✅ 修正:所有 PC 都要配置网关为对应路由器的接口 IP
- ❌ 错误:OSPF Router-ID 重复,导致邻居建立异常✅ 修正:手动配置唯一的 Router-ID,避免自动选举导致的问题
六、完整配置参考
R1 配置
sysname R1 # interface GigabitEthernet0/0/0 ip address 192.168.10.1 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 192.168.20.1 255.255.255.0 # interface GigabitEthernet0/0/2 ip address 192.168.1.254 255.255.255.0 # ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 192.168.1.0 0.0.0.255 network 192.168.10.0 0.0.0.255 network 192.168.20.0 0.0.0.255 # returnR2 配置
sysname R2 # interface GigabitEthernet0/0/0 ip address 192.168.10.2 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 192.168.30.2 255.255.255.0 # interface GigabitEthernet0/0/2 ip address 192.168.2.254 255.255.255.0 # ospf 1 router-id 2.2.2.2 area 0.0.0.0 network 192.168.2.0 0.0.0.255 network 192.168.10.0 0.0.0.255 network 192.168.30.0 0.0.0.255 # returnR3 配置
sysname R3 # interface GigabitEthernet0/0/0 ip address 192.168.20.3 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 192.168.30.3 255.255.255.0 # interface GigabitEthernet0/0/2 ip address 192.168.3.254 255.255.255.0 # ospf 1 router-id 3.3.3.3 area 0.0.0.0 network 192.168.3.0 0.0.0.255 network 192.168.20.0 0.0.0.255 network 192.168.30.0 0.0.0.255 # return这次实验踩的坑,让我对 OSPF 的宣告规则有了更深刻的理解。网络配置就是这样,一个小小的地址错误,就会导致整个网络的连通性问题,一定要细心再细心!
如果你也在做 OSPF 实验遇到了类似的问题,欢迎在评论区留言交流~