网络与 IP

OSPF 配置详细步骤:华为、H3C、思科单区域配置实例

OSPF 配置的核心只有三条命令:指定 Router ID 启动进程、进入区域 0、用 network 加反掩码把接口所在网段加进来。下面以机房两台三层交换机加一台出口路由器为例,给出华为、H3C、思科的完整配置,讲清反掩码怎么写、怎么确认邻居 Full,以及邻居起不来时先查哪几项。

作者 顶联产品团队发布于 5 分钟阅读

OSPF 配置可以归结为四步:规划好每台设备的 Router ID 和互联地址;用 ospf 1 router-id(思科是 router ospf 1 加 router-id)启动进程;进入 area 0,用 network 网段 反掩码 把参与路由的接口加进来;最后用 display ospf peer(思科 show ip ospf neighbor)确认邻居进入 Full,再看路由表里有没有学到对端的网段。反掩码是子网掩码按位取反,/30 写 0.0.0.3,/24 写 0.0.0.255。下文用一个机房里很常见的拓扑,一台思科出口路由器下挂一台华为、一台 H3C 三层交换机,把三家的完整命令都写一遍,单厂商组网的读者照着对应那段改地址即可。

示例拓扑与地址规划

                     ISP 203.0.113.1
                           |
                  Gi0/0 203.0.113.2/30
                     +------------+
                     |     R1     |  Cisco   RID 10.255.0.1
                     +------------+
        Gi0/1 10.0.12.1/30     Gi0/2 10.0.13.1/30
                |                       |
     Vlanif12 10.0.12.2/30    Vlan-int13 10.0.13.2/30
         +------------+  10.0.23.0/30  +------------+
         |    SW1     |----------------|    SW2     |
         +------------+                +------------+
       Huawei RID 10.255.0.2          H3C RID 10.255.0.3
    VLAN 100 198.51.100.0/26      VLAN 200 198.51.100.64/26
设备 Router ID(Loopback0) 互联接口 业务网段
R1 思科路由器 10.255.0.1/32 Gi0/1 10.0.12.1/30 接 SW1;Gi0/2 10.0.13.1/30 接 SW2;Gi0/0 203.0.113.2/30 接运营商 —
SW1 华为三层交换机 10.255.0.2/32 Vlanif12 10.0.12.2/30(端口 GE0/0/1);Vlanif23 10.0.23.1/30(端口 GE0/0/2) VLAN 100:198.51.100.0/26,网关 .1
SW2 H3C 三层交换机 10.255.0.3/32 Vlan-interface13 10.0.13.2/30(端口 GE1/0/1);Vlan-interface23 10.0.23.2/30(端口 GE1/0/2) VLAN 200:198.51.100.64/26,网关 .65

这套规划里有几处是刻意的:

  • Router ID 手工指定,并且等于 Loopback0 的地址,从一个专用的内网段(这里是 10.255.0.0/24)里分配。不要图省事用 1.1.1.1、2.2.2.2 这类地址:Loopback 会被宣告进 OSPF,内网里访问真正的 1.1.1.1 就会被引到自己的设备上。
  • 每条互联链路一个 /30,三条链路组成环,任何一条断了,另外两条还能绕通。
  • 全部放在区域 0。单区域不需要考虑区域边界和路由汇总。
  • 运营商链路不加入 OSPF。R1 用一条静态默认路由指向运营商,再把默认路由下发给两台交换机;198.51.100.0/25 由运营商路由到 203.0.113.2,那是上游的配置,与 OSPF 无关。

network 反掩码怎么写

network 命令里的第二个参数是反掩码(也叫通配符掩码),算法是用 255.255.255.255 减去子网掩码:

前缀 子网掩码 反掩码 network 写法示例
/32 255.255.255.255 0.0.0.0 network 10.255.0.2 0.0.0.0
/30 255.255.255.252 0.0.0.3 network 10.0.12.0 0.0.0.3
/29 255.255.255.248 0.0.0.7 network 10.0.12.8 0.0.0.7
/27 255.255.255.224 0.0.0.31 network 198.51.100.32 0.0.0.31
/26 255.255.255.192 0.0.0.63 network 198.51.100.64 0.0.0.63
/24 255.255.255.0 0.0.0.255 network 192.168.10.0 0.0.0.255
/16 255.255.0.0 0.0.255.255 network 10.20.0.0 0.0.255.255

