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

仮想MACアドレスによって起こる障害

仮想MACアドレスはデフォルトで一定のルールに基づいて割り当てられるため、L2ネットワーク上に同じ仮想MACアドレスを持つシステムが複数存在すると、フラッピング現象が起きて通信不能に陥ります(つながったり、つながらなくなったりします)。具体的には内部イントラネット環境、PPPoE回線、ブリッジタイプの高速インターネット回線で、このような現象が発生します。

仮想MACアドレスによって起こる障害

この現象は、機器の物理ネットワークポートの構成に依存するため、同一機種間だけでなく、ネットワークポートの構成の順番が似ている機種間でも起こり得ます。解決方法は仮想MACアドレスを変更してバッティングを避けることです。

仮想MACアドレスの変更方法

仮想MACアドレスの変更方法は3種類あります。v7.4系以前では1種類のみです。

方法1)グループIDを変更する(v7.4系以前)。

グループIDの変更は、従来の仮想MACアドレスの割り当てルールに沿った最も基本的な変更方法です。グループIDはWebGUI/CLIのどちらでも変更可能です。変更後は設定が同期されます。ただし、この方法は周辺機器の仮想MACアドレスが分からなかった場合、変更後もまた他の機器と被ってしまう恐れがあります。PPPoE回線やブリッジタイプの高速インターネット回線においては、ほとんど運任せという欠点があります。

[システム] > [HA] を選択 → 自身の機器を選択して[編集] → 「グループID」の数値を変更します。

グループIDを変更する(v7.4系以前)
# config system ha
(ha) # set group-id 160<< HAのグループID(1号機&2号機共通)
(ha) # end

方法2)手動で割り当てて変更する(v7.6系以降)。

v7.6系以降、各インターフェースの設定で任意の仮想MACアドレスを割り当てる機能が追加されました。使用する全てのインターフェースで仮想MACアドレスを設定してください。MACアドレスのルールにより、第1オクテットを奇数にすることはできません。

# config system interface
(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、物理的なインデックスに基づいて決定されます。

# config system ha
(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

なぜGARPが必要なのか

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

なぜGARPが必要なのか

GARPの設定

FortiGateのGARPはデフォルトで有効になっており、フェイルオーバー発生直後に送信されます(8秒間隔で最終的に計5回)。GARPの送信回数を増やして送信間隔を短くすると、周囲のネットワーク機器がフェイルオーバーをより早く認識できるようになります。
設定の変更はCLIコマンドで行います。

# config system ha
(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優先度が適用され、後述するフェイルオーバー発生のしきい値と比較されます。しきい値を越えた時、フェイルオーバーが発生します。

# config system link-monitor
(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分間、切り戻しを行わない設定になっています。

# config system ha
(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]です。

著者

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

お問い合わせ

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

お役立ち資料

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

関連ブログ