このハンズオンについて
誰でも無料で使用できる FortiGate の仮想アプライアンスである FortiGate VM の評価ライセンスを使用して、FortiGate の実践的な学習をしていこうという講座です。
今回は、FortiGate で HA 構成を構築して動作確認してみます。
作業環境
- FortiGate VM 7.0.5
- VMware Workstation Player 16.2.3
- VMware ESXi 7.0.3
今回の実施内容
前回の ハンズオン[4]: ファイアウォールポリシーを設定しよう まで実施している場合、仮想ネットワーク環境は以下画像のようになっているはずです。

※各ネットワークのセグメント情報は各自の環境によって変わります
上の環境をスタート地点として、FortiGate VM を VMware ESXi 上にもう一台追加し、以下のような HA 構成を構築していきます。

※上の図をクリックすると拡大表示できます
- port9 と port10 を HA のハートビートインターフェースとして使用します
- port8 を管理インターフェースとして使用します
- 管理インターフェースのセグメントは NAT ネットワークと同じにします
- FortiGate の HA では、一部を除く設定が機器間で同期されます。インターフェースの設定も同期対象です。そのため、通常のインターフェースに設定された IP アドレスに対してアクセスすると常にプライマリ状態の機器に接続されます
- セカンダリ機に直接管理アクセスできるようにする目的で設定されるのが「管理インターフェース」設定です
- 「管理インターフェース」として指定されたインターフェースの設定は同期対象外のため、機器間で別々の IP アドレスを設定することができます
- 「管理インターフェース」と設定されたインターフェースは独自のルーティングテーブルを持ちます。そのため、その他インターフェースと同じセグメントの IP アドレスを設定することが可能です
ハンズオンの流れ
今回のハンズオンは以下の流れで実施していきます。
- VMware ESXi での仮想スイッチ、ポートグループの設定
- FortiGate 1号機の HA 設定
- FortiGate 2号機の追加と HA 設定
- FortiGate 間を接続して HA を構築
- HA の動作確認
VMware ESXi での仮想スイッチ、ポートグループの設定
今回は 1 機器につきハートビートインターフェースを 2 つ設定します。そのため、独立したネットワークが新たに 2 つ必要になります。
ここでは VMware ESXi にて仮想スイッチを 2 つ追加することで対応します。併せてポートグループも必要なため作成していきます。

仮想スイッチの追加
VMware ESXi の管理画面から仮想スイッチの作成を行ってください。

仮想スイッチの名前は何でも良いですが、ここでは例として「HASW01」「HASW02」とします。なお、仮想スイッチのアップリンク設定は無しにしてください。


ポートグループの作成
仮想スイッチが作成できたら各仮想スイッチに一つずつポートグループを作成します。

ここでは「HAGroup01」というポートグループを仮想スイッチ HASW01 に、「HAGroup02」というポートグループを仮想スイッチ HASW02 に作成します。注意点として、ポートグループのセキュリティ設定ですべての項目を「承諾」に変更してください。これをしておかないと HA 同期通信が拒否されて同期できません。


FortiGate 1号機の仮想マシンのアダプタ設定の変更
ポートグループ作成後、FortiGate 1号機の仮想マシンについてアダプタ設定を変更します。
VMware ESXi の仮想マシン管理画面から「編集」画面を開きます。

ネットワークアダプタ 9,10 については作成した HA 用のポートグループを割り当て、ネットワークアダプタ 8 については管理インターフェースとして使用するために NAT ネットワークにつながるポートグループを割り当てます。

FortiGate 1 号機の HA 設定
次に FortiGate 1 号機の HA 設定を行います。
ホスト名の設定
まずホスト名を設定します。ここでは例として「FortiGate01」と設定します。

HA の設定
いよいよ HA の設定を行います。[システム > HA] 画面を開きます。
表示された HA 設定画面でモードとして「アクティブ・パッシブ」を選択してください。すると以下のような設定項目が表示されます。

上画像のように各項目を設定してください。
- デバイスのプライオリティ
- HA のプライマリの選出に使用されるプライオリティです。より大きい方がプライマリとなります。ここでは FortiGate 1号機をプライマリにしたいため、1号機では 200、2号機では 100 を設定することとします
- グループ名/パスワード
- 設定値は何でも良いですが2号機と同じグループ名/パスワードを設定してください
- セッションピックアップ
- 対向機器へのセッション情報の同期の有効/無効を設定します。デフォルトは無効ですが、ここでは有効に設定します
- モニタインターフェース
- ここで設定したインターフェースがダウンするとフェイルオーバが発生します。ここではサービスポートとして使用している port1, port2, port3 を設定してください
- ハートビートインターフェース
- HA 同期通信で使用するインターフェースです。ここでは port9, port10 を設定してください
- ハートビートインターフェースのプライオリティ
- ハートビートインターフェースが複数ある場合に、プライオリティのより高い方を優先して使用します。ここでは port10 を優先することとして、port10 は 200、port9 は 100 とします
- 管理インターフェースの予約
- 管理通信で使用するための管理インターフェースの設定です。ここでは port8 を設定します
- IP アドレスが設定されているインターフェースは指定できないため、設定されている場合は先にインターフェースから IP アドレスの設定を削除してください
- 「ゲートウェイ」では管理インターフェース独自のルーティングテーブルにおけるゲートウェイを指定します。ここでは例として FortiGate の port1 の IP アドレスとします
- 「宛先サブネット」はデフォルトのままとします
各項目を設定できたら、画面下の [OK] をクリックして設定を確定してください。その後、HA 画面が以下のような表示になるはずです。

