はじめに
企業ネットワークの構築において、最も標準的に採用されるルーティングプロトコルが OSPF(Open Shortest Path First)です。 ベンダーを問わず使える標準規格であり、大規模なネットワークでも高速に収束(コンバージェンス)するため、ネットワークエンジニアにとって必須のスキルと言えます。
本記事では、Cisco ルーター(IOS)を用いた OSPF の具体的な設定手順を解説します。 教科書的な「シングルエリア」の設定だけでなく、現場で頻出する「マルチエリア構成」や、回線障害時に自動で切り替わる「冗長化(ECMP / コスト調整)」、さらに「フローティングスタティック」との組み合わせまで、実務で使えるパターンを解説します。
なお、OSPF の仕組み(LSA タイプや動作プロセスなど)については、以下の記事で解説しています。基礎理論から復習したい方は、先にこちらをご覧ください。

- 基本設定: シングルエリア(Area 0)とマルチエリア(ABR)の構築手順
- 冗長化①: OSPF ネイティブの負荷分散(ECMP)とコスト調整による優先制御
- 冗長化②: バックアップ回線への切り替え(フローティングスタティックとの連携)
- 実践設定: パッシブインターフェースやデフォルトルート配布などの必須オプション
- 確認方法:
showコマンドを用いたステータス確認のポイント
前提知識と構成
本記事では、以下のネットワーク構成を例に OSPF の設定手順を解説します。 バックボーンエリア(Area 0)と支社エリア(Area 10)を接続するマルチエリア構成です。

