FortiGate設定マニュアル - HA徹底入門
【第4回】HAの同期と切り替え

スプリットブレイン(Split Brain)

ハートビート間では、お互いの機器が正常に稼働しているかどうかを常に監視しています。システムの「死活監視」などとも呼ばれます。ハートビートからのパケット(デフォルトで200ミリ秒間隔で6回送出)を受信できない時、FortiGateは対向の機器がダウンしたと見なして、自らがプライマリへと昇格します。この時、両方がプライマリになっている状態のことを「スプリットブレイン」と呼びます。
機器自体が正常であってもハートビートが全てダウンしている場合、スプリットブレインに陥ります。スプリットブレインの状態では通信が不安定になり、クライアントが通信できなくなる場合があるため、早急なハートビートの復旧が求められます。ハートビートが1本の場合、スプリットブレイン発生のリスクが高まります。ハートビートは2本で設定することを推奨します。

スプリットブレイン

ハートビートのパラメータ変更方法

ハートビートのパケットは、デフォルトでは200ミリ秒(2×100ミリ秒)間隔で送信されます。計6回失敗するとダウンとみなします。

# config system ha
(ha) # set hbdev a 100 b 50<< インターフェースと優先度の設定
(ha) # set hb-interval 2<< ハートビートパケットの送信間隔
(ha) # set hb-interval-in-milliseconds 100ms<< ハートビートパケットの送信間隔時間
(ha) # set hb-lost-threshold 6<< ダウンとみなす失敗回数
(ha) # end
種類 解説
hbdev 機器間の設定やセッション情報を同期するためのハートビートインターフェースを選択します。インターフェースは複数選択でき、それぞれに優先度の値を入力します。値の大きいインターフェースが優先されます。値が同じ場合は登録順です。範囲は[0-512]です。
hb-interval ハートビートパケットの送信間隔です。この値を増やすことで誤検知を減らせます。デフォルトは2で、範囲は[1-20]です。
hb-interval-in-milliseconds ハートビートパケットの送信間隔時間(単位は100ミリまたは10ミリ秒)を選択します。デフォルトは100ミリ秒です。
hb-lost-threshold ダウンとみなす失敗回数です。デフォルトは6回で、範囲は[1-60]です。

仮想MACアドレス(Virtual MAC Address)

FGCPでは、フェイルオーバー発生によって機器の切り替えが起こっても通信を継続できるようにするため、両方の機器で共通のIPアドレスと「仮想MACアドレス」を使用します。
ただし、共通のIPアドレスと仮想MACアドレスを持っているだけでは、スムーズな通信の切り替えは実現できません。機器が切り替わったことを周辺機器へ迅速に「学習」させるため、GARPが併用されます(GARPについては後述)。

仮想MACアドレス

仮想MACアドレスの書式とルール

仮想MACアドレスは、デフォルトで次の書式に基づいて割り当てられます。この例では、グループIDを「150」に設定しています。

【書式】

<group-prefix> : <group-id_hex> : (<vcluster_integer> + <idx>)
仮想MACアドレスの書式とルール
種類 解説
group-prefix 前の6桁は製造メーカー番号です。group-idによって変化します。
group-id_hexが[0–255]の時 00:09:0f:09(Fortinet社の番号です)。
group-id_hexが[256-511]の時 e0:23:ff:fc(Fortinet社の番号です)。
group-id_hexが[512-767]の時 e0:23:ff:fd(Fortinet社の番号です)。
group-id_hexが[768-1023]の時 e0:23:ff:fe(Fortinet社の番号です)。
group-id_hex HA設定で入力したグループIDの数値を16進数に変換した文字列の下桁2つが表示されます。範囲は[0-1023]です。
vcluster_integer バーチャルクラスタ番号です。VDOM機能を利用する時、HAへ参加させるVDOMを設定する際に利用されます。
idx インターフェースのインデックス番号[0-x]です。xはインターフェース数によって増えていきます。

仮想MACアドレスの確認方法

インターフェースの設定画面で仮想MACアドレスを表示できます。
下記の例では、「interface2」が管理インターフェースのため、仮想MACアドレスのルールからは外されています。
[ネットワーク] >[インターフェース] を選択し、上部のカラムを右クリック → 「MACアドレス」を選択して[適用]すると表示されます。

仮想MACアドレスの確認方法

