本記事について
本記事では、Fortinet 社のファイアウォール製品である FortiGate に関して、トランスペアレントモードで HA を構成している場合における切り替わり(フェイルオーバー)発生時の GARP 送信の仕様について説明します。
動作確認環境
本記事の内容は以下の機器にて動作確認を行った結果に基づいて作成されています。
- FortiGate-60F
- バージョン 7.4.3
HA のフェイルオーバー時の GARP 送信
FortiGate のデフォルトのオペレーションモードである NAT モードにて HA を構成している場合、フェイルオーバーが発生したタイミングで新プライマリ機から GARP が送信されます。この GARP により隣接機器からの通信先が新プライマリ機に切り替わり通信断時間を最小限にすることができます。
- ではトランスペアレントモードの FortiGate で HA を構成している場合は GARP は送信されるのでしょうか?
-
答えは YES です。
トランスペアレントモードの HA でもフェイルオーバー発生時に新プライマリ機から GARP が送信されます。
以下で詳しく説明します。
トランスペアレントモード HA での基本通信動作
以下図のように FortiGate はトランスペアレントモードで HA を構成しています。internal1 は内部ネットワークのスイッチに接続し、wan1 は外部ネットワークのスイッチに接続しています。内部ネットワーク端末は外部ネットワーク側のルータのアドレスをデフォルトゲートウェイと設定しています。
端末が初めて外部ネットワークと通信する際は、デフォルトゲートウェイであるルータの MAC アドレスを取得する必要があります。このときの ARP 通信の流れは以下のようになります。
- 端末から ARP 要求 (ブロードキャスト) が送信されます
- 内部ネットワークのスイッチは ARP 要求をブロードキャストします
- FortiGate のプライマリ機は ARP 要求を転送します。一方セカンダリ機は ARP 要求を転送しません
- 外部ネットワーク側のスイッチを経由してルータに ARP 要求が届きます
ARP 要求を受け取ったルータは ARP 応答します。
- ルータは ARP 応答します
- FortiGate のプライマリ機は ARP 応答を転送します
- 内部ネットワークのスイッチは ARP 応答を転送すると当時に、ルータの MAC アドレスと接続ポートの組み合わせを MAC アドレステーブルに記録します
- 端末が ARP 応答を受信しルータの MAC アドレスを学習します
上記の③で内部ネットワークのスイッチがルータの MAC アドレスの接続ポートを FortiGate のプライマリ機と接続するポートとして学習することにより、以後のルータ宛の通信がプライマリ機を通るようにスイッチングされるようになります。
なお外部ネットワーク側のスイッチでも同様に端末の MAC アドレスと接続ポートを学習しています。
フェイルオーバー発生時の GARP 送信の仕様
トランスペアレントモードの HA でもフェイルオーバー発生時に新プライマリ機から GARP が送信されます。
例えば以下の構成でプライマリ機の wan1 で障害が発生した場合を考えます。
- プライマリ機の wan1 リンクで障害が発生します
- FortiGate でフェイルオーバーが発生します
- 新プライマリ機の各インターフェースから GARP が送信されます
この時 FortiGate の新プライマリ機から送信される GARP は、FortiGate が持つ仮想 MAC アドレスに関する GARP の他、FortiGate が学習している隣接機器の MAC アドレスに関する GARP も送信されます。
以下は実際にフェイルオーバー発生時に内部ネットワークでパケットキャプチャした結果です。FortiGate の MAC アドレスの他、Cisco の MAC アドレスに関する GARP が送信されていることが分かります。この MAC アドレスは外部ネットワークのルータの MAC アドレスです。
FortiGate はトランスペアレントモードのため自分自身は IP アドレスを持たないため、Sender IP は 0.0.0.0 となっています。
外部ネットワークのルータの MAC アドレスに関する GARP が送信されることにより、内部ネットワークのスイッチでは当該ルータの MAC アドレスと接続ポートの組み合わせを再学習します。これにより以後の当該ルータ宛の通信が新プライマリ機を通るようにスイッチングされるようになります。
GARP 送信に関する設定
GARP 送信有無は HA に関する設定項目により制御されています。該当コンフィグは以下です。
config system ha
set gratuitous-arps enable
set arps 5
set arps-interval 8
end
上記設定は 8 秒間隔で 5 回 GARP が送信されることを意味しています。
この設定は NAT モードにおける GARP 送信設定と同じです。
FortiGate で学習されている MAC アドレスの確認コマンド
FortiGate でどの MAC アドレスが学習されているかについては、以下のコマンドで確認できます。
diag netlink brctl name host root.b
以下は実行例です。
FortiGate-60F-01 # diag netlink brctl name host root.b
show bridge control interface root.b host.
fdb: hash size=8192, used=13, num=13, depth=1, gc_time=4, ageing_time=3
Bridge root.b host table
port no device devname mac addr ttl attributes
4 8 internal1 00:e0:4c:27:ff:4a 4 Hit(4)
9 13 a 00:09:0f:09:00:08 0 Local Static
1 5 wan1 00:09:0f:09:00:00 0 Local Static
7 11 internal4 00:09:0f:09:00:06 0 Local Static
4 8 internal1 00:09:0f:09:00:03 0 Local Static
4 8 internal1 00:22:0c:be:79:81 5 Hit(5)
2 6 wan2 00:09:0f:09:00:01 0 Local Static
1 5 wan1 00:42:68:f4:c5:20 13 Hit(13)
6 10 internal3 00:09:0f:09:00:05 0 Local Static
10 14 b 00:09:0f:09:00:09 0 Local Static
3 7 dmz 00:09:0f:09:00:02 0 Local Static
5 9 internal2 00:09:0f:09:00:04 0 Local Static
1 5 wan1 00:42:68:f4:c5:27 2 Hit(2)
なお、この学習済み MAC アドレスリストはプライマリ機とセカンダリ機の間で同期されます。
トランスペアレントモードでも GARP を出す FortiGate は優秀
本記事の検証構成のように、トランスペアレントモードの HA の各機器が同一スイッチに接続している構成では、仮に新プライマリ機から GARP が送信されない場合、隣接スイッチの MAC アドレステーブルが更新されません。MAC アドレステーブルが更新されないと、スイッチは相変わらず旧プライマリ機向けにスイッチングしてしまうため、フェイルオーバー発生時に通信が復旧しないことになってしまいます。
FortiGate の場合はトランスペアレントモードの HA でもフェイルオーバー発生時に新プライマリ機から GARP が送信されるためこの心配はありません。この点、優秀であるといえます。
一方、例えば Palo Alto 社製のファイアウォールの場合、トランスペアレントモードの HA ではフェイルオーバー発生時に新プライマリ機から GARP が送信されません。このため、本記事と同様の構成ではフェイルオーバー発生時に通信が復旧しないことになります。実際この仕様が問題になった案件を見たことがあります。
メーカによって仕様が異なるため注意しておきましょう。
参考資料
【おすすめ】FortiGate の設計構築中なら以下の記事も役立つかもです
- 基礎知識
- HA (冗長構成) 設定
- FortiGate HA モードの Active-Passive と Active-Active の違いを解説します
- FortiGate HA(冗長構成)の概要と設定ガイド【詳しく解説】※note記事
- FortiGate HA 構成時のコンフィグ同期の仕様について解説します
- FortiGate HA 構成時の NTP,Syslog,SNMP 等の送信元インターフェースを解説 [ha-direct 設定]
- FortiGate HA 構成時の仮想 MAC アドレスについて解説します
- FortiGate HA ハートビート送信間隔と障害判定しきい値の設定ガイド
- FortiGate HA 構成時のバックアップ及びリストア実施ガイド
- FortiGate HA 構成でのモニタインターフェースダウン時の通信断時間について解説
- FortiGate HA 構成に関するQ&A 【良くありそうな疑問集】
- VDOM (バーチャルドメイン) 設定
- トランスペアレントモード設定
- システム系設定
- 管理者アカウント設定
- 時刻・NTP 設定
- ロギング・Syslog 送信設定
- SNMP 設定
- DHCP サーバ機能設定
- Proxy サーバ機能設定
- アラートメール送信
- ネットワーク系設定
- インターフェース設定
- ルーティング設定
- DNS 設定
- NAT 及び NAPT 設定
- ファイアウォール系設定
- アドレス設定
- サービス設定
- ファイアウォールポリシー設定
- ゾーンを使用したポリシー設定
- VPN 系設定
- Tips
Amazon アフィリエイトリンク
以下は Amazon アフィリエイトリンクです。インフラエンジニアにそこそこおすすめなアイテムです。
note メンバーシップへの参加もお待ちしています!
【アフィリエイト】おすすめ WordPress テーマ【SWELL】
当サイトでは WordPress テーマとして SWELL を使用しています。以前は無料・高機能テーマとして知られる Cocoon を使用していて Cocoon も使いやすかったのですが、SWELL を使い始めてからは SWELL のほうが圧倒的に使いやすいなと思いました。そして何より読み込み速度が速い。SWELL を使い始めてから、過去の Cocoon のブログを見直したときに「あれ、こんなに表示遅かったっけ?」という感覚になりました。
また SWELL はデフォルトでもオシャレなデザインですが柔軟にカスタマイズすることもでき個性のあるサイトを作成できます。さらにブログパーツや広告タグといった再利用可能なブログの「部品」も作成することができ、ブログ作成効率も高いです。
技術ブログやアフィリエイト等での収益化を見据えたブログの作成に SWELL は最適です。初見では価格が高いなと思うと思いますが、私としては SWELL を採用して良かったしそれ以上の価値があると感じています。
ブログの新設やテーマ変更を考えている人は一度 SWELL を検討してみてください。
以下の画像リンクから詳細な情報を確認できます。
レンタルサーバーを探している人には安定性に定評のあるエックスサーバーをお勧めします。
当サイトもエックスサーバーを使用しています。WordPress のインストールも簡単にできます。
コメント