FortiGate VRRP の設定手順|HA(FGCP)との違いと使い分け

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

はじめに

FortiGate で冗長化(High Availability)を構成する場合、メーカー独自のクラスタ機能である HA(FGCP: FortiGate Clustering Protocol) を利用するのが一般的です。設定が同期され、セッションも引き継がれるため、FortiGate 同士で構成するなら HA の利用が適しています。

ただし、HA では対応できず、あえて VRRP を選択する場面もいくつか存在します。

  • 他社ベンダーとの冗長化: Cisco ルータと FortiGate を組み合わせて冗長構成を組みたい場合
  • 移行期間の並行稼働: 旧ルータから新 FortiGate へ、ゲートウェイを段階的に切り替えたい場合
  • 特殊な L2 設計: 複数機器でゲートウェイ IP を共有したい場合など

本記事では、オープンスタンダードな冗長化プロトコルである VRRP(Virtual Router Redundancy Protocol)を、FortiGate で設定する手順について整理します。検証は FortiOS 7.4 / 7.6 系 を前提にしています。

この記事でわかること
  • HA(FGCP)と VRRP の主要な違いと使い分け
  • 実務で使える VRRP の CLI 設定手順(Master / Backup)
  • 回線障害時に切り替える「経路監視(vrdst)」の設定
  • 設計時に押さえておきたい制約事項とトラブルシューティングのポイント

FortiGate HA(FGCP)と VRRP の違い

FortiGate には、メーカー独自の高可用性機能 HA(FGCP) が備わっています。「FortiGate 2 台で冗長化したい」という要件であれば、まずは HA の利用が適しています。

一方、VRRP はオープンスタンダードな規格で、「ゲートウェイの IP アドレスを複数機器で共有する」機能に特化しています。両者の主要な違いは、設定や通信状態(セッション)が同期されるか という点にあります。

機能比較表

項目HA(FGCP)VRRP
同期機能設定・ログ・セッションを同期なし(個別に動作)
設定の手間Master のみで完結(同期される)各機器で個別に設定
切り替わりシームレス(通信断ほぼなし)通信断が発生(再接続が必要)
互換性FortiGate 同士のみ他社製品と混在可能(標準規格)
構成台数通常 2 台(最大 4 台)制限なし(理論上 255 台)

参考: Fortinet Document Library / VRRP(FortiOS 7.6.4)
“VRRP is an open standard High Availability protocol, so it can be used between FortiGate and another vendor firewall.”
(VRRP はオープンスタンダードな高可用性プロトコルであり、FortiGate と他社ファイアウォールの間で利用できます)
https://docs.fortinet.com/document/fortigate/7.6.4/administration-guide/850547/vrrp

使い分けのポイント

HA(FGCP)を選ぶ場面

  • FortiGate 同士で冗長化を組む場合(基本はこちら)
  • 障害時に Web 会議や VPN を切断させたくない場合(セッション同期が必要)
  • 設定を一元管理して運用負荷を抑えたい場合

VRRP を選ぶ場面

  • マルチベンダー構成: 「メインは Cisco ルータ、バックアップは FortiGate」など、メーカーが混在する環境
  • システム移行期: 稼働中の既存ルータ(他社製)を残したまま、新 FortiGate を追加してゲートウェイを切り替えたい場合
  • 設定の分離: 2 台で異なるポリシーや設定を入れて運用したい場合

なお、FortiGate には HA 以外にも FGSP(FortiGate Session Life Support Protocol)など複数の冗長化方式があり、要件によって使い分けが変わります。冗長化方式の全体像は次のセクションで整理します。

FortiGate の冗長化選択肢の全体像

VRRP と HA の比較に加え、FortiGate には複数の冗長化方式が用意されています。要件に応じた選定の参考として、主要な選択肢を整理します。

方式動作概要同期範囲主な用途
HA(FGCP)A-Pアクティブ・スタンバイの 2 台構成設定・ログ・セッションを同期標準的な冗長化(最も一般的)
HA(FGCP)A-Aアクティブ・アクティブの負荷分散設定・ログ・セッションを同期スループット重視・高負荷環境
FGSPセッションのみを同期するクラスタセッション同期のみ(設定は独立)設定を個別運用しつつ通信断を抑えたい場合
VRRPゲートウェイ IP を複数機器で共有なしマルチベンダー、移行期間の並行稼働
SD-WAN(複数 ISP)出口経路の冗長化WAN 回線の冗長化(機器冗長とは別軸)