反掩码里为 0 的位必须匹配,为 1 的位不关心。理解 network 命令,关键在下面三点:

  1. network 选的是接口,不是要宣告的路由。设备逐个检查接口的 IP 地址,落在 network 范围里的接口就在这个区域里运行 OSPF,宣告出去的是接口自己的网段和掩码。所以 network 10.0.0.0 0.255.255.255 也能把示例里的三个 10 开头的接口全部加进来,宣告的仍然是各自的 /30 和 /32。
  2. 范围宽了省事,但有隐患。上面那条宽泛的写法,日后有人在这台交换机上新建一个 10.10.0.0/24 的管理 VLAN,它会自动加入 OSPF、开始发 Hello。生产环境建议一条 network 对应一个网段,或者直接写到接口地址,例如 network 10.0.12.2 0.0.0.0,只匹配这一个接口。
  3. 不要把子网掩码写成反掩码。两者 0 和 1 的含义正好相反,写成 network 10.0.12.0 255.255.255.252,匹配范围就完全不对了。

除了 network,三家都支持在接口下直接启用 OSPF:思科是接口视图 ip ospf 1 area 0,H3C 是接口视图 ospf 1 area 0,华为较新的版本是接口视图 ospf enable 1 area 0(以设备版本的命令手册为准)。接口下启用更直观,看接口配置就知道它跑不跑 OSPF;同一台设备上两种方式最好不要混用。

华为、H3C、思科的完整配置

下面的命令按顺序粘贴即可。服务器所在的接入端口(加入 VLAN 100、VLAN 200 的那些口)与 OSPF 无关,这里省略。

SW1:华为三层交换机

system-view
sysname SW1
vlan batch 12 23 100
interface GigabitEthernet0/0/1
 port link-type access
 port default vlan 12
 quit
interface GigabitEthernet0/0/2
 port link-type access
 port default vlan 23
 quit
interface LoopBack0
 ip address 10.255.0.2 255.255.255.255
 quit
interface Vlanif12
 ip address 10.0.12.2 255.255.255.252
 ospf network-type p2p
 quit
interface Vlanif23
 ip address 10.0.23.1 255.255.255.252
 ospf network-type p2p
 quit
interface Vlanif100
 ip address 198.51.100.1 255.255.255.192
 quit
ospf 1 router-id 10.255.0.2
 bandwidth-reference 100000
 silent-interface Vlanif100
 area 0
  network 10.255.0.2 0.0.0.0
  network 10.0.12.0 0.0.0.3
  network 10.0.23.0 0.0.0.3
  network 198.51.100.0 0.0.0.63
  quit
 quit
quit
save

逐项说明:

  • ospf 1 router-id 10.255.0.2:进程号 1,Router ID 在启动进程时一起指定。进程已经运行后再改 Router ID,要执行 reset ospf 1 process 才生效,这会中断该进程的所有邻居,放在维护窗口做。
  • ospf network-type p2p:以太网接口默认是广播类型,要选举 DR、BDR,刚启用时还要等待几十秒。两台设备之间的互联口改成点到点,邻居建立更快。两端必须同时改。
  • silent-interface Vlanif100:业务网段要宣告出去,但不需要在服务器 VLAN 里发 Hello,设成静默接口,既省掉无用报文,也防止服务器网段里有人伪造 OSPF 报文。
  • bandwidth-reference 100000:参考带宽改成 100 Gbps(单位 Mbps)。默认值是 100 Mbps,千兆、万兆接口的开销都会被算成 1,OSPF 分不出快慢。所有设备要改成同一个值。
  • save 会提示确认,输入 Y。另外,Vlanif100 只有在 VLAN 100 里至少有一个端口 up 时才会 up,否则这个网段不会被宣告,测试时先插一台服务器或把一个端口加入 VLAN 100。

SW2:H3C 三层交换机

system-view
sysname SW2
vlan 13
 quit
vlan 23
 quit
vlan 200
 quit
interface GigabitEthernet1/0/1
 port link-type access
 port access vlan 13
 quit
interface GigabitEthernet1/0/2
 port link-type access
 port access vlan 23
 quit
interface LoopBack0
 ip address 10.255.0.3 255.255.255.255
 quit
interface Vlan-interface13
 ip address 10.0.13.2 255.255.255.252
 ospf network-type p2p
 quit
interface Vlan-interface23
 ip address 10.0.23.2 255.255.255.252
 ospf network-type p2p
 quit
interface Vlan-interface200
 ip address 198.51.100.65 255.255.255.192
 quit
