FortiGate設定マニュアル - HA徹底入門
【第4回】HAの同期と切り替え
仮想MACアドレスによって起こる障害
仮想MACアドレスはデフォルトで一定のルールに基づいて割り当てられるため、L2ネットワーク上に同じ仮想MACアドレスを持つシステムが複数存在すると、フラッピング現象が起きて通信不能に陥ります(つながったり、つながらなくなったりします)。具体的には内部イントラネット環境、PPPoE回線、ブリッジタイプの高速インターネット回線で、このような現象が発生します。
この現象は、機器の物理ネットワークポートの構成に依存するため、同一機種間だけでなく、ネットワークポートの構成の順番が似ている機種間でも起こり得ます。解決方法は仮想MACアドレスを変更してバッティングを避けることです。
仮想MACアドレスの変更方法
仮想MACアドレスの変更方法は3種類あります。v7.4系以前では1種類のみです。
方法1)グループIDを変更する(v7.4系以前)。
グループIDの変更は、従来の仮想MACアドレスの割り当てルールに沿った最も基本的な変更方法です。グループIDはWebGUI/CLIのどちらでも変更可能です。変更後は設定が同期されます。ただし、この方法は周辺機器の仮想MACアドレスが分からなかった場合、変更後もまた他の機器と被ってしまう恐れがあります。PPPoE回線やブリッジタイプの高速インターネット回線においては、ほとんど運任せという欠点があります。
[システム] > [HA] を選択 → 自身の機器を選択して[編集] → 「グループID」の数値を変更します。

(ha) # set group-id 160 << HAのグループID(1号機&2号機共通)
(ha) # end
方法2)手動で割り当てて変更する(v7.6系以降)。
v7.6系以降、各インターフェースの設定で任意の仮想MACアドレスを割り当てる機能が追加されました。使用する全てのインターフェースで仮想MACアドレスを設定してください。MACアドレスのルールにより、第1オクテットを奇数にすることはできません。
(interface) # edit internal1 << インターフェース選択
(internal1) # set virtual-mac 02:02:02:02:02:02 << 仮想MACアドレス入力
Customized MAC address could be easily conflict with other interface or existing device, please make sure the MAC has no conflicts.Do you want to continue? (y/n) y << “y” を選択
(internal1) # end
# diagnose sys ha mac
(中略)
prio=0, phy_index= 3, itf_name=internal1, mac=84.39.8f.93.fa.69, vmac=02.02.02.02.02.02, linkfail=0
方法3)自動でランダムに割り当てて変更する(v7.6系以降)。
v7.6系以降、自動で割り当てる機能が追加されました。フォーティネットのアルゴリズムに基づいて、周囲と被る可能性の低いアドレスを割り当てられます。仮想MACアドレスはバーチャルクラスターID、グループID、物理的なインデックスに基づいて決定されます。
(ha) # set auto-virtual-mac-interface wan1 internal1 << インターフェース選択
(ha) # end
# diagnose sys ha mac
(中略)
prio=0, phy_index= 0, itf_name= wan1, mac=84.39.8f.93.fa.66, vmac=86.39.8f.93.fa.66, linkfail=0
prio=0, phy_index= 3, itf_name=internal1, mac=84.39.8f.93.fa.69, vmac=86.39.8f.93.fa.69, linkfail=0
GARP(Gratuitous ARP:グラチューイタスアープ)
通称「ジーアープ」または「ガープ」と呼ばれます。フェイルオーバーが発生すると、FortiGate上のIPアドレスを持つ全てのポート(管理インターフェースやハートビートを除く)からGARPが送信されます。
GARPは特定のイベント(ルータの切り替え等)が発生した時、自分自身のIPアドレスに対するMACアドレスを自発的に周囲に伝えるARPの仕組みです。FGCPやVRRPなどの冗長化プロトコルで活用されています。ネットワーク上の他の機器に自身の存在を知らせることを目的とするため、宛先MACアドレスはブロードキャストアドレス(ff:ff:ff:ff:ff:ff)になります。

