網路與 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