ospf 1 router-id 10.255.0.3
 bandwidth-reference 100000
 silent-interface Vlan-interface200
 area 0
  network 10.255.0.3 0.0.0.0
  network 10.0.13.0 0.0.0.3
  network 10.0.23.0 0.0.0.3
  network 198.51.100.64 0.0.0.63
  quit
 quit
save force

H3C 与华为的 OSPF 命令几乎一样,差别在周边:VLAN 三层接口叫 Vlan-interface,端口加入 VLAN 用 port access vlan,save force 直接保存不再询问。注意 VLAN 200 的网段是 198.51.100.64/26,network 的起始地址要写 .64,反掩码 0.0.0.63。

R1:思科出口路由器,下发默认路由

enable
configure terminal
hostname R1
interface Loopback0
 ip address 10.255.0.1 255.255.255.255
interface GigabitEthernet0/0
 description to-ISP
 ip address 203.0.113.2 255.255.255.252
 no shutdown
interface GigabitEthernet0/1
 description to-SW1
 ip address 10.0.12.1 255.255.255.252
 ip ospf network point-to-point
 no shutdown
interface GigabitEthernet0/2
 description to-SW2
 ip address 10.0.13.1 255.255.255.252
 ip ospf network point-to-point
 no shutdown
exit
ip route 0.0.0.0 0.0.0.0 203.0.113.1
router ospf 1
 router-id 10.255.0.1
 auto-cost reference-bandwidth 100000
 network 10.255.0.1 0.0.0.0 area 0
 network 10.0.12.0 0.0.0.3 area 0
 network 10.0.13.0 0.0.0.3 area 0
 default-information originate
end
write memory

思科的 network 把区域写在同一行末尾。default-information originate 把 R1 路由表里的默认路由作为外部路由下发给整个 OSPF 域,前提是 R1 自己有一条默认路由,这里就是指向运营商的那条静态路由;运营商链路断开、静态路由失效时,下发也随之撤销,两台交换机不会把流量送到一个已经出不去的出口。华为、H3C 做出口设备时,对应的命令是 OSPF 视图下的 default-route-advertise。203.0.113.0/30 没有写进任何 network,R1 不会向运营商发 Hello。

三家命令对照

步骤 华为 H3C 思科
启动进程、指定 Router ID ospf 1 router-id 10.255.0.2 ospf 1 router-id 10.255.0.3 router ospf 1 后 router-id 10.255.0.1
进入区域、宣告网段 area 0 后 network 10.0.12.0 0.0.0.3 同华为 network 10.0.12.0 0.0.0.3 area 0
接口改点到点 ospf network-type p2p ospf network-type p2p ip ospf network point-to-point
静默接口 silent-interface Vlanif100 silent-interface Vlan-interface200 passive-interface 接口名
参考带宽(Mbps) bandwidth-reference 100000 bandwidth-reference 100000 auto-cost reference-bandwidth 100000
下发默认路由 default-route-advertise default-route-advertise default-information originate
重启进程 reset ospf 1 process reset ospf 1 process clear ip ospf process
保存 save save force write memory

验证:邻居 Full、路由表与切换测试

看什么 华为 H3C 思科
邻居状态 display ospf peer brief display ospf peer show ip ospf neighbor
哪些接口在跑 OSPF display ospf interface display ospf interface show ip ospf interface brief
学到的 OSPF 路由 display ip routing-table protocol ospf display ip routing-table protocol ospf show ip route ospf
链路状态数据库 display ospf lsdb display ospf lsdb show ip ospf database

在 R1 上,两个邻居都应该是 FULL;点到点链路没有 DR,角色显示为横杠:

R1# show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
10.255.0.2        0   FULL/  -        00:00:37    10.0.12.2       GigabitEthernet0/1
10.255.0.3        0   FULL/  -        00:00:34    10.0.13.2       GigabitEthernet0/2

邻居 Full 之后再核对路由,每台设备都应该学到“除自己直连以外的全部网段”:

  • R1:198.51.100.0/26 下一跳 10.0.12.2,198.51.100.64/26 下一跳 10.0.13.2,另有 10.0.23.0/30 和两台交换机的 Loopback /32,都以 O 开头。
  • SW1:一条 0.0.0.0/0,下一跳 10.0.12.1,协议列是 OSPF 外部路由的标记(华为显示为 O_ASE,默认优先级 150);198.51.100.64/26 下一跳 10.0.23.2,即直接经互联链路走 SW2,不绕 R1。
  • SW2:与 SW1 对称,默认路由同样是外部路由,H3C 较新的版本会按外部路由类型显示为 O_ASE2,具体写法以设备版本为准。