管理インターフェースの設定
管理インターフェースから管理アクセスできるよう、IP アドレスの設定及び管理アクセスの設定を行います。
対象インターフェース(port8)の設定編集画面で設定を行ってください。

管理アクセス設定については、http を未設定の場合は GUI では http の設定ができません。そのためコンソール接続または SSH 接続して CLI で設定してください。
コマンドは以下の通りです。※ping, http, ssh を許可する場合
config system interface
edit port8
set allowaccess ping http ssh
next
end
※ allowaccess の設定は、指定した値の追加ではなく、指定した値への置き換えになります。そのため必要なプロトコルをすべて含めて設定してください。
シャットダウン
以上で1号機の設定は完了です。1号機は一旦シャットダウンしてください。

FortiGate 2号機の追加と HA 設定
続いて FortiGate 2号機の仮想マシンの追加とその設定を行っていきます。
仮想マシンの作成
まず VMware ESXi 上で FortiGate 2号機の仮想マシンを作成します。
手順は1号機作成時と同じのため省略しますが、ネットワークアダプタのポートグループ設定は1号機と同じになるはずです。間違えないように注意してください。

初期設定
仮想マシンを作成して起動出来たら、1号機と同様に以下のような初期設定を行ってください。
- コンソールでログインし、admin パスワードの設定
- port1 の IP アドレスの確認と GUI へのアクセス
- GUI 日本語化
- ホスト名設定
GUI アクセスまでの手順を忘れてしまった場合はハンズオン1回目の内容を確認してみて下さい。
HA の設定
続いて HA の設定を行います。1 号機と同様に [システム > HA] 画面から設定して下さい。
2号機での設定内容は以下の通りです。

HA 設定後の HA 画面は以下のようになります。

管理インターフェースの設定
管理インターフェースから管理アクセスできるよう、IP アドレスの設定及び管理アクセスの設定を行います。
対象インターフェース(port8)の設定編集画面で設定を行ってください。

管理アクセス設定については、http を未設定の場合は GUI では http の設定ができません。そのためコンソール接続または SSH 接続して CLI で設定してください。
コマンドは以下の通りです。※ping, http, ssh を許可する場合
config system interface
edit port8
set allowaccess ping http ssh
next
end
※ allowaccess の設定は、指定した値の追加ではなく、指定した値への置き換えになります。そのため必要なプロトコルをすべて含めて設定してください。
シャットダウン
以上で2号機の設定は完了です。2号機は一旦シャットダウンしてください。

FortiGate 間を接続して HA を構築
この時点で FortiGate 1号機、2号機ともに HA の設定ができ、電源は落ちている状態になっています。
仮想マシンの起動と同期
ここから1号機、2号機の順で仮想マシンを起動させることで HA を組ませ、設定を同期させます。
では VMware ESXi の仮想マシン管理画面で1号機の仮想マシンをパワーオンしてください。その後、コンソールで起動を確認します。

1号機でログインプロンプトが表示されたら、次は2号機をパワーオンしてください。その後、コンソールで起動を確認します。
2号機を起動後、以下のようにコンソール上に同期に関するメッセージが表示されることを確認してください。

同期処理には数分かかるため完了まで待ちます。
以下のように secondary starts to sync with primary
と表示されたら同期(HA 構築)完了です。

HA 状態の確認
1号機の GUI にアクセスして [システム > HA] 画面を確認してください。このとき、管理インターフェースの IP アドレス宛にアクセスしてアクセスできることを確認して下さい。
以下のようにプライマリとセカンダリの 2 台のステータスが表示されることを確認して下さい。

次に2号機にもアクセス(管理インターフェースの IP 宛にアクセス)して同様に HA 画面を確認します。
2号機側でも以下のように2台分のステータスが表示され、2号機がセカンダリのロールになっていることを確認します。

2号機側でポリシーやインターフェースなどの各種設定を確認してみてください。1号機側でされていた設定が2号機に同期されていることを確認できます。

