本記事について
本記事では、Fortinet 社のファイアウォール製品である FortiGate について、HA 構成時に使用される仮想 MAC アドレスの仕組みを説明します。
動作確認環境
本記事の内容は以下の機器にて動作確認を行った結果に基づいて作成されています。
- FortiGate-60F
- バージョン 7.4.3
HA 構成時に FortiGate のプライマリ機が使われる仕組み
FortiGate に隣接する機器(端末、ルータ、スイッチなど)が FortiGate の持つ IP アドレス宛に初めて通信する際の流れは以下の通りです。
- 送信元端末は FortiGate の持つ IP アドレスに対する ARP リクエスト(ブロードキャスト)を送信します
- FortiGate のプライマリ機は ARP リクエストに応答します
- セカンダリ機は ARP リクエストに応答しません
- 経路途中のスイッチは ARP 応答から FortiGate の MAC アドレスと接続ポートの対応を学習します
- 送信元端末は ARP 応答から MAC アドレスを学習します
この後、端末は学習した MAC アドレス宛に通信を行い、経路途中のスイッチは MAC アドレステーブルをもとにプライマリ機と接続するポートから出力します。このような流れでプライマリ機を通る通信が実現しています。
HA で使用する MAC は仮想 MAC アドレス
HA 構成時に FortiGate が使用する MAC アドレスは物理インターフェースに紐づく実 MAC アドレスではなく、それとは別の仮想 MAC アドレスです。
HA 構成時は、各物理インターフェースに対して仮想 MAC アドレスが割り当てられます。ただし、この仮想 MAC アドレスはプライマリ機のみが持ちます。フェイルオーバーが発生した場合は、仮想 MAC アドレスは新しいプライマリ機に移ります。
各物理インターフェースの仮想 MAC アドレスはプライマリ機にてget hardware nic
コマンドを実行することにより確認できます。
FortiGate-60F-01 # get hardware nic wan1
Description :FortiASIC NP6XLITE Adapter
Driver Name :FortiASIC NP6XLITE Driver
Board :60F
lif id :0
lif oid :64
netdev oid :64
Current_HWaddr 00:09:0f:09:00:00
Permanent_HWaddr 74:78:a6:dd:9e:b4
========== Link Status ==========
上記出力例の「Current_HWaddr 00:09:0f:09:00:00
」の部分が仮想 MAC アドレスです。
一方その下の「Permanent_HWaddr
」は実 MAC アドレスです。
仮想 MAC アドレスの決定規則
各インターフェースの仮想 MAC アドレスはランダムではなく一定の規則に基づいて決まります。
その規則は以下の通りです。
- 00:09:0f:09:[group-id(16進数)]:[vcluster_integer + idx]
- group-id は HA 設定の中で設定する Group ID の値です (デフォルト値なら 0)
- vcluster_integer はマルチ VDOM を使用している場合に VDOM 別に決まる値です。マルチ VDOM を使用していない場合は「0」になります
- idx はインターフェース ID です
以下に仮想 MAC アドレスの例を示します。
- FortiGate-60F v7.4.3
- Group ID 設定は 0
- マルチ VDOM は使用していない
インターフェース | 仮想 MAC アドレス |
---|---|
wan1 | 00:09:0f:09:00:00 |
wan2 | 00:09:0f:09:00:01 |
dmz | 00:09:0f:09:00:02 |
internal1 | 00:09:0f:09:00:03 |
internal2 | 00:09:0f:09:00:04 |
internal3 | 00:09:0f:09:00:05 |
internal4 | 00:09:0f:09:00:06 |
internal5 | 00:09:0f:09:00:07 |
a | 00:09:0f:09:00:08 |
b | 00:09:0f:09:00:09 |
管理インターフェースでは仮想 MAC は使われない
HA 設定の「管理インターフェースの予約」で指定しているインターフェースについては仮想 MAC アドレスは使われず、実 MAC アドレスがそのまま使用されます。
フェイルオーバーが発生したときの動作
FortiGate でフェイルオーバーが発生すると、通信経路は新プライマリ機に切り替わります。その仕組みは以下の通りです。
- 仮想 MAC アドレスが新プライマリ機に移ります
- 新プライマリ機は FortiGate が持つ IP に対する GARP(ブロードキャスト)を送信します
- 経路途中のスイッチは GARP から FortiGate の MAC アドレスと接続ポートの対応を再学習します
- 送信元端末は GARP から MAC アドレスを再学習します
FortiGate から GARP が送信されることにより経路途中のスイッチは FortiGate の仮想 MAC アドレスの接続先ポートが変わったことを即座に学習でき、通信断時間は最小限で済みます。
フェイルオーバー時の GARP 送信の設定
フェイルオーバー発生時に新プライマリ機から GARP が送信されるかどうかや、送信間隔、送信回数は設定変更することができます。設定はconfig system ha
内で行います。
デフォルトの設定は以下の通りです。
config system ha
set gratuitous-arps enable
set arps 5
set arps-interval 8
end
gratuitous-arps
:GARP を送信するかどうかです。デフォルトでは enable ですarps
:GARP 送信回数です。デフォルトでは 5 回ですarps-interval
:GARP 送信間隔です。デフォルトでは 8 秒間隔です
GARP のパケットキャプチャ
以下は上記構成例の端末において取得したフェイルオーバー時のキャプチャです。FortiGate から GARP が 8 秒間隔で 5 回送信されていることが分かります。
仮想 MAC アドレスの競合に注意
同一セグメント内に FortiGate の HA クラスタが 2 セット存在する場合を考えます。HA の仮想 MAC アドレスは主に Group ID とインターフェース ID で決まるため、どちらのクラスタも Group ID がデフォルトの 0 のままで、かつ接続インターフェースが同一の場合、仮想 MAC アドレスが同じになり通信が不安定になります。
このように同一セグメントに複数の HA クラスタが存在する場合は仮想 MAC アドレスの競合を避けるために Group ID をデフォルトから変更するといった対応が必要になります。
以上です。
【おすすめ】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 のインストールも簡単にできます。
コメント