企業のクラウドサービスの利用が増える中、WAN回線の最適化のため、SD-WANの需要が高まっています。FortigateにもSD-WAN機能として、WAN回線の負荷分散機能が実装されており、この記事で、設定と動作確認をします。
下記のように、インターネットへの接続をISP1、ISP2の2回線に収容する構成を考え、ポリシーにより、インターネットアクセスを最適な回線へ振り分け、かつ回線の冗長化を確認します。

WAN回線の最適化という意味では、インターネットブレークアウトにより特定のクラウドサービスは直接インターネットへアクセスさせる手段も有効です。
Fortigateで、インターネットブレークアウトをする方法として、下記、記事も合わせて参考にしてください。
>> 参考記事 : ISDBルーティング(インターネットブレークアウト)FortiOS6.4.2SD-WAN設定
WAN回線の設定
今回、WAN回線として、2本(ISP1向けのWAN1インタフェース、ISP2向けのWAN2インタフェース)を設定します。
それぞれDHCPでIPアドレスとデフォルトゲートウェイを取得しているものとします。


SD-WANゾーン
SD-WANゾーンに、WAN1とWAN2インタフェースをSD-WANメンバーとして登録することで、論理的なSD-WANインタフェースが作成されます。
ネットワーク >> SD-WAN より SD-WANゾーンタブから新規作成 >> SD-WANメンバーをクリックします。

wan1、wan2インタフェースそれぞれをSD-WANゾーン(virtual-wan-link)として、設定します。ゲートウェイはDHCPで取得したデフォルトゲートウェイがダイナミックとして登録されています。(スタティックに設定する場合は、指定を選択し、登録します)

下記のように、virtual-wan-linkにwan1、wan2が追加されます。

スタティックルート
ネットワーク >> スタティックルートより新規作成をクリックし、SD-WAN論理インタフェースであるvirtual-wan-linkを宛先インタフェースとするデフォルトゲートウェイを設定します。

パフォーマンスSLA
SD-WANゾーンで登録したWAN回線が正常に接続できるかどうかのヘルスチェックを設定します。
いくつかのヘルスチェック設定がデフォルトであらかじめ用意されています。
ネットワーク >> SD-WAN よりパフォーマンスSLAタブから確認できます。

デフォルトでは、ヘルスチェックは動作していません。
今回は、一番下にあるDefault_Office_365のヘルスチェックを有効にしてみます。該当リストをクリックし、参加インタフェースでwan1とwan2インタフェースを追加します。

少し待つと、ヘルスチェックの結果が表示されます。

デフォルトで準備されたものは使用せず、ヘルスチェック設定を自身で追加することもできます。Google (8.8.8.8)へpingによるヘルスチェックを実行する設定を追加してみます。
ネットワーク >> SD-WAN よりパフォーマンスSLAタブから新規作成をクリックします。

下記の通り設定します。

- 名前:任意の名前。ping_googleとします。
- プローブモード:アクティブを選択し、ヘルスチェックのパケットを送信します。パッシブの場合は、プローブは送信せず、実際の通信トラフィックを見て、回線の状態を確認します。
- プロトコル:Ping を選択
- サーバ:ヘルスチェック先である8.8.8.8を設定
- 参加インタフェース:指定によりwan1とwan2を選択。今回、wan1とwan2しかSD-WANメンバーはいないため、すべてのSD-WANメンバーを選択しても問題ありません。
SLA監視をしたい場合は、SLAターゲットを有効にします。(回線の生死監視だけなら、設定不要です)

ヘルスチェックの送信間隔も変更することができます。

OKをクリックすると、下記のとおり、ヘルスチェックの結果が表示されます。

SD-WANルール設定
どこからどこの通信に対して、WAN回線のパスをどのように分散させるかをSD-WANルールとして定義します。ここでは、マイクロソフト関連の通信に対しては、パフォーマンスのよい回線へ転送するよう、ルールを設定します。
カスタム設定
今回はすべての送信元からマイクロソフト通信に対して、SD-WANルールを設定します。
ネットワーク >> SD-WAN よりSD-WANルール >> 新規作成をクリックします。

下記のとおり設定します。

- 名前:任意の名前。今回は、sd-wan-rule1 とします。
- 送信元アドレス:allを選択

- インターネットサービス:Microsoft で検索し、結果すべてを登録
次に発信インタフェースの選択を設定します。

デフォルトではベストクオリティで、パフォーマンスの良い回線を自動選択します。デフォルトを採用します。
次に優先するインタフェースとSLAを選択します。

- 優先するインタフェース:wan1とwan2を選択
- 計測されたSLA:Default_Office_365 を選択
OKをクリックすると、下記のように登録されます。