次に CLI で HA の状態を確認してみます。1号機に対して SSH 接続して get system ha status
コマンドを実行してみてください。
以下の箇所で HA のヘルスステータスやプライマリ/セカンダリの状態の確認ができます。
FortiGate01 # get system ha status
HA Health Status: OK
Model: FortiGate-VM64
Mode: HA A-P
...
Primary : FortiGate01 , FGVMEV0DAGPMG6DB, HA cluster index = 1
Secondary : FortiGate02 , FGVMEVTLFRSH1L96, HA cluster index = 0
...
HA の動作確認
フェイルオーバ動作確認
FortiGate 1号機のモニタ対象である port2 をダウンさせて、2号機にフェイルオーバすることを確認します。

port2 をダウンさせるためには、VMware ESXi の FortiGate 1号機の仮想マシンの設定画面で、ネットワークアダプタ 2 の「接続」のチェックを外します。

設定変更後、get system interface physical port2
コマンドで状態を確認し、down となっていることを確認します。
FortiGate01 # get system interface physical port2
== [onboard]
==[port2]
mode: static
ip: 192.168.200.253 255.255.255.0
ipv6: ::/0
status: down
speed: n/a
FEC: none
FEC_cap: none
では GUI の HA 画面を確認してみてください。
以下のように、1号機がセカンダリ、2号機がプライマリに変わっていることが分かります。

get system ha status
コマンドでも確認してみてください。
HA のヘルスステータスが変わり、プライマリ選出理由が追記され、プライマリ/セカンダリも変わっていることが分かります。
FortiGate01 # get system ha status
HA Health Status:
WARNING: FGVMEV0DAGPMG6DB has mondev down;
...
Primary selected using:
<2022/05/28 19:58:58> FGVMEVTLFRSH1L96 is selected as the primary because the value 0 of link-failure + pingsvr-failure is less than peer member FGVMEV0DAGPMG6DB.
...
Secondary : FortiGate01 , FGVMEV0DAGPMG6DB, HA cluster index = 1
Primary : FortiGate02 , FGVMEVTLFRSH1L96, HA cluster index = 0
...
復旧と切り戻し
フェイルオーバの動作が確認できたので、1号機の復旧とプライマリの切り戻しをしてみます。
まず VMware ESXi の仮想マシンの編集でネットワークアダプタ 2 の「接続」のチェックを入れて元に戻します。

設定変更後、get system interface physical port2
コマンドで状態を確認し、up となっていることを確認します。
FortiGate01 # get system interface physical port2
== [onboard]
==[port2]
mode: static
ip: 192.168.200.253 255.255.255.0
ipv6: ::/0
status: up
speed: 10000Mbps (Duplex: full)
FEC: none
FEC_cap: none
次に get system ha status
コマンドで HA の状態を確認してみてください。
HA のヘルスステータスは OK になりましたが、プライマリ/セカンダリは変わっていないことが分かります。
FortiGate01 # get system ha status
HA Health Status: OK
...
Secondary : FortiGate01 , FGVMEV0DAGPMG6DB, HA cluster index = 1
Primary : FortiGate02 , FGVMEVTLFRSH1L96, HA cluster index = 0
...
HA のオプション設定である Override
の設定をデフォルトの無効のままにしているため、プライオリティの高い機器が復旧しても自動で切り戻ることはありません。
Override
の設定が無効の場合、コマンド操作によって手動でプライマリ機を切り替えることが可能です。
方法としてはプライマリ状態の機器にて diagnose sys ha reset-uptime
コマンドを実行します。
現在プライマリになっている2号機にてこのコマンドを実行して、その後 HA 状態を確認してみてください。
FortiGate02 # diagnose sys ha reset-uptime
FortiGate02 #
FortiGate02 # get system ha status
HA Health Status: OK
...
Primary selected using:
<2022/05/28 20:19:27> FGVMEV0DAGPMG6DB is selected as the primary because its uptime is larger than peer member FGVMEVTLFRSH1L96.
...
Secondary : FortiGate02 , FGVMEVTLFRSH1L96, HA cluster index = 0
Primary : FortiGate01 , FGVMEV0DAGPMG6DB, HA cluster index = 1
...
プライマリ/セカンダリが入れ替わったことが分かるかと思います。
Override
の設定が無効になっている場合、プライマリの選出基準として、プライオリティの大小よりも HA アップタイムの長短が優先されます(HA アップタイムが長い方がプライマリに)。
diagnose sys ha reset-uptime
コマンドを実行すると、HA アップタイムがリセットされるため、HA アップタイムに基づいてプライマリが切り替わるということになります。
今回のハンズオンは以上です

今回は HA の構築とプライマリ切り替わりの動作確認を行いました。
HA の検証は物理機器が2台が無いとできないと思っている人も多いかと思いますが、仮想版を使用すれば無料である程度は検証ができるのでかなり有用だと思います。今回のハンズオンの内容以外にも色々試してみてください。
今回は切り替わり時の通信断時間の確認までは行いませんでしたが、ハンズオン[3]: 試験用の Windows 10 仮想端末をつくろう で作成した Windows 10 端末を使用すれば確認が可能です。興味がある人は実施してみてください。