はじめに
FortiGate を L3 ゲートウェイとして利用し、OSPF で動的に経路交換する構成は、企業ネットワークで広く採用されています。FortiGate は GUI(Network > OSPF)と CLI(config router ospf)の両方で OSPF を設定でき、マルチベンダー環境では Cisco などと相互接続して運用するケースも一般的です。
一方で、FortiGate はルーターである前にファイアウォールであるため、OSPF で経路を学習しても、それだけではセグメント間の通信が通らないといった、Cisco とは異なる注意点があります。
本記事では、FortiGate(FortiOS 7.4 / 7.6 系)での OSPF 設定を、GUI と CLI の両面で解説します。OSPF の仕組み(LSA・エリア・コスト)の基礎は、関連記事『OSPF とは|仕組みを図解で理解する LSA・エリア・コストの基礎』で扱っています。
- GUI(Network > OSPF)と CLI(
config router ospf)それぞれの設定手順 - シングルエリア・マルチエリア(ABR)構成とルート集約・再配布
config networkとconfig ospf-interfaceの使い分け- ネイバー確立とファイアウォールポリシーの注意点(FortiGate 固有)
get router info ospf ...を用いた動作確認
FortiGate の OSPF は、ルーター ID とエリアを定義し、config network(または GUI の Network 設定)で OSPF を有効化するインターフェースをエリアに対応づけるのが基本です。Cisco の network 文に相当する考え方ですが、設定構造とコマンド体系、確認コマンド(get router info ospf ...)は FortiGate 独自である点を押さえておくと、設定とトラブル切り分けがスムーズになります。
FortiGate の OSPF 設定の全体像
具体的な手順に入る前に、FortiGate の OSPF 設定の構造を整理します。

GUI と CLI の 2 系統
FortiGate では、OSPF を次の 2 通りで設定できます。どちらで設定しても、内部的には同じ設定(config router ospf)に反映されます。
GUI:
Network > OSPF ページで、ルーター ID・エリア・ネットワーク・インターフェース・ルート集約・再配布などを設定します。
CLI: config router ospf 配下で、config area・config network・config ospf-interface・config redistribute などのサブコマンドを使用します。
GUI に OSPF メニューが表示されない場合は、System > Feature Visibility(バージョンにより名称が異なる)で「Advanced Routing」を有効化します。
config network と config ospf-interface の違い
CLI で OSPF を扱う際、混同しやすいのが config network と config ospf-interface の役割の違いです。
config network:
どのプレフィックス(ネットワーク)を、どのエリアで OSPF に参加させるかを定義します。Cisco の network 文に近く、ここで OSPF が有効化されます。
config ospf-interface:
OSPF を有効化したインターフェースの個別パラメータ(ネットワークタイプ、プライオリティ、passive、Hello / Dead タイマー、MTU、MTU 無視、認証、BFD など)を調整します。
つまり、config network で「OSPF をどこで動かすか」を決め、config ospf-interface で「そのインターフェースをどう動かすか」を調整する、という分担です。基本設定では config network だけでも隣接は確立しますが、ネットワークタイプや passive、認証を制御したい場合に config ospf-interface を併用します。
FortiGate はファイアウォールである、という前提
FortiGate の OSPF で最も注意したいのが、ファイアウォールとしての性質です。
OSPF で経路を学習しても、その経路を使ったセグメント間の通信は、対応するファイアウォールポリシーがなければ通りません。公式の設定例でも、OSPF が動作する前提として、接続インターフェース間の通信を許可するファイアウォールポリシーが構成されています。
参考: Fortinet「Basic OSPF example」(FortiOS Administration Guide)
“Firewall policies are already configured to allow unfiltered traffic”
(接続インターフェース間の通信を許可するファイアウォールポリシーがあらかじめ構成されています。)
https://docs.fortinet.com/document/fortigate/7.6.4/administration-guide/358640/basic-ospf-example
さらに、OSPF の隣接確立に使われる Hello パケットは FortiGate 自身宛て・自身発のローカルトラフィックとして扱われ、新しめの FortiOS(7.4 系など)では local-in ポリシーの影響を受けて隣接が確立しないことがあります。これらの「ファイアウォール起因のハマりどころ」は、本記事後半の「動作確認とネイバー確立の注意点」で具体的に扱います。
基本設定: シングルエリア(GUI / CLI)
まずは最も基本的な、単一エリア(Area 0)の構成を設定します。ここでは、対向ルーターと接続する transit インターフェース(port2: 10.0.12.0/30)と、内部 LAN(port1: 192.168.10.0/24)を持つ FortiGate を例にします。両ネットワークを Area 0 で OSPF に参加させ、LAN 側はネイバーを作らないよう passive に設定します。