最后做一次切换测试,放在维护窗口里:从 VLAN 100 的一台服务器执行 traceroute -n 223.5.5.5,路径应为 198.51.100.1 → 10.0.12.1 → 运营商;在 R1 的 Gi0/1 下执行 shutdown,SW1 上用 display ip routing-table 0.0.0.0 0 看默认路由的下一跳是否变成 10.0.23.2,服务器再 traceroute 一次,应改走 198.51.100.1 → 10.0.23.2 → 10.0.13.1;确认后 no shutdown 恢复。接口直接断开时,OSPF 会立刻感知并重算,切换通常在秒级完成。

邻居建不起来,先查这六项

配置阶段邻居起不来,绝大多数是配置本身漏了或写错了,按下面的顺序逐项核对:

检查项 怎么看 常见的配置错误
1. 接口有没有跑 OSPF display ospf interface、show ip ospf interface brief 里有没有这个接口 network 的网段或反掩码写错,没覆盖到接口;VLANIF 没有 up 的成员端口,接口本身是 down
2. 是不是被设成了静默 华为、H3C 看 OSPF 视图下的 silent-interface;思科看 show ip protocols 的 Passive Interface 把互联接口也设成了静默;思科用了 passive-interface default,却忘了对互联口执行 no passive-interface
3. 区域号是否一致 两端 display ospf interface 的区域列 一端写 area 0,另一端写成了 area 1
4. Router ID 是否重复 华为、H3C 用 display ospf brief,思科用 show ip ospf 复制配置模板到新设备,忘了改 router-id
5. 网络类型与计时器是否一致 display ospf interface 接口名、show ip ospf interface 接口名 里的类型和 Hello、Dead 时间 只改了一端的 p2p:计时器相同时邻居可能到 Full,但路由算不出来;改过 Hello 间隔却没改对端
6. MTU 与认证 两端接口的 MTU;认证配置 一端开了巨型帧;一端配了认证、另一端没配

前四项占了配置错误的大头,而且都能在本机上看出来,不需要抓包。第 5、6 项要两端对比着看。思科默认在建立邻接时检查两端 MTU,不一致会卡在交换数据库的阶段;华为默认不检查,两台华为设备 MTU 不同照样能 Full,问题会在数据库变大后才暴露,所以互联两端的 MTU 应在规划时就统一。

在管理系统里怎么落地

OSPF 的 network 写错,常见原因是“这台交换机上到底有哪些网段”没有准确记录。Toplink DCIM 的 IP 地址管理为每个地址段登记所在的 VLAN,以及网关挂在哪台支持路由的交换机上,某台三层交换机上挂着哪些业务网段有据可查,可以和 display ospf interface 的结果逐条对照。改 OSPF 配置需要登录设备时,可以在交换机管理里直接从浏览器打开交换机的 SSH 或 Telnet 终端,会话全程录像并记录命令日志,哪一次操作改了 router-id、network 或网络类型,事后都能查到。

常见问题

OSPF 进程号两端必须一样吗?

不需要。进程号只在本机有效,用来区分同一台设备上的多个 OSPF 进程,一端写 1、另一端写 10 照样能建立邻居。两端必须一致的是区域号、Hello 与 Dead 间隔、认证方式和密钥等接口参数。

单区域 OSPF 适合多大的网络?

没有硬性上限,取决于设备性能和链路稳定性。几十台三层设备的机房网络用单区域足够,配置和排障都简单;设备更多、或者部分链路经常抖动时,再按机房或功能模块划分区域,在区域边界做路由汇总。

同一个网段既有静态路由又有 OSPF 路由,听哪个的?

看路由优先级,而且厂商默认值不同:华为、H3C 上 OSPF 区域内路由的优先级是 10,静态路由是 60,数值小的优先,所以 OSPF 胜出;思科上静态路由的管理距离是 1,OSPF 是 110,静态路由胜出。混合组网时要特别留意。

想看看在你的机房里怎么用?

从一次产品演示开始,梳理你的业务链路。

查看价格
服务热线 400-112-2951

让我们聊聊你的 IDC 业务

扫码添加企业微信,预约产品演示或申请试用。

Toplink 企业微信二维码

长按保存或使用企业微信 / 微信扫描

也可致电
400-112-2951
Telegram
@TopLink88