FortiGate では、複数の WAN 回線(インターネット回線)を使って、冗長化や通信の負荷分散ができます。この記事では、インターネット回線2本に対して、ECMP(Equal Cost Multi-Path)で負荷分散される動きを確認します。検証時の FortiOS は 6.4.2 です。
- 2本の WAN 回線を ECMP で使うための初期設定
- 既定(送信元 IP ベース)の負荷分散の動き
- 送信元・宛先 IP ベースに変えたときの動き
検証の構成
FortiGate の port3 を WAN Primary(10.0.2.0/24、ゲートウェイ 10.0.2.1)、port1 を WAN Secondary(10.0.0.0/24、ゲートウェイ 10.0.0.1)につなぎます。LAN 側(port2)には端末 10.0.1.10 があります。2本の回線それぞれにデフォルトルートを設定し、ECMP で負荷分散します。
ECMP は、宛先とコストが同じルートが複数あるときに、それらのゲートウェイに通信を分散するしくみです。スタティックルートの場合、コストとは管理距離(distance)と優先度(priority)のことで、どちらも同じにする必要があります。
WAN 回線の分散は、SD-WAN 機能でも実現できます。次の記事もあわせて参考にしてください。
>> 参考記事:【Fortigate】SD-WAN機能(WAN回線分散)の動作確認
初期設定
FortiGate にインターネット回線2本(プライマリ回線、セカンダリ回線)をつないだあと、基本の設定をします。
エイリアスを設定する
わかりやすいように、各ポートにエイリアス(別名)を付けます。ネットワーク ›› インターフェース でインターネット回線のポートを開き、port3 に WAN-Primary、port1 に WAN-Secondary を設定します。
この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
| 名前 | WAN-Primary (port3) |
| 1エイリアス | WAN-Primary |
| タイプ | 物理インターフェース |
| 名前 | WAN-Secondary (port1) |
| 2エイリアス | WAN-Secondary |
| タイプ | 物理インターフェース |
ルーティングを確認する
それぞれのインターネット回線に向けて、デフォルトルートを設定しています。ルーティングテーブルは CLI で確認できます。
FortiGate
# get router info routing-table all
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default
Routing table for VRF=0
S* 0.0.0.0/0 [5/0] via 10.0.0.1, port1
[5/0] via 10.0.2.1, port3
C 10.0.0.0/24 is directly connected, port1
C 10.0.1.0/24 is directly connected, port2
C 10.0.2.0/24 is directly connected, port3
デフォルトルート(0.0.0.0/0)が、10.0.0.1(port1)と 10.0.2.1(port3)の2つのゲートウェイに向けて、同じ管理距離(5)で入っています。この2本のルートの間で ECMP の負荷分散が行われます。
ファイアウォールポリシーを設定する
LAN から WAN-Primary、LAN から WAN-Secondary へのそれぞれに、すべての通信を許可するポリシーを設定します。どちらの回線を通ったかをログで見分けられるよう、ポリシーは回線ごとに分けます。
アプリケーションを識別できるように、SSL インスペクション(deep-inspection)とアプリケーションコントロールを有効にし、ログはすべてのセッションを記録するようにします。SSL インスペクションとアプリケーションコントロールは、次の記事を参考にしてください。
>> 参考記事:【Fortigate】SSLインスペクション(deep-inspection)設定と動作確認 FortiOS6.2.4
>> 参考記事:【Fortigate】アプリケーションコントロールの設定と動作確認 FortiOS6.2.4
ポリシーの一覧は次のようになります。
| 名前 | 送信元 | 宛先 | サービス | アクション | NAT | セキュリティプロファイル | ログ |
|---|---|---|---|---|---|---|---|
| ⊟ LAN (port2) → WAN-Primary (port3) | |||||||
| 1WAN-Primary | all | all | ALL | ✓ 許可 | 有効化済み | APP default SSL deep-inspection | すべて |
| ⊟ LAN (port2) → WAN-Secondary (port1) | |||||||
| WAN-Secondary | all | all | ALL | ✓ 許可 | 有効化済み | APP default SSL deep-inspection | すべて |
動作確認
送信元 IP ベース(既定)での動き
端末から Google や Yahoo! など複数のサイトにアクセスし、ログ&レポート ›› 転送トラフィック を確認します。
| 送信元 | 宛先 | アプリケーション名 | ポリシーID |
|---|---|---|---|
| 10.0.1.10 | (伏せています) | Microsoft.Portal | 1WAN-Primary (5) |
| 10.0.1.10 | pr-bh-ing.pbp.vip.sg3.yahoo.com | Yahoo.Services | WAN-Primary (5) |
| 10.0.1.10 | (伏せています) | WAN-Primary (5) | |
| 10.0.1.10 | (伏せています) | Microsoft.Portal | WAN-Primary (5) |
| 10.0.1.10 | (伏せています) | HTTP.BROWSER_IE | WAN-Primary (5) |
| 10.0.1.10 | nrt20s01-in-f2.1e100.net | HTTPS.BROWSER | WAN-Primary (5) |
| 10.0.1.10 | nrt20s01-in-f2.1e100.net | Google.Services | WAN-Primary (5) |
| 10.0.1.10 | nrt20s02-in-f4.1e100.net | Google.Search | WAN-Primary (5) |
すべてのサイトへの通信が、プライマリ回線(WAN-Primary)を使っています。FortiGate の ECMP は、既定では送信元 IP アドレスで経路を選びます(source-ip-based)。そのため、同じ送信元からの通信は同じ経路(今回はプライマリ回線)を使います。
送信元・宛先 IP ベースに変える
プロキシサーバを経由する構成などでは、Web の通信の送信元 IP アドレスがすべて同じになるため、送信元 IP ベースでは1本の回線に偏ってしまいます。このような場合は、送信元 IP アドレスと宛先 IP アドレスの組み合わせで経路を選ぶ source-dest-ip-based にできます。設定は CLI で行います。
FortiGate
# config system settings
(settings) # set v4-ecmp-mode
source-ip-based Select next hop based on source IP.
weight-based Select next hop based on weight.
usage-based Select next hop based on usage.
source-dest-ip-based Select next hop based on both source and destination IPs.
(settings) # set v4-ecmp-mode source-dest-ip-based
(settings) # end
| v4-ecmp-mode | 経路の選び方 |
|---|---|
| source-ip-based | 同じ送信元 IP アドレスのセッションは同じ経路を使います(既定)。 |
| weight-based | インターフェースに設定した重みに応じて、セッションを振り分けます。 |
| usage-based | 設定したしきい値を超えるまで1つのインターフェースを使い、超えた分を次のインターフェースに流します。 |
| source-dest-ip-based | 送信元 IP アドレスと宛先 IP アドレスが同じセッションは、同じ経路を使います。 |
送信元・宛先 IP ベースでの動き
端末から、もう一度 Google や Yahoo! など複数のサイトにアクセスし、ログ&レポート ›› 転送トラフィック を確認します。
| 送信元 | 宛先 | アプリケーション名 | ポリシーID |
|---|---|---|---|
| 10.0.1.10 | (伏せています) | Yahoo.Services | WAN-Primary (5) |
| 10.0.1.10 | (伏せています) | Yahoo.Services | WAN-Primary (5) |
| 10.0.1.10 | nrt20s08-in-f4.1e100.net | Google.Services | 1WAN-Secondary (2) |
| 10.0.1.10 | nrt20s08-in-f4.1e100.net | Google.Services | WAN-Secondary (2) |
| 10.0.1.10 | syd09s06-in-f2.1e100.net | Google.Services | WAN-Primary (5) |
| 10.0.1.10 | nrt20s08-in-f4.1e100.net | Google.Services | WAN-Secondary (2) |
| 10.0.1.10 | (伏せています) | Yahoo.Services | WAN-Primary (5) |
| 10.0.1.10 | (伏せています) | Yahoo.Services | WAN-Primary (5) |
送信元 IP アドレスは同じですが、宛先 IP アドレスがばらばらなので、プライマリ回線とセカンダリ回線の両方が使われています。同じ宛先(nrt20s08-in-f4.1e100.net)への通信は、毎回同じセカンダリ回線を通っています。
まとめ
| 項目 | 内容 |
|---|---|
| ECMP の条件 | 宛先とコスト(スタティックルートでは管理距離と優先度)が同じルートが複数あること |
| 既定の方式 | source-ip-based。同じ送信元の通信は同じ回線を使う |
| 宛先でも分散 | config system settings で set v4-ecmp-mode source-dest-ip-based |
| 確認 | 回線ごとにポリシーを分け、転送トラフィックのポリシー ID で使われた回線を見る |
コメント