設定に入る前に、ルーター ID の扱いを確認します。ルーター ID は明示しなければインターフェースの IP アドレスから自動選出されますが、安定運用のためループバックインターフェースを作成し、その IP をルーター ID に設定する方法が推奨されています。
参考: Fortinet「FortiOS Networking Handbook」
“set the OSPF router ID the same as the loopback IP address”
(OSPF のルーター ID をループバックの IP アドレスと同じに設定する。)
https://fortinetweb.s3.amazonaws.com/docs.fortinet.com/v2/attachments/cf390652-1a11-11e9-9685-f8bc1258b856/Networking-Handbook-5.6.3.pdf
なお、ループバックインターフェースを OSPF に含める場合も、適切なファイアウォールポリシーが必要になる点は他のインターフェースと同様です。
GUI での設定(Network > OSPF)
GUI では Network > OSPF ページで設定します(メニューが表示されない場合は、System > Feature Visibility で Advanced Routing を有効化します)
- Router ID に
1.1.1.1を設定する(ループバック IP と揃えると運用しやすい) - Areas テーブルで Create New をクリックし、Area ID に
0.0.0.0、Type にRegularを指定する。 - Networks テーブルで Create New をクリックし、IP/Netmask に
10.0.12.0/255.255.255.252、Area に0.0.0.0を指定する。続けて LAN 側192.168.10.0/255.255.255.0も Area0.0.0.0で追加する。 - (任意)Interfaces テーブルで Create New をクリックし、LAN 側インターフェース(port1)を選択して Passive Interface を有効化する。ネットワークタイプや認証もここで調整できる。
- Apply(または OK)で適用する。
CLI での設定(config router ospf)
CLI では config router ospf 配下で、エリア・ネットワーク・インターフェースを定義します。GUI と CLI のどちらで設定しても、最終的に反映される設定は同じです。
config router ospf
set router-id 1.1.1.1
config area
edit 0.0.0.0
next
end
config network
edit 1
set prefix 10.0.12.0 255.255.255.252
set area 0.0.0.0
next
edit 2
set prefix 192.168.10.0 255.255.255.0
set area 0.0.0.0
next
end
config ospf-interface
edit "LAN-passive"
set interface "port1"
set passive enable
next
end
endポイントは次のとおりです。
config networkのset prefixは、ネットワークアドレスとサブネットマスク(ワイルドカードマスクではなく、通常のサブネットマスク)を指定します。Cisco のnetwork ... areaがワイルドカードマスクを使うのと異なる点に注意が必要です。set areaで、そのネットワークを所属させるエリアを指定します。- LAN 側の port1 は
config ospf-interfaceでset passive enableとし、Hello の送信を停止します。ネットワーク自体は広報されるため、通信には影響しません。
設定例の構造は、Fortinet 公式の OSPF 設定例に準拠しています(参考: Fortinet「Basic OSPF example」 https://docs.fortinet.com/document/fortigate/7.6.4/administration-guide/358640/basic-ospf-example )
この時点で、対向ルーターとの間で物理・IP の疎通が取れていれば、OSPF の隣接確立に進みます。隣接が FULL にならない場合は、ファイアウォールポリシーやパラメータ不一致が原因となることが多く、本記事後半の「動作確認とネイバー確立の注意点」で扱います。
マルチエリア・ルート集約・再配布
シングルエリアの構成を、マルチエリアとルート集約・再配布へ拡張します。ここでは前章の FortiGate を ABR として扱い、port2(10.0.12.0/30)を Area 0、port3(10.0.13.0/30)を Area 10 に所属させます。
マルチエリア構成と ABR
FortiGate を ABR にするには、config area に複数のエリアを定義し、config network で各プレフィックスを対応するエリアへ割り当てます。複数エリアに属するインターフェースを持つことで、その FortiGate が自動的に ABR として動作します。
config router ospf
set router-id 1.1.1.1
config area
edit 0.0.0.0
next
edit 0.0.0.10
next
end
config network
edit 1
set prefix 10.0.12.0 255.255.255.252
set area 0.0.0.0
next
edit 2
set prefix 10.0.13.0 255.255.255.252
set area 0.0.0.10
next
end
endエリア ID はドット区切り形式(0.0.0.10)でも記述できます。スタブや NSSA にする場合は、該当エリアで set type nssa や set stub-type を指定します。
ルート集約(area range と summary-address)
FortiGate のルート集約には、用途の異なる 2 種類があります。Cisco の area range / summary-address に対応します(Cisco での集約・再配布は関連記事『Cisco ルーターでの OSPF 設定手順とマルチエリア構成のコンフィグ例』を参照)
エリア間集約(ABR): config area 配下の config range で、エリア内の経路を集約して他エリアへ広報します。
config router ospf
config area
edit 0.0.0.10
config range
edit 1
set prefix 192.168.20.0 255.255.255.0
set advertise enable
next
end
next
end
end外部経路の集約(ASBR):
再配布した外部経路を集約するには、config summary-address を使用します。
config router ospf
config summary-address
edit 1
set prefix 172.16.0.0 255.255.0.0
set advertise enable
next
end
end再配布とデフォルトルート配布
スタティックルートや接続経路、BGP などの経路を OSPF へ取り込むには config redistribute を使用します。再配布を設定した FortiGate は ASBR として動作します。
config router ospf
config redistribute "static"
set status enable
set metric 20
set metric-type 2
end
config redistribute "connected"
set status enable
end
endset metric-type は外部経路のタイプ(1 または 2、既定は 2)を指定します。再配布する経路を限定したい場合は、set routemap でルートマップを併用します。
デフォルトルートを OSPF ドメインへ配布するには、トップレベルで set default-information-originate enable を設定します。原則として自身にデフォルトルートが存在する場合に配布され、always を指定すると存在しない場合でも配布します。
config router ospf
set default-information-originate enable
set default-information-metric 10
set default-information-metric-type 2
end各コマンドの詳細は公式 CLI リファレンスを参照してください(参考: Fortinet「config router ospf」 https://docs.fortinet.com/document/fortigate/7.4.0/cli-reference/526620/config-router-ospf )
インターフェース調整と冗長化
ネットワークタイプ・コスト・タイマーなど、インターフェース単位の調整は config ospf-interface で行います。冗長構成での経路選択も、コストや参照帯域で制御します。
コストと参照帯域
OSPF のコストは帯域幅から算出されますが、既定の参照帯域(100 Mbps)のままでは 100 Mbps 以上のインターフェースがすべてコスト 1 になります。トップレベルの set auto-cost-ref-bandwidth(Mbps 単位)で参照帯域を引き上げ、インターフェース個別のコストは config ospf-interface の set cost で上書きします。参照帯域は OSPF ドメイン内のすべての機器で統一します。
config router ospf
set auto-cost-ref-bandwidth 10000
config ospf-interface
edit "port2-ospf"
set interface "port2"
set cost 10
next
end
endバックアップ回線のコストを高く設定すれば、主系・副系を分ける Active/Standby 構成にできます。同コストの経路が複数ある場合は、自動的に負荷分散(ECMP)されます。
ネットワークタイプ・タイマー・passive
config ospf-interface では、ネットワークタイプ(broadcast / point-to-point / non-broadcast / point-to-multipoint)、Hello / Dead タイマー、passive などを調整します。ネットワークタイプとタイマーは、対向と一致していないと隣接が確立しない点に注意が必要です。
config router ospf
config ospf-interface
edit "port2-ospf"
set interface "port2"
set network-type point-to-point
set hello-interval 10
set dead-interval 40
set passive disable
next
end
endBFD による高速検知
リンク障害をより早く検知したい場合は、BFD(Bidirectional Forwarding Detection)を併用します。トップレベルまたはインターフェース単位で有効化できます(対向側も BFD に対応している必要があります)。
config router ospf
set bfd enable
end動作確認とネイバー確立の注意点
設定後は、OSPF が想定どおり動作しているかを確認します。FortiGate では Cisco の show ip ospf ... ではなく、get router info ospf ... 系のコマンドを使用します。
動作確認コマンド(get router info ospf …)
主に次のコマンドで、隣接・インターフェース・経路を確認します。
get router info ospf neighbor: 隣接ルーターと状態を確認する。get router info ospf interface: インターフェースのエリア・コスト・タイマー・ネットワークタイプを確認する。get router info ospf status: OSPF プロセスとエリアの状態を確認する。get router info routing-table ospf: ルーティングテーブルに載った OSPF 経路を確認する。get router info ospf database: LSDB(リンクステートデータベース)を確認する。
FGT1 # get router info ospf neighbor
OSPF process 0, VRF 0:
Neighbor ID Pri State Dead Time Address Interface
10.11.103.3 1 Full/DR 00:00:37 10.0.12.2 port2State が Full(マルチアクセスでは Full/DR・Full/Backup、point-to-point では Full/-)であれば、隣接が確立しています。状態遷移(Down → Init → 2-Way → ExStart → Exchange → Loading → Full)の途中で止まる場合は、原因の切り分けが必要です。より詳細に追跡する場合は diagnose ip router ospf level info などのデバッグを使用します。隣接が確立しない場合の一般的な切り分け(タイマー・エリア ID・MTU・ネットワークタイプ・認証の一致)は、横断スポークの関連記事『OSPF ネイバーが確立できない原因|状態別の切り分け手順』を参照してください。
ファイアウォールポリシーとネイバー確立(FortiGate 固有の注意点)
FortiGate は OSPF を扱う場合でもファイアウォールであり、Cisco などのルーターにはない次の注意点があります。
1. 経路学習と通過トラフィックは別
OSPF で経路を学習しても、その経路を使ったセグメント間の通信は、対応するファイアウォールポリシーがなければ通りません。「OSPF の経路は入っているのに通信できない」という場合、まずファイアウォールポリシーの有無を確認します。
2. 隣接(Hello)はローカルトラフィック
OSPF の Hello パケットは、FortiGate 自身が送受信するローカルトラフィックとして扱われます。新しめの FortiOS(7.4 系など)では、対象インターフェースに制限的な local-in ポリシーが設定されていると Hello がドロップされ、隣接が確立しないことが報告されています(フローデバッグで iprope_in_check() check failed が確認できます)。この場合は、OSPF を許可する local-in ポリシーを設定します(参考: Fortinet Community https://community.fortinet.com/support-forum-92/local-in-policy-ospf-issue-222888 )
3. 特殊構成ではマルチキャスト許可が必要
VXLAN や IPsec トンネルを介して隣接を確立する構成では、OSPF のマルチキャストアドレス(224.0.0.5 / 224.0.0.6)を許可するマルチキャストポリシーが必要になる場合があります。OSPF の Hello は TTL が 1 のため、TTL を減算しない設定が必要なケースもあります。
4. MTU 不一致による停止
両端の MTU が一致しないと、EXSTART / EXCHANGE で停止します。これは Cisco を含む OSPF 全般に共通する挙動です。FortiGate では config ospf-interface の set mtu で値を合わせるか、やむを得ない場合は set mtu-ignore enable で回避します(回避策のリスクは横断スポーク記事を参照)。
まとめ
FortiGate の OSPF は、GUI(Network > OSPF)と CLI(config router ospf)の両方で設定でき、エリア・ネットワーク・インターフェースを定義するのが基本です。ファイアウォールである性質上、経路学習とは別にファイアウォールポリシーが必要で、ネイバー確立では local-in ポリシーや MTU にも注意します。
- GUI(Network > OSPF)と CLI(config router ospf)の 2 系統
- config network での OSPF 有効化と config ospf-interface での調整
- config range と summary-address による 2 種類のルート集約
- config redistribute と default-information-originate での経路取り込み
- 経路学習とは別に必要な通過トラフィックのファイアウォールポリシー
- local-in ポリシー・MTU によるネイバー確立の阻害に注意
- get router info ospf neighbor / routing-table での動作確認
以上、最後までお読みいただきありがとうございました。
