FortiGate の OSPF 設定手順|GUI と CLI のマルチエリア構成例

  • URLをコピーしました!
目次

はじめに

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 networkconfig 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 areaconfig networkconfig ospf-interfaceconfig redistribute などのサブコマンドを使用します。

GUI に OSPF メニューが表示されない場合は、System > Feature Visibility(バージョンにより名称が異なる)で「Advanced Routing」を有効化します。

config network と config ospf-interface の違い

CLI で OSPF を扱う際、混同しやすいのが config networkconfig 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 を有効化します)

  1. Router ID に 1.1.1.1 を設定する(ループバック IP と揃えると運用しやすい)
  2. Areas テーブルで Create New をクリックし、Area ID に 0.0.0.0、Type に Regular を指定する。
  3. 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 も Area 0.0.0.0 で追加する。
  4. (任意)Interfaces テーブルで Create New をクリックし、LAN 側インターフェース(port1)を選択して Passive Interface を有効化する。ネットワークタイプや認証もここで調整できる。
  5. 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 networkset prefix は、ネットワークアドレスとサブネットマスク(ワイルドカードマスクではなく、通常のサブネットマスク)を指定します。Cisco の network ... area がワイルドカードマスクを使うのと異なる点に注意が必要です。
  • set area で、そのネットワークを所属させるエリアを指定します。
  • LAN 側の port1 は config ospf-interfaceset 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 nssaset 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
end

set 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-interfaceset 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
end

BFD による高速検知

リンク障害をより早く検知したい場合は、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    port2

State が Full(マルチアクセスでは Full/DRFull/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-interfaceset 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 での動作確認

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

関西を拠点に活動する、現役インフラエンジニア。経験20年超。

大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

保有資格
CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

▶ 運営者プロフィール(詳細)

目次