なぜGARPが必要なのか
フェイルオーバーが発生すると、FortiGateに接続されているスイッチ側の物理的なポートが変わります。機器のIPアドレスやMACアドレスが同じであっても、接続されているポートが突然変わってしまったら、正しい通信は行えません。切り替わり後の新しい機器と接続ポートの関連を周囲のネットワーク機器に迅速に学習させる必要があります。
FortiGateが自らGARPを送信することで、隣接するスイッチのMACアドレステーブルやホストのARPキャッシュの更新を促し、通信の遅延を最小限に抑えます。

GARPの設定
FortiGateのGARPはデフォルトで有効になっており、フェイルオーバー発生直後に送信されます(8秒間隔で最終的に計5回)。GARPの送信回数を増やして送信間隔を短くすると、周囲のネットワーク機器がフェイルオーバーをより早く認識できるようになります。
設定の変更はCLIコマンドで行います。
(ha) # set gratuitous-arps enable << GARP有効
(ha) # set arps 5 << GARP送信の回数
(ha) # set arps-interval 8 << GARP送信の間隔
(ha) # set link-failed-signal disable << インターフェースのシャットダウン設定
(ha) # end
| 種類 | 解説 |
|---|---|
| gratuitous-arps | GARPの有効/無効を設定します。デフォルトはenableです。 |
| arps | フェイルオーバー発生時に送信するGARPの回数です。デフォルト値は5で、範囲は[1-60]です。 |
| arps-interval | GARPを送信する間隔(秒)です。最初のGARPはフェイルオーバー直後に送信されるため、この数値は2回目以降の間隔になります。フェイルオーバー時間を短縮する場合は、間隔を短くします。短時間でのトラフィック増加を防ぐには、間隔を長くします。デフォルト値は8で、範囲は[1-20]です。 |
| link-failed-signal | 有効にすると、フェイルオーバー後に1秒間、すべてのインターフェースをシャットダウンします。GARPでのネットワーク更新が上手くいかない場合や、GARPを無効にしている場合に使用します。デフォルトはdisableです。 |
リンクモニター(Link monitor)
インターフェースの健全性をチェックするための機能です。ネットワークの「死活監視」などとも呼ばれます。例えば下記のようなネットワーク構成で、FortiGateが接続されているスイッチの「その先の箇所」が切断された場合、FortiGateのインターフェースはリンクアップ状態のため、異常を検知できません。このような場合は「リンクモニター」で異常を検知できます。
通常のリンクモニターでは、FortiGateからリモートサーバに向けてパケットを送信し、送信が失敗した場合、そのインターフェースを「使用不能」と見なして回線の切り替えを行いますが、HAでは、これをフェイルオーバー発生のためのトリガーとして利用できます。
| リンクモニターが設定されていない場合 | リンクモニターが設定されている場合 |
|---|---|
![]() |
![]() |
リンクモニターの設定
リンクモニターを有効にすると、FortiGateは指定されたサーバのIPアドレスに向かって定期的にパケット(デフォルトはping)を送信します。設定はCLIコマンドでのみ行えます。
監視対象に指定するサーバには、必ず実在するIPアドレスを指定してください。ここで指定されたサーバへの通信が全て途切れた時、HA優先度が適用され、後述するフェイルオーバー発生のしきい値と比較されます。しきい値を越えた時、フェイルオーバーが発生します。
(link-monitor) # edit HA-1
new entry 'HA-1' added
(HA-1) # set srcintf wan1 << 監視するインターフェース
(HA-1) # set server 8.8.8.8 << 監視対象サーバのIP
(HA-1) # set ha-priority 1 << リンクモニター全体のHA優先度
(HA-1) # end
| 種類 | 解説 |
|---|---|
| srcintf | 監視対象インターフェースを選択します。 |
| server | 監視対象サーバのIPアドレスを入力します。スペース区切りで複数入力可能です(SCSK調べで512以上)。 |
| source-ip | 監視対象インターフェースのIPアドレスを入力します。 |
| gateway-ip | 監視対象インターフェースのゲートウェイとなるIPアドレスを入力します。 |
| protocol | 監視のために利用するプロトコル(ping/tcp-echo/udp-echo/http /https/twamp)を選択します。デフォルトはpingです。 |
| ha-priority | リンクモニター全体のHA優先度を入力します。デフォルトは1で、範囲は[1-50]です。「server」で指定されたIPアドレス全ての通信が途切れた場合、そのリンクに設定されたHA優先度の値がペナルティとして加算され、合計値が「pingserver-failover-threshold」の値を越えた時、フェイルオーバーが発生します。 |
| route | ここに特定のサブネット(書式は「x.x.x.x/y」で複数指定可能)を指定すると、リンクモニターによる通信が失敗した時、同じインターフェースとゲートウェイを持つ全てのルートではなく、指定されたサブネットのみがルーティングテーブルから削除されます。 |
| interval | ネットワーク切断の検出間隔の時間(ミリ秒)です。デフォルトは500で、範囲は[20-3600000]です。 |
| failtime | 通信失敗の回数です。デフォルトは5で、範囲は[1-3600]です。 |
| service-detection | ネットワーク切断の検出(ログ表示)のみを行いたい場合、有効にします。デフォルトは無効です。 |
| status | リンクモニターの有効/無効(enable/disable)を選択します。 |
リンクモニターを設定したら、HAの設定を行います。対応するサーバのパラメータを入力します。「フリップフラップ(フェイルオーバーとフェイルバック)」の繰り返しを防ぐため、リンクモニターで切り替わった場合、デフォルトでは60分間、切り戻しを行わない設定になっています。
(ha) # set pingserver-monitor-interface wan1 << 監視するインターフェース
(ha) # set pingserver-failover-threshold 0 << フェイルオーバー発生のしきい値
(ha) # set pingserver-secondary-force-reset enable << FLIPタイムアウト後のペナルティカウンタのリセット
(ha) # set pingserver-flip-timeout 60 << FLIPタイムアウト時間
(ha) # end
| 種類 | 解説 |
|---|---|
| pingserver-monitor-interface | リンクモニターで設定したインターフェースを選択します。スペース区切りで複数設定できます。 |
| pingserver-failover-threshold | リンクモニターが途切れた時、フェイルオーバーを発生させるためのしきい値です。リンクモニター設定の「server」で指定されたIPアドレス全ての通信が途切れた場合、そのリンクに設定された「ha-priority」の値がペナルティとして加算され、合計値がこの値を越えた時、フェイルオーバーが発生します。 |
| pingserver-secondary-force-reset | この設定が有効になっていると、FLIPタイムアウト時間の時間が経過した後、ペナルティのカウンタがリセットされます。デフォルトは有効です。もしオーバーライド設定が有効になっている場合、プライオリティが優先されるため、フェイルオーバーが発生します。その時、リンクモニターがまだダウンしていると、再びフェイルオーバーが発生し、FLIPタイムアウト時間を経過すると再びフェイルオーバーが発生します。 この設定を無効にすると、ペナルティのカウンタはリセットされません。このため、新しいプライマリがリンクモニターで異常を検出したり、ユーザーが手動で切り替えたりしない限り、フェイルオーバーは発生しなくなります。 |
| pingserver-flip-timeout | FLIPタイムアウト時間です。「フリップフラップ(フェイルオーバーとフェイルバック)」を防ぐための待ち時間(分)です。リンクモニターによって切り替わった場合、この時間を過ぎるまでFortiGateはHAの切り戻しを行いません。デフォルトは60で、範囲は[6-2147483647]です。 |
HA徹底入門 シリーズ一覧
著者
関連製品
-
FortiGate/FortiGateCloud強固なセキュリティ機能を一台で提供する統合脅威管理(UTM)アプライアンスです。
- Cloud / SaaS
- Network Security
- OT Security