下記コマンドで仮想MACアドレスを表示できます。「get hardware nic」でも同様の結果を得られます。「Current_HWaddr」が仮想MACアドレス、「Permanent_HWaddr」物理インターフェースのMACアドレスです。
下記の例では、「interface2」が管理インターフェースのため、仮想MACアドレスのルールからは外されています。

# diagnose hardware deviceinfo nic<< インターフェースの一覧表示
The following NICs are available:
 a
 b
 dmz
 internal1
 internal2
 internal3
 internal4
 internal5
 wan1
 wan2

# diagnose hardware deviceinfo nic wan1 | grep addr<< MACアドレス表示
Current_HWaddr 00:09:0f:09:96:00 << 仮想MACアドレス
Permanent_HWaddr 84:39:8f:93:fa:66 << 物理MACアドレス

# diagnose hardware deviceinfo nic internal2 | grep addr<< 管理インターフェースのMACアドレス表示
Current_HWaddr 84:39:8f:93:fa:6a << 仮想MACアドレス(物理MACアドレスと同じ)
Permanent_HWaddr 84:39:8f:93:fa:6a << 物理MACアドレス

下記コマンドで全ての仮想MACアドレスを一覧表示できます。「mac」が物理インターフェースのMACアドレス、「vmac」が仮想MACアドレスです。セカンダリ機は仮想MACアドレスを持ちません。下記の例では、「interface2」が管理インターフェースのため、仮想MACアドレスのルールからは外されています。

# diagnose sys ha mac

HA mac msg
serial#=FGT70FTKXXXXXXXX Primary
prio=0, phy_index= 0,itf_name=wan1, mac=84.39.8f.93.fa.66, vmac=00.09.0f.09.96.00, linkfail=0
prio=0, phy_index= 1, itf_name=wan2, mac=84.39.8f.93.fa.67, vmac=00.09.0f.09.96.01, linkfail=1
prio=0, phy_index= 2, itf_name=dmz, mac=84.39.8f.93.fa.68, vmac=00.09.0f.09.96.02, linkfail=1
prio=0, phy_index= 3, itf_name=internal1, mac=84.39.8f.93.fa.69, vmac=00.09.0f.09.96.03, linkfail=0
prio=0, phy_index= 4, itf_name=internal2, mac=84.39.8f.93.fa.6a, vmac=--.--.--.--.--.--, linkfail=0 ; << 管理インターフェース
prio=0, phy_index= 5, itf_name=internal3, mac=84.39.8f.93.fa.6b, vmac=00.09.0f.09.96.05, linkfail=1
prio=0, phy_index= 6, itf_name=internal4, mac=84.39.8f.93.fa.6c, vmac=00.09.0f.09.96.06, linkfail=1
(中略)
serial#=FGT70FTKYYYYYYYY Secondary
prio=1, phy_index= 0, itf_name=wan1, mac=84.39.8f.94.11.04, vmac=--.--.--.--.--.--, linkfail=0
prio=1, phy_index= 1, itf_name=wan2, mac=84.39.8f.94.11.05, vmac=--.--.--.--.--.--, linkfail=1
prio=1, phy_index= 2, itf_name=dmz, mac=84.39.8f.94.11.06, vmac=--.--.--.--.--.--, linkfail=1
prio=1, phy_index= 3, itf_name=internal1, mac=84.39.8f.94.11.07, vmac=--.--.--.--.--.--, linkfail=0
prio=1, phy_index= 4, itf_name=internal2, mac=84.39.8f.94.11.08, vmac=--.--.--.--.--.--, linkfail=0
prio=1, phy_index= 5, itf_name=internal3, mac=84.39.8f.94.11.09, vmac=--.--.--.--.--.--, linkfail=1
prio=1, phy_index= 6, itf_name=internal4, mac=84.39.8f.94.11.0a, vmac=--.--.--.--.--.--, linkfail=1
(後略)

著者

著者イメージ
浦 弘平
ネットワークセキュリティ事業本部 カスタマーサポート部
誰もが知っているようで意外と知らない。今さら人に聞けない。
そんなかゆいところに手が届く情報や現場で役立つ豆知識を紹介していきます。

お問い合わせ

Fortinet製品に関する
問い合わせはこちらから

お役立ち資料

各種お役立ち資料も
取り揃えております

関連ブログ