アドレス設計と役割
検証に使用する IP アドレスと、各ルーターの役割は以下の通りです。 Router A が異なるエリアをつなぐ ABR(エリア境界ルーター) となります。
| デバイス | 役割 | インターフェース | IPアドレス / マスク | 所属エリア |
| Router A | ABR / Center | Gi0/0 | 10.0.12.1 /30 | Area 0 |
| Gi0/1 | 10.0.21.1 /30 | Area 0 | ||
| Gi0/2 | 10.0.13.1 /30 | Area 10 | ||
| Loopback0 | 1.1.1.1 /32 | Area 0 | ||
| Router B | 内部ルーター/ Branch1 | Gi0/0 | 10.0.12.2 /30 | Area 0 |
| Gi0/1 | 10.0.21.2 /30 | Area 0 | ||
| Gi0/2 | 192.168.10.254 /24 | Area 0 | ||
| Loopback0 | 2.2.2.2 /32 | Area 0 | ||
| Router C | 内部ルーター / Branch2 | Gi0/0 | 10.0.13.2 /30 | Area 10 |
| Gi0/1 | 192.168.20.254 /24 | Area 10 | ||
| Loopback0 | 3.3.3.3 /32 | Area 10 |
基本設定(シングルエリアとマルチエリア)
Cisco ルーターでの設定手順はシンプルです。
router ospf <プロセスID>で起動router-idで名前を決定networkコマンドでインターフェースをエリアに参加させる
Area 0 の設定(Router B / シングルエリア)
まずは最も基本的なシングルエリアの設定です。Router B はすべてのインターフェースが Area 0 に属します。
Router B(Branch 1)の設定
Router_B(config)# router ospf 1
Router_B(config-router)# router-id 2.2.2.2
! ネットワークアドレス ワイルドカードマスク area エリアID の順で指定
! 2本の対向回線 (10.0.12.0/30, 10.0.21.0/30) を Area 0 へ
Router_B(config-router)# network 10.0.12.0 0.0.0.3 area 0
Router_B(config-router)# network 10.0.21.0 0.0.0.3 area 0
! LAN側ネットワーク (192.168.10.0/24) も Area 0 へ
Router_B(config-router)# network 192.168.10.0 0.0.0.255 area 0基本的な変換例は以下の通りです。
/30(255.255.255.252) →0.0.0.3/24(255.255.255.0) →0.0.0.255
複雑なサブネットの計算はミスしやすいので、以下の計算ツールを使うのがおすすめです。IPアドレスとプレフィックスを入力するだけで、ワイルドカードマスクも一発で算出できます。
Area 0 + Area 10 の設定(Router A / ABR)
次に、エリアをまたぐ ABR の設定です。 Router A は、左側(Router B 向け)を Area 0、右側(Router C 向け)を Area 10 として設定します。
Router A(Center / ABR)の設定
Router_A(config)# router ospf 1
Router_A(config-router)# router-id 1.1.1.1
! 左側のインターフェース群は Area 0 (バックボーン)
Router_A(config-router)# network 10.0.12.0 0.0.0.3 area 0
Router_A(config-router)# network 10.0.21.0 0.0.0.3 area 0
Router_A(config-router)# network 1.1.1.1 0.0.0.0 area 0
! 右側のインターフェースは Area 10 (非バックボーン)
Router_A(config-router)# network 10.0.13.0 0.0.0.3 area 10このように area 番号を使い分けるだけで、ルーターが自動的に ABR として動作し、エリア間のルーティング情報を中継します。
Area 10 の設定(Router C / シングルエリア)
最後に Area 10 内のルーター設定です。Router B と同様ですが、エリア ID が 10 になる点だけが異なります。
Router C(Branch 2)の設定
Router_C(config)# router ospf 1
Router_C(config-router)# router-id 3.3.3.3
! すべてのインターフェースを Area 10 に所属させる
Router_C(config-router)# network 10.0.13.0 0.0.0.3 area 10
Router_C(config-router)# network 192.168.20.0 0.0.0.255 area 10以上で、基本的な OSPF ネットワーク(シングルエリアおよびマルチエリア)の疎通が可能になります。
次は、OSPF をより実践的に使うための「冗長化設定」について解説します。
実践① コスト調整とロードバランシング(OSPF 内冗長化)
OSPF は、目的地への経路が複数ある場合、コスト(Cost)値 が最も小さい経路をベストパスとして選択します。 この性質を利用して、通信を分散させたり、主系・副系を切り替えたりすることができます。
等コストロードバランシング(ECMP)
Cisco ルーターのデフォルト動作です。 今回の構成のように、Router A と Router B の間が同じ帯域幅(例: どちらも 1Gbps)の回線で結ばれている場合、OSPF は両方の回線のコストを「同じ」と判断します。
コストが同じ場合、OSPF は 両方の経路をルーティングテーブルに登録 し、パケットを均等に分散させて転送します。これを ECMP(Equal Cost Multi-Path)と呼びます。
確認コマンド
Router B でルーティングテーブルを確認すると、宛先(Router A の Loopback 1.1.1.1 や Area 10 への経路)に対して、2つの Next Hop が表示されます。
Router_B# show ip route ospf
1.0.0.0/32 is subnetted, 1 subnets
O 1.1.1.1 [110/2] via 10.0.12.1, 00:00:15, GigabitEthernet0/0
[110/2] via 10.0.21.1, 00:00:15, GigabitEthernet0/1 <-- 2行ある特別な設定をしなくても、自動的に帯域を有効活用(Active/Active)できるのが OSPF の強みです。
コスト調整による優先制御(Active/Standby)
要件によっては、「普段は回線 1 だけを使い、回線 1 が切れた時だけ回線 2 を使いたい」という Active/Standby 構成にしたい場合があります。
その場合は、バックアップにしたい回線のコスト値を手動で高く設定 します。 OSPF は「コストが低い方」を優先するため、コストが高い回線はルーティングテーブルから消え、待機状態になります。
設定例
Router B にて、Gi0/1(バックアップ用)のコストを 100 に上げます。(デフォルトは 1)
Router_B(config)# interface GigabitEthernet0/1
Router_B(config-if)# ip ospf cost 100※ 戻りの通信も制御したい場合は、対向の Router A 側でも同様に設定する必要があります。
設定後の確認
もう一度ルーティングテーブルを確認すると、コストの低い Gi0/0 の経路だけが残り、Gi0/1 は消えます。
Router_B# show ip route ospf
1.0.0.0/32 is subnetted, 1 subnets
O 1.1.1.1 [110/2] via 10.0.12.1, 00:00:05, GigabitEthernet0/0
! Gi0/1 の行が消え、Gi0/0 だけになった(Active/Standby完成)この状態で Gi0/0 のケーブルを抜くと、OSPF は瞬時に経路を再計算し、隠れていた Gi0/1(コスト 100)のルートを自動的にテーブルに浮上させます。これが OSPF の冗長化機能です。
実践② 異種プロトコル間の冗長化(フローティングスタティック)
前章では OSPF 同士の冗長化を行いましたが、実際の現場では「メイン回線は OSPF(専用線)、バックアップ回線は Static(インターネット VPN)」といったように、異なるプロトコルを組み合わせるケースが多々あります。
この場合、単にスタティックルートを書いただけでは問題が起きます。 Cisco ルーターのデフォルトでは、Static(AD値: 1) が OSPF(AD値: 110) よりも優先されるため、バックアップのつもりが「常に VPN 経由」になってしまうのです。
そこで登場するのが フローティングスタティック です。
AD 値(管理ディスタンス)の調整
Static ルートの信頼度(AD 値)をわざと下げることで、普段は OSPF に負けるように設定します。
| プロトコル | デフォルト AD 値 | 設定する AD 値 | 状態 |
| OSPF(メイン) | 110 | 変更なし | 優先(Routing Table に載る) |
| Static(サブ) | 1 | 120(110より大きくする) | 待機(Routing Table に載らない) |
こうすると、OSPF が生きている間は Static ルートは無視され(浮いている状態)、OSPF がダウンした瞬間に「代打」としてルーティングテーブルに降りてきます。
設定コマンド
設定は非常にシンプルです。ip route コマンドの末尾に、110 よりも大きい数字(例: 120) を付けるだけです。
Router B(Branch 1)の設定例
メインは OSPF で学習済みとします。バックアップとして VPN ルーター(192.168.100.1)に向けたスタティックルートを設定します。
! 本社 (1.1.1.1) へのルートを AD値 120 で設定
Router_B(config)# ip route 1.1.1.1 255.255.255.255 192.168.100.1 120動作確認
実際に回線を抜いて(または shutdown して)、切り替わりを確認してみましょう。
ルーティングテーブルには OSPF のみが表示されています。
Router_B# show ip route 1.1.1.1
Routing entry for 1.1.1.1/32
Known via "ospf 1", distance 110, metric 2, type intra area
! OSPF (AD: 110) が選ばれているOSPF のリンクダウンを検知すると、隠れていた Static ルートが自動的に浮上します。
Router_B# show ip route 1.1.1.1
Routing entry for 1.1.1.1/32
Known via "static", distance 120, metric 0
! Static (AD: 120) に切り替わったこのように、AD 値を調整するだけで、高価な専用線をメインに使いつつ、安価な回線を保険として確保する構成が簡単に実現できます。
実践③ 現場でよく使うオプション設定
OSPF の基本設定(router ospf, network)だけでは、セキュリティや経路選択の精度に課題が残ります。 ここでは、よく使う 3 つのチューニング設定を紹介します。
不要なパケットを止める(passive-interface)
network コマンドで指定したインターフェースからは、デフォルトで 10 秒ごとに Hello パケット が送信されます。 しかし、PC やサーバーしか繋がっていない LAN 側のポートに Hello を送る必要はありません。むしろ、無駄な帯域消費や、悪意あるユーザーに OSPF 情報を盗聴されるリスクになります。
設定例(Router B)
LAN 側の GigabitEthernet0/2 に対して Hello パケットの送信を停止します。 ※ ただし、OSPF ネットワークとしては広報され続けるため、通信には影響しません。
Router_B(config)# router ospf 1
Router_B(config-router)# passive-interface GigabitEthernet0/2
インターフェースが多い場合は、passive-interface default で全ポートを一旦停止し、必要なポートだけ no passive-interface で開放するのが一般的です。
インターネットへの出口を教える(default-information originate)
社内のルーター全てに「インターネットへ行くならここを通れ(0.0.0.0/0)」という静的ルートを 1 台ずつ書くのは大変です。 インターネット接続点となるルーター(今回の構成では Router A や上位ルーター)でこの設定を入れると、OSPF ドメイン内の全ルーターに デフォルトルート を自動的に配布できます。
設定例(Router A / Edge Router)
前提として、自身がデフォルトルート(static)を持っている必要があります。
! まず自身がデフォルトルートを持つ
Router_A(config)# ip route 0.0.0.0 0.0.0.0 203.0.113.1
! OSPF でそのルートをみんなに配る
Router_A(config)# router ospf 1
Router_A(config-router)# default-information originate