暗黙のルール
カスタムで設定したSD-WANルールに引っかからない通信は、暗黙のルールが適用されます。

暗黙のルールをクリックすると、選択できる負荷分散のアルゴリズムが確認できます。

デフォルトでは、送信元IPのハッシュに応じて回線を分散させます。送信元-宛先IPのハッシュに応じて分散させることもできます。
セッションや通信量の割合を指定し、回線分散させることもできます。

また、スピルオーバとして、指定したしきい値を越えると、他の回線に分散する設定もできます。

今回は1つの送信元からのみ接続する環境で、WAN回線が分散されている様子を確認したいため、送信元-宛先IPを選択します。

ファイアウォールポリシー設定
発信インタフェースにvirtual-wan-linkを指定することで、SD-WANインターフェース発信のポリシーを設定します。

今回は検証目的に、アプリケーションを識別したいため、SSL証明書インスペクションとアプリケーションコントロールを有効にしておき、トラフィックログもすべて取得しておきます。

回線分散確認
端末かマイクロソフトサイト等、複数サイトへ接続し、ログ&レポート >> 転送トラフィックより、トラフィックログを確認します。(出力されるカラムは、変更しています。)
マイクロソフト関連サイトへの接続は、カスタムで設定したSD-WANルールが適用されており、レーテンシを計測し、最適とされるwan1インタフェース(Port3)へ転送されていることが確認できます。
また、マイクロソフトとは関連のないサイトへのアクセスは、wan1、および wan2インタフェースの両方を使用していることが確認できます。

回線障害
ISP1(wan1インタフェース側)に障害を発生させ、ISP2(wan2インタフェース側)へ経路が切り替わることを確認します。
障害発生
回線が障害となった場合にヘルスチェックがNGとなり、その回線は分散対象から外れます。
端末からping 8.8.8.8を実行し、トラフィックログを確認すると、wan1インタフェースから発信されていることをあらかじめ確認しておきます。

では、wan1の回線をダウンさせます。すると、一時的にpingが途切れ復旧します。


ネットワーク >> SD-WAN よりパフォーマンスSLAよりヘルスチェック状態を確認すると、wan1インタフェースがダウンしていることがわかります。

トラフィックログより宛先インタフェースもwan2に変更されています。

障害復旧
wan1の回線を復旧させます。ヘルスチェックを確認すると、レイテンシとジッターは正常表示に戻ります。

パケットロス割合はしばらくすると、0%になります。

帯域制御
SD-WANとセットで帯域制御を使用するパターンも多く見受けられます。重要なアプリケーションには、最低保証の帯域を設定したり、優先度の低いアプリケーションは、最大帯域を設定したりすることで、帯域や通信品質を確保します。
今回、実務ではありえませんが、テスト的に、マイクロソフト通信を100Kbp上限に設定し、その他アプリケーションを保護してみます。
ポリシー&オブジェクト >> トラフィックシェーピングより、 トラフィックシェーパー >> 新規作成をクリックし、100Kbpsを上限にするシェーパを作成します。

下記のとおり設定します。

- タイプ:共有を選択
- 名前:任意の名前。今回はMax_100kbpsとします。
- トラフィック優先度:Lowを選択
- 帯域幅の単位:kbpsを選択
- 最大帯域幅:100kbpsに設定
設定後、OKをクリックします。
次に、マイクロソフト通信を100kbps上限にするトラフィックシェーピングポリシーを設定します。ポリシー&オブジェクト >> トラフィックシェーピングより、 トラフィックシェーピングポリシー >> 新規作成をクリックします。

ポリシーを設定します。

- 名前:任意の名前。今回は、Microsoft_Max_100kbps とします。
トラフィックが一致する条件を設定します。

- 送信元:all を選択
- 宛先;Microsoft関連のアプリケーションを選択
次にアクションを設定します。

- 発信インタフェース:SD-WANインタフェースであるvirtual-wan-linkを選択
- Apply shaper:有効
- 逆方向シェイパー:Max_100Kbpsを選択(ダウンロード通信に適用)
設定後、OKをクリックします。
端末からマイクロソフト関連のサイトへアクセスすると、明らかなレスポンス低下が確認されます。
トラフィックシェーパーを確認すると、利用帯域幅が制限されており、超過パケットがドロップされていることが確認できます。

IPSecインタフェースをSD-WANインタフェースのメンバーとして、パフォーマンスSLAを使用したSD-WANルールを適用する場合は、下記の記事を参考にしてください。
>> 参考記事 : IPSec + SD-WAN機能の動作確認
コメント