参考: Fortinet Document Library / VRRP(FortiOS 7.6.4)
“If the backup router is a FortiGate, during a VRRP failover as the FortiGate begins operating as the new primary router, it will not have session information for all of the failed over in-progress sessions.”
(Backup が FortiGate である場合、VRRP フェイルオーバー時に進行中のセッション情報は引き継がれません)
https://docs.fortinet.com/document/fortigate/7.6.4/administration-guide/850547/vrrp

選定の目安として、「FortiGate 同士で完全な冗長化が必要」なら HA(FGCP)「設定は個別運用したいがセッション断は避けたい」なら FGSP「他社機器との混在やゲートウェイ IP 共有が必要」なら VRRP という整理ができます。機器単位の冗長化と回線単位の冗長化(SD-WAN)は併用が前提になるケースが多いため、組み合わせて検討することをおすすめします。

VDOM を併用する環境では、VRRP は対象 VDOM 内で完結する設計になります。複数 VDOM を運用する場合の前提整理は、関連記事『FortiGate VDOM の設定と GUI/CLI の違い|LAG+VLAN 構成例』(https://mytech-blog.com/fortigate-vdom/)も参考にしてください。

VRRP 設定例

Master(Primary)側の設定

通常時に通信を処理するメイン機(Master)の設定です。VRRP では Priority(優先度) の数値が最も大きい機器が Master に選出されます。FortiGate での最大値である 255 を設定し、確実に Master になるようにします。

前提

  • 物理 IP: 192.168.100.251
  • 仮想 IP(VRIP): 192.168.100.254
  • インターフェース: port3
config system interface
    edit "port3"
        set vdom "root"
        set ip 192.168.100.251 255.255.255.0
        set allowaccess ping
        set vrrp-virtual-mac enable
        # ▼ ここから VRRP の設定
        config vrrp
            edit 1
                # ▲ この "edit 1" の数値が VRID(仮想ルータ ID)として機能
                set version 2
                set vrip 192.168.100.254
                set priority 255
            next
        end
    next
end

コマンドの補足

edit 1

この数値が VRID(仮想ルータ ID)そのもの を表します。set vrid というコマンドは存在しないため、別途記述する必要はありません。VRID は対向機器と一致させる必要があり、FortiGate の有効範囲は 1〜255 です。

set version

VRRPv2(既定)と VRRPv3 から選択します。他社機器と接続する場合はバージョンを揃える ことが重要です。Cisco 機器はモデル・IOS バージョンにより既定が異なるため、接続前に確認することをおすすめします。

set vrrp-virtual-mac enable

VRRP 仮想 MAC アドレス(00-00-5E-00-01-XX)を有効化します。他社機器との連携や、フェイルオーバー時の ARP テーブル更新を高速化したい場合に有効化 をおすすめします。

参考: Fortinet Community / Configuration Example: How to configure VRRP between a FortiGate and a Cisco router
“It is also important to ensure the following command is issued on the FortiGate network interface. This enables the VRRP virtual MAC address between the two devices: set vrrp-virtual-mac enable”
(FortiGate のインターフェースで set vrrp-virtual-mac enable を有効化することが重要です。これにより 2 機器間で VRRP 仮想 MAC アドレスが利用されます)
https://community.fortinet.com/t5/FortiGate/Configuration-Example-How-to-configure-VRRP-between-a-FortiGate/ta-p/196781

Backup(Secondary)側の設定

障害時に備えて待機する予備機(Backup)の設定です。Master よりも低い Priority を設定することで、待機側として動作します。

前提

  • 物理 IP: 192.168.100.252
  • 仮想 IP(VRIP): 192.168.100.254(Master と同じ)
config system interface
    edit "port3"
        set vdom "root"
        set ip 192.168.100.252 255.255.255.0
        set allowaccess ping
        set vrrp-virtual-mac enable
        # ▼ ここから VRRP の設定
        config vrrp
            edit 1
                # ▲ "edit 1" の数値が VRID(Master と一致させる)
                set version 2
                set vrip 192.168.100.254
                set priority 100
            next
        end
    next
end

【設定まとめ】Master と Backup の比較

Master と Backup の設定の違いは、基本的に 「自身の物理 IP」「Priority(優先度)」 の 2 点だけです。

設定項目Master(FG01)Backup(FG02)備考
物理 IP192.168.100.251192.168.100.252機器固有のアドレス
仮想 IP(VRIP)192.168.100.254192.168.100.254同一にする
VRID(edit の番号)11同一にする
Priority255(最高)100(低)この差で Master / Backup を決定
Version22対向と揃える(v2 / v3)
仮想 MACenableenable他社連携・高速切替時に有効

Preempt(切り戻し)設定について

VRRP には Preempt(プリエンプト) という機能があります。Master がダウンして Backup が昇格した後、復旧した Master が即座に Master の座を取り戻す動作を制御するパラメータです。

  • 既定値: enable(有効)
  • 動作: 復旧した Master(Priority 255)を検知すると、Backup(Priority 100)は待機状態に戻ります

通常はそのままで問題ありませんが、回線が瞬断しやすい環境で頻繁な切り替わりを避けたい場合は、set preempt disable を設定することもあります。

参考: Fortinet Document Library / Preempt mode(FortiOS 7.6.5)
“When preempt mode is enabled (the default setting), a higher priority backup router can preempt a lower priority primary router.”
(Preempt モードが有効な場合(既定)、優先度の高い Backup ルータが優先度の低い Primary ルータを置き換えることが可能です)
https://docs.fortinet.com/document/fortigate/7.6.5/administration-guide/762726/preempt-mode

タイマーパラメータと既定値の早見表

VRRP の挙動は複数のタイマー値で決まります。他社機器と接続する場合、これらの値を揃えないとネゴシエーションが成立しないことがあります。FortiGate の既定値と仕様範囲をまとめます。

パラメータ既定値仕様範囲役割・補足
priority1001〜255大きい値が Master に選出される。Master 側は 255 を推奨
adv-interval1 秒1〜255 秒Master が Advertisement を送信する間隔
start-time3 秒1〜255 秒起動直後に Advertisement の送受信を待つ時間
preemptenableenable / disable復旧した Master が再昇格するかを制御
version22 / 3VRRPv2 / VRRPv3 の選択。対向と揃える必要あり
vrgrp00〜65535VRRP グループ ID。複数 VRID を連動させる場合に使用
Backup 昇格までの待機時間約 3 秒adv-interval × 3 で算出(既定 1 秒 × 3)
マルチキャストアドレス224.0.0.18VRRP Advertisement の宛先(IPv4)
プロトコル番号112IP プロトコル番号

参考: Fortinet Document Library / VRRP failover(FortiOS 7.4.4)
“The waiting period is three times the adv-interval. … The VRRP startup time is the time a backup or primary VRRP router waits before sending or receiving VRRP advertisements before potentially changing state (start-time in seconds, 1 – 255, default = 3).”
(Backup ルータの待機時間は adv-interval の 3 倍です。起動時間の既定値は 3 秒、範囲は 1〜255 秒です)
https://docs.fortinet.com/document/fortigate/7.4.4/administration-guide/237072/vrrp-failover

FortiOS 7.6 系での新機能: ミリ秒単位の Hello タイマー

FortiOS 7.6.0 以降では、Advertisement 間隔をミリ秒単位で設定できるようになりました。秒単位では実現できなかったサブセコンドのフェイルオーバーが可能になり、可用性要件が高い環境で活用できます。ただし、対向機器側もミリ秒単位設定に対応している必要があるため、構成前に対向側の仕様確認をおすすめします。

重要機能: 経路監視(vrdst)で障害時に切り替える

VRRP を設計する際、見落としやすい挙動があります。「ルータの電源が落ちたら切り替わるが、上流のインターネット回線が切れても切り替わらない」 というものです。

経路監視が必要な理由

VRRP は標準では「自身のインターフェースが UP / DOWN か」のみを判定します。FortiGate の上流に接続されている ONU や上位ルータが故障しても、FortiGate との間の LAN ケーブルが UP のままであれば、FortiGate のインターフェースは UP と判定されます。

結果、Master 状態が維持されたまま、上流への通信だけが届かない サイレント障害(パケットが黙って失われる状態) が発生する可能性があります。これを回避するための仕組みが 経路監視(vrdst です。

監視設定

以前は config system link-monitor を VRRP と組み合わせる複雑な設定が必要でしたが、現在は VRRP 設定の中に set vrdst(Virtual Router Destination)を追加するだけで構成できます。

動作の仕組み

  1. 指定した IP アドレス(例: 8.8.8.8)へ常時 Ping を送信
  2. Ping が失敗すると、Master の Priority が低下
  3. Backup の Priority のほうが高くなり、Backup が Master に昇格(フェイルオーバー)

設定コマンド(Master / Backup 共通)

config system interface
    edit "port3"
        config vrrp
            edit 1
                # ▼ 監視先の IP アドレス(例: Google Public DNS)
                set vrdst 8.8.8.8
            next
        end
    next
end

設計時のポイント

監視先

直上の上位ルータ(GW)や信頼性の高い 8.8.8.8 などを設定します。vrdst最大 2 つまで指定可能 で、両方が到達不能になったときのみ障害判定されます(片方のみでは切り替わりません)

共通設定

この設定は Master だけでなく Backup 側にも入れておくこと をおすすめします。Backup 側の上流が落ちている状態で Master に昇格してしまう事故の防止につながります。

Link Monitor との使い分け

ネット上の古い記事には config system link-monitor を使う方法が書かれていることがあります。

Link Monitor

インターフェースのダウンやルーティング制御を行う汎用機能。VRRP との連携設定はやや複雑です。

vrdst(推奨)

VRRP 専用の監視機能。設定がシンプルで、VRRP のステータス変更に直結します。新規構築では vrdst の利用が標準的です。

参考: Fortinet Document Library / VRRP failover(FortiOS 7.4.4)
“Up to two VRRP destination addresses can be configured to be monitored by the primary router. As a best practice, the destination addresses should be remote addresses.”
(Primary ルータが監視する VRRP 宛先アドレスは最大 2 つまで設定可能です。ベストプラクティスとしてリモートのアドレスを設定することが推奨されます)
https://docs.fortinet.com/document/fortigate/7.4.4/administration-guide/237072/vrrp-failover

vrdst-priority で高速フェイルオーバーを実現する

vrdst だけでは、上流障害時に Master が Advertisement を停止してから Backup が昇格するまで、adv-interval × 3(既定で約 3 秒)の待機時間が発生します。この待機時間を短縮するには、vrdst-priority オプションが利用できます。

vrdst-priority は、vrdst 監視先への到達性が失われた際、Master 自身が Advertisement に含める Priority を能動的に低下させて Backup へ通知する 仕組みです。Backup は Advertisement の停止を待つことなく、Priority の逆転を即座に検知して Master に昇格できます。

設定例

config system interface
    edit "port3"
        config vrrp
            edit 1
                set vrip 192.168.100.254
                set priority 255
                set vrdst 8.8.8.8
                set vrdst-priority 10    # ← 障害時に通知する低下後の Priority
            next
        end
    next
end

この例では、Master 機の通常 Priority は 255 ですが、vrdst8.8.8.8 への到達性が失われた瞬間、自身の Priority を 10 として Advertisement を送信します。Backup の Priority(100)のほうが高くなるため、即座にフェイルオーバーが発生します。

参考: Fortinet Document Library / VRRP failover(FortiOS 7.6.4)
“The vrdst-priority option can be used to reduce IPv4 VRRP failover times. This option causes the primary router to actively signal to the backup routers when the primary router cannot reach its configured destination addresses.”
vrdst-priority オプションは IPv4 VRRP のフェイルオーバー時間を短縮するために利用できます。Master が監視先に到達できない場合に、Backup へ能動的に通知する動作になります)
https://docs.fortinet.com/document/fortigate/7.6.4/administration-guide/237072/vrrp-failover

なお、vrdst-priority は IPv4 VRRP では従来から利用可能ですが、IPv6 VRRP(VRRP6)では FortiOS 7.6.x 以降での対応 となっています。古い FortiOS で IPv6 を利用する場合は注意してください。

設計時に押さえたい制約事項

VRRP は標準規格でシンプルですが、設計段階で把握しておかないと後から手戻りにつながるポイントがあります。導入前に確認したい制約を整理します。

インターフェース・トポロジに関する制約

VRRP は物理インターフェースまたは VLAN インターフェースでのみ設定可能

複数の物理ポートを束ねた hardware-switch インターフェースでは構成できません。LAG(aggregate)や VLAN 上では構成可能です。

同一サブネット内に閉じる

VRRP は L2 隣接が前提のプロトコルです。ルータを跨いだ広域構成では利用できず、ピア同士は同じ L2 セグメントに所属する必要があります。

マルチキャスト通信が前提

VRRP は 224.0.0.18 を使用します。中間スイッチで IGMP snooping により VRRP マルチキャストが遮断されないか、設計段階で確認することをおすすめします。

セッション・通信の取り扱いに関する制約

セッション同期がない

フェイルオーバー時に既存セッションは切断されます。HTTP / HTTPS / VPN / SSH などは再接続が必要になる前提で設計してください。HA(FGCP)と最も大きく異なる点です。

下流機器の ARP キャッシュに依存

仮想 MAC(vrrp-virtual-mac enable)を有効化しない場合、フェイルオーバー時に下流機器の ARP テーブル更新(gratuitous ARP の伝播)まで通信断時間が伸びる可能性があります。

状態通知のみで経路情報は流れない

VRRP はルータの状態を通知するプロトコルであり、ルーティング情報を交換しません。経路冗長は別途 OSPF や BGP、SD-WAN などで設計します。

バージョン・認証に関する制約

VRRPv3 では認証フィールドが廃止

VRRPv2 にはパスワード認証フィールドがありましたが、VRRPv3 では仕様から削除されています。認証要件がある場合はバージョン選定で考慮が必要です。

対向と Version の整合が必要

Cisco IOS では既定が VRRPv2、新しい IOS XE では VRRPv3 が既定など、機器によって異なります。set version を明示的に指定し、対向側と揃える設計をおすすめします。

VDOM 環境での制約

VRRP 設定は VDOM 内で完結

マルチ VDOM 環境では、対象 VDOM 内のインターフェースに対して個別に設定します。Global ビューで一括管理することはできません。

参考: Fortinet Community / Technical Tip: FortiGate VRRP configuration and debug
“VRRP can be configured only on physical interfaces or VLAN interfaces. It is not possible to configure VRRP on hardware-switch interfaces where multiple physical interfaces are combined into a hardware-switch interface.”
(VRRP は物理インターフェースまたは VLAN インターフェース上でのみ構成可能です。複数の物理インターフェースを束ねた hardware-switch インターフェース上では構成できません)
https://community.fortinet.com/t5/FortiGate/Technical-Tip-FortiGate-VRRP-configuration-and-debug/ta-p/197015

動作確認コマンドと見方

設定が完了したら、以下のコマンドでステータスを確認します。

① VRRP ステータスの確認

最も基本的な確認コマンドです。自分が現在 Master(PRIMARY)か Backup かを確認します。

get router info vrrp

Master 機の表示例(正常時)

Interface: port3, primary IP address: 192.168.100.251
  VRID: 1
    vrip: 192.168.100.254
    priority: 255, state: PRIMARY        <-- ★ここを確認
    vrdst: 8.8.8.8

Backup 機の表示例(正常時)

Interface: port3, primary IP address: 192.168.100.252
  VRID: 1
    vrip: 192.168.100.254
    priority: 100, state: BACKUP         <-- ★ここを確認

確認ポイント

  • state: PRIMARY なら稼働中、BACKUP なら待機中です。
  • priority: 設定どおりの値か確認します。Master 機なのに priority が下がっている場合、vrdst 監視が作動している可能性があります。

② 監視状況の確認(Ping ステータス)

set vrdst で設定した監視先に Ping が応答しているかを確認します。vrdst は内部的に link-monitor の仕組みを利用しているため、以下のコマンドで状態を確認できます。

diagnose sys link-monitor status

表示例

Link Monitor: vrrp-1-1, Status: alive    <-- ★ここを確認
  Peer: 8.8.8.8(8.8.8.8)
    protocol: ping, state: alive
    Packet lost: 0.000%                   <-- パケットロス率
    Latency(Min/Max/Avg): 3.6/4.6/4.1 ms

確認ポイント

  • Status: alive なら正常。die の場合は監視失敗(障害判定された状態)です。
  • トラブルシュート: 意図せずフェイルオーバーが発生する場合、Packet lost を確認し、回線品質の劣化に起因するフラッピングかを切り分けます。

③ VRRP デバッグログの確認

VRRP のネゴシエーションが成立しない場合、デバッグログの出力で原因を切り分けます。

# デバッグログを有効化
diagnose debug application vrrpd -1
diagnose debug enable

# 確認後はデバッグを無効化
diagnose debug disable
diagnose debug reset

よくあるエラー出力例

[vrrp_packet_proc:1411]: cannot find vrt (11, 39)
                                     ↑   ↑
                                     |   └ 受信した VRID(対向側)
                                     └─── 受信したインターフェース番号

このログは、自機で設定している VRID と対向機器が送信している VRID が一致していないことを示しています。Cisco 機器との接続時に最も発生しやすいトラブルで、両機器の VRID を再確認することで解消します。

④ VRRP パケットのキャプチャ

VRRP Advertisement が物理層・L2 層で正しく送受信されているかを確認するには、パケットキャプチャが有効です。

# VRRP(プロトコル番号 112)のパケットをキャプチャ
diagnose sniffer packet <インターフェース名> "proto 112" 4 0 a
# 例: diagnose sniffer packet port3 "proto 112" 4 0 a

Master からの Advertisement が確認できない場合、以下の可能性があります。

  • 中間スイッチでの VRRP マルチキャスト(224.0.0.18)の遮断
  • VLAN タグ不一致
  • インターフェースの物理リンクダウン

参考: Fortinet Community / Technical Tip: FortiGate VRRP configuration and debug
“The VRRP is an open standard protocol, and it uses protocol number 112 for IPv4 … The VRRP multicast address is 224.0.0.18.”
(VRRP は IPv4 でプロトコル番号 112 を使用します。VRRP マルチキャストアドレスは 224.0.0.18 です)
https://community.fortinet.com/t5/FortiGate/Technical-Tip-FortiGate-VRRP-configuration-and-debug/ta-p/197015

⑤ Master / Backup の状態が頻繁に切り替わる場合

意図せず Master / Backup の状態が頻繁に変わる(フラッピング)場合、以下のチェックをおすすめします。

start-time を延長してみる

スパニングツリーが有効な L2 スイッチを経由する場合、起動直後に Advertisement が遅延することがあります。set start-time 10 のように延長すると安定するケースがあります。

Packet lost を確認

diagnose sys link-monitor status で監視先へのパケットロス率を確認し、回線品質に起因するフラッピングかを切り分けます。

vrgrp の設定漏れ

複数 VRID を連動させたい場合に vrgrp が未設定のままだと、片方だけが切り替わる挙動になります。

まとめ

本記事では、FortiGate における VRRP(Virtual Router Redundancy Protocol)の設定手順について整理しました。

  • FortiGate 同士の冗長化は HA(FGCP)が基本、他社製品との連携や特殊要件では VRRP を選択する
  • config vrrp 配下の edit <番号> が VRID として機能するため、set vrid の記述は不要(公式構文に存在しない)
  • Cisco などとの接続では set vrrp-virtual-mac enable の有効化と set version の整合が前提になる
  • フェイルオーバー時に既存セッションが切断されることを前提に設計する
  • set vrdst を Master / Backup の両方に設定し、上流障害時のサイレント障害の防止につながる
  • 高速切替が必要な場合は vrdst-priority を追加し、Master が Priority を能動的に低下させることでフェイルオーバー時間を短縮できる
  • hardware-switch 非対応・L2 隣接前提・セッション非同期など、設計前に制約を把握しておくことで手戻りを防げる

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

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

この記事を書いた人

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

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

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

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

目次