always オプションを付けると、自身がデフォルトルートを持っていなくても強制的に配布します。
高速回線に対応する(auto-cost reference-bandwidth)
OSPF のコスト値は 100 Mbps / 帯域幅 で計算されます。デフォルトの基準値(100Mbps)のままだと、100Mbps(FastEthernet)も 1Gbps(GigabitEthernet)も 10Gbps も、計算結果がすべて「1」になってしまいます。 これでは、1G と 10G の回線があっても OSPF は「同じ速さ」と誤認してしまいます。
これを防ぐため、基準値(分母)を引き上げます。
設定例(全ルーター共通)
基準値を 1000(1Gbps)や 10000(10Gbps)に変更します。
※ この設定は、OSPF ドメイン内の 全てのルーターで統一 する必要があります。
Router_B(config)# router ospf 1
! 基準値を 10Gbps (10000 Mbps) に変更
Router_B(config-router)# auto-cost reference-bandwidth 10000


設定後、show ip ospf interface brief 等でコスト値が変わったことを確認しましょう(例:1Gbps リンクのコストが 10 になる等)
設定確認:ステータス確認コマンド
設定が完了したら、意図通りに OSPF が動作しているかを確認します。 特に重要なのが 「ネイバー」「インターフェース」「ルーティングテーブル」 の 3 つの視点です。
ネイバーの確立確認(show ip ospf neighbor)
最も頻繁に使うコマンドです。隣接ルーターと正しく情報交換ができているかを確認します。
Router_B# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
1.1.1.1 1 FULL/DR 00:00:32 10.0.12.1 GigabitEthernet0/0
1.1.1.1 1 FULL/DR 00:00:35 10.0.21.1 GigabitEthernet0/1- Neighbor ID: 隣のルーターの ID が表示されているか。
- State:
FULLまたは2WAYになっているか。FULL/DR,FULL/BDR,FULL/DROTHER: 正常に情報交換完了2WAY/DROTHER: 正常(DR/BDR 以外のルーター同士)- ※
INIT,EXSTART,EXCHANGEで止まっている場合はトラブルの可能性があります。
インターフェース設定の確認(show ip ospf interface)
各インターフェースが正しいエリアに所属しているか、コスト値やタイマー値が合っているかを確認します。
Router_B# show ip ospf interface GigabitEthernet0/0
GigabitEthernet0/0 is up, line protocol is up
Internet Address 10.0.12.2/30, Area 0
Process ID 1, Router ID 2.2.2.2, Network Type BROADCAST, Cost: 1
Transmit Delay is 1 sec, State BDR, Priority 1
Designated Router (ID) 1.1.1.1, Interface address 10.0.12.1
Backup Designated router (ID) 2.2.2.2, Interface address 10.0.12.2
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5- Area: 意図したエリア ID(Area 0 など)になっているか。
- Cost: 設定したコスト値(帯域幅や手動設定)が反映されているか。
- Hello / Dead: 隣接ルーターと同じ値か(デフォルトは Hello 10秒 / Dead 40秒)ここがズレるとネイバーになりません。
ルーティングテーブルの確認(show ip route ospf)
最終的に、OSPF によって学習した経路情報がルーティングテーブルに載っているかを確認します。
Router_B# show ip route ospf
1.0.0.0/32 is subnetted, 1 subnets
O 1.1.1.1 [110/2] via 10.0.12.1, 00:00:12, GigabitEthernet0/0
[110/2] via 10.0.21.1, 00:00:12, GigabitEthernet0/1
3.0.0.0/32 is subnetted, 1 subnets
O IA 3.3.3.3 [110/3] via 10.0.12.1, 00:00:12, GigabitEthernet0/0- コード: 先頭の文字を確認します。
O: 同一エリア内(Intra-Area)の経路O IA: 別エリア(Inter-Area)からの経路- ECMP: 同じ宛先に複数の
viaが表示されていれば、負荷分散(Active/Active)が効いています。
まとめ
本記事では、Cisco ルーターを用いた OSPF の実践的な設定手順を解説しました。
- 基本
-
router ospfとnetworkコマンドでエリア参加させる。 - 応用
-
ABR を配置してエリアを分割し、LSA の氾濫を防ぐ。
- 冗長化
-
ECMP やコスト調整、フローティングスタティックを組み合わせて「切れないネットワーク」を作る。
- 実践
-
passive-interfaceやauto-costで、セキュリティとパフォーマンスを最適化する。
以上、最後までお読みいただきありがとうございました。



