FortiGate で WAN 回線を冗長化するときは、リンクモニタ(link-monitor)を使います。リンクモニタは、指定したインターフェースから特定の宛先に定期的にプローブ(今回は ping)を送り、応答がなくなるとその回線を使うスタティックルートをルーティングテーブルから外します。
この記事では、2本の WAN 回線にリンクモニタを設定し、プライマリ回線の上位側を切断したときと、復旧したときの動きを CLI とログで確認します。検証時の FortiOS は 6.4.2 です。
- リンクモニタの設定(CLI)
- リンクモニタとルーティングテーブルの確認方法
- 回線断と復旧のときのルートと通信の切り替わり
検証の構成
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 があります。リンクモニタは、それぞれの回線から 8.8.8.8 に ping を送って監視します。
この構成は、次の記事の ECMP(等コストのデフォルトルートを2本使う構成)を前提にしています。先に読んでおくと流れがつかみやすくなります。
>> 参考記事:【Fortigate】WAN回線分散(ECMP)FortiOS6.4.2
ECMP の負荷分散の方式を送信元 IP アドレスに戻し、端末(10.0.1.10)の通信がすべてプライマリ回線を通っていることを、先に確認しておきます。ログ&レポート ›› 転送トラフィック で、ポリシー ID が WAN-Primary になっていることがわかります。
この記事の画面は、実際の画面ではなく、検証時の画面から見るポイントを抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
| 送信元 | 宛先 | アプリケーション名 | 結果 | ポリシーID |
|---|---|---|---|---|
| 10.0.1.10 | edge2000.img.vip.djm.yimg.jp | Yahoo.Services | ✓ | 1WAN-Primary (5) |
| 10.0.1.10 | edge1000.img.vip.bbt.yimg.jp | Yahoo.Services | ✓ | WAN-Primary (5) |
| 10.0.1.10 | (伏せています) | Microsoft.Office.365.Portal | ✓ | WAN-Primary (5) |
| 10.0.1.10 | edge1000.img.vip.bbt.yimg.jp | Yahoo.Services | ✓ | WAN-Primary (5) |
| 10.0.1.10 | (伏せています) | Yahoo.Services | ✓ | WAN-Primary (5) |
| ⋮(以下略) | ||||
WAN 回線の監視は、SD-WAN 機能のパフォーマンス SLA でも実現できます。次の記事もあわせて参考にしてください。
>> 参考記事:【Fortigate】SD-WAN機能(WAN回線分散)の動作確認
リンクモニタの設定
CLI でリンクモニタを作る
リンクモニタは CLI で設定します。回線ごとに1つずつ作り、edit 1 を Secondary(port1)、edit 2 を Primary(port3)にします。
FortiGate
# config system link-monitor (link-monitor) # edit 1 (1) # set srcintf port1 (1) # set server 8.8.8.8 (1) # set gateway-ip 10.0.0.1 (1) # next (link-monitor) # edit 2 (2) # set srcintf port3 (2) # set server 8.8.8.8 (2) # set gateway-ip 10.0.2.1 (2) # next (link-monitor) # end
| 設定 | 意味 |
|---|---|
| srcintf | 監視する回線のインターフェースです。プローブはこのインターフェースから送られます。 |
| server | プローブを送る宛先です。今回は検証用に、両方の回線とも 8.8.8.8 にしています。 |
| gateway-ip | プローブを送るときに使うゲートウェイ(回線側のルータ)のアドレスです。 |
このほかに、監視方法(protocol)や監視の間隔・回数も設定できます。今回は指定していないので、次の値で動いています。
| 設定 | 今回の値 | 意味 |
|---|---|---|
| protocol | ping | 監視に使うプロトコルです。ping のほか、tcp-echo、udp-echo、http、twamp を選べます。 |
| interval | 500 ms | プローブを送る間隔です(既定 500 ミリ秒)。 |
| failtime | 5 | この回数だけ失敗すると、宛先がダウンしたと判断します(既定 5)。 |
| recoverytime | 5 | この回数だけ応答があると、宛先が復旧したと判断します(既定 5)。 |
リンクモニタの状態確認
リンクモニタとルートを確認する
diagnose sys link-monitor status で状態を確認します。Link Monitor: 1 が Secondary(port1)、Link Monitor: 2 が Primary(port3)です。
FortiGate
# diagnose sys link-monitor status Link Monitor: 1, Status: alive, Server num(1), Flags=0x1 init, Create time: Sat Oct 24 14:39:25 2020 Source interface: port1 (3) Gateway: 10.0.0.1 Interval: 500 ms Peer: 8.8.8.8(8.8.8.8) Source IP(10.0.0.99) Route: 10.0.0.99->8.8.8.8/32, gwy(10.0.0.1) protocol: ping, state: alive Latency(Min/Max/Avg): 1.413/1.473/1.436 ms Jitter(Min/Max/Avg): 0.001/0.051/0.017 Packet lost: 0.000% Number of out-of-sequence packets: 0 Fail Times(0/5) Packet sent: 25519, received: 25508, Sequence(sent/rcvd/exp): 25520/25520/25521 Link Monitor: 2, Status: alive, Server num(1), Flags=0x1 init, Create time: Sat Oct 24 14:39:25 2020 Source interface: port3 (5) Gateway: 10.0.2.1 Interval: 500 ms Peer: 8.8.8.8(8.8.8.8) Source IP(10.0.2.134) Route: 10.0.2.134->8.8.8.8/32, gwy(10.0.2.1) protocol: ping, state: alive Latency(Min/Max/Avg): 3.808/4.052/3.854 ms Jitter(Min/Max/Avg): 0.002/0.239/0.040 Packet lost: 0.000% Number of out-of-sequence packets: 0 Fail Times(0/5) Packet sent: 25519, received: 25504, Sequence(sent/rcvd/exp): 25520/25520/25521
| 表示 | 意味 |
|---|---|
| Status / state | 監視の状態です。alive は応答がある状態、die はダウンと判断した状態です。 |
| Source interface | 監視している回線のインターフェースです。 |
| Gateway | プローブを送るゲートウェイです。 |
| Interval | プローブを送る間隔です。 |
| protocol | 監視に使っているプロトコルです。 |
| Packet lost | プローブが失われた割合です。 |
| Fail Times(0/5) | 失敗した回数と、ダウンと判断するまでの回数(failtime)です。 |
Primary、Secondary とも State が alive、Packet lost が 0% で、ポーリングに正常に応答があることがわかります。
ルーティングテーブルを確認すると、Primary と Secondary の両方にデフォルトルートが入っています。
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
リンクモニタの動作確認
プライマリ回線を切断する
プライマリ回線のルータの上位側を切断します。FortiGate から見ると port3 はリンクアップしたままですが、8.8.8.8 への ping に応答が返らなくなります。
切断後、リンクモニタの状態を確認します。
FortiGate
# diagnose sys link-monitor status
Link Monitor: 1, Status: alive, Server num(1), Flags=0x1 init, Create time: Sun Oct 25 10:47:50 2020
Source interface: port1 (3)
Gateway: 10.0.0.1
Interval: 500 ms
Peer: 8.8.8.8(8.8.8.8)
Source IP(10.0.0.99)
Route: 10.0.0.99->8.8.8.8/32, gwy(10.0.0.1)
protocol: ping, state: alive
Latency(Min/Max/Avg): 1.486/1.534/1.502 ms
Jitter(Min/Max/Avg): 0.001/0.043/0.013
Packet lost: 0.000%
Number of out-of-sequence packets: 0
Fail Times(0/5)
Packet sent: 373, received: 362, Sequence(sent/rcvd/exp): 374/374/375
Link Monitor: 2, Status: die, Server num(1), Flags=0x9 init, Create time: Sun Oct 25 10:47:50 2020
Source interface: port3 (5)
Gateway: 10.0.2.1
Interval: 500 ms
Peer: 8.8.8.8(8.8.8.8)
Source IP(10.0.2.134)
Route: 10.0.2.134->8.8.8.8/32, gwy(10.0.2.1)
protocol: ping, state: die
Packet lost: 27.000%
Number of out-of-sequence packets: 0
Recovery times(0/5) Fail Times(3/5)
Packet sent: 373, received: 331, Sequence(sent/rcvd/exp): 374/345/346
Primary 側(Link Monitor: 2)の State が die になり、Packet lost が 0% から 27% に上がっています。
ルーティングテーブルを確認すると、Primary 側(10.0.2.1 経由)のデフォルトルートが消え、Secondary 側だけが残っています。
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
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
端末から Google や Yahoo! などにアクセスすると、すべての通信が Secondary 回線を通っていることがわかります。
| 送信元 | 宛先 | アプリケーション名 | 結果 | ポリシーID |
|---|---|---|---|---|
| 10.0.1.10 | (伏せています) | Google.Services | ✓ | 1WAN-Secondary (2) |
| 10.0.1.10 | (伏せています) | Microsoft.Portal | ✓ | WAN-Secondary (2) |
| 10.0.1.10 | (伏せています) | NTP | ✓ | WAN-Secondary (2) |
| 10.0.1.10 | client.hip.live.com | Microsoft.Portal | ✓ | WAN-Secondary (2) |
| 10.0.1.10 | (伏せています) | Yahoo.Services | ✓ | WAN-Secondary (2) |
| 10.0.1.10 | signup.live.com | Microsoft.Portal | ✓ | WAN-Secondary (2) |
| ⋮(以下略) | ||||
| No. | 表示 | 意味 |
|---|---|---|
| 1 | ポリシーID | 切断前(図2)は WAN-Primary (5) でしたが、切断後は WAN-Secondary (2) で通信しています。 |
回線復旧
プライマリ回線を復旧する
しばらくしてから、プライマリ回線を復旧させます。
リンクモニタの状態を確認すると、Primary 側の State が alive に戻っています。Packet lost は 91% と高い値ですが、切断中に上がった値(100%)から下がってきています。
FortiGate
# diagnose sys link-monitor status
Link Monitor: 1, Status: alive, Server num(1), Flags=0x1 init, Create time: Sun Oct 25 10:47:50 2020
Source interface: port1 (3)
Gateway: 10.0.0.1
Interval: 500 ms
Peer: 8.8.8.8(8.8.8.8)
Source IP(10.0.0.99)
Route: 10.0.0.99->8.8.8.8/32, gwy(10.0.0.1)
protocol: ping, state: alive
Latency(Min/Max/Avg): 1.478/1.764/1.518 ms
Jitter(Min/Max/Avg): 0.001/0.261/0.022
Packet lost: 0.000%
Number of out-of-sequence packets: 0
Fail Times(0/5)
Packet sent: 560, received: 549, Sequence(sent/rcvd/exp): 561/561/562
Link Monitor: 2, Status: alive, Server num(1), Flags=0x1 init, Create time: Sun Oct 25 10:47:50 2020
Source interface: port3 (5)
Gateway: 10.0.2.1
Interval: 500 ms
Peer: 8.8.8.8(8.8.8.8)
Source IP(10.0.2.134)
Route: 10.0.2.134->8.8.8.8/32, gwy(10.0.2.1)
protocol: ping, state: alive
Latency(Min/Max/Avg): 3.854/4.297/3.929 ms
Jitter(Min/Max/Avg): 0.000/0.388/0.063
Packet lost: 91.000%
Number of out-of-sequence packets: 0
Fail Times(0/5)
Packet sent: 560, received: 340, Sequence(sent/rcvd/exp): 561/561/562
ルーティングテーブルを確認すると、Primary と Secondary の両方にデフォルトルートが入り、ルートも元に戻っています。
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
まとめ
| 状態 | リンクモニタ | ルーティングテーブル |
|---|---|---|
| 通常時 | 両方とも alive | デフォルトルートが2本(port1、port3) |
| プライマリ断 | Primary が die | port3 側のデフォルトルートが消え、port1 側だけになる |
| プライマリ復旧 | Primary が alive | デフォルトルートが2本に戻る |
リンクモニタを使うと、回線のインターフェースがリンクアップしたままでも、その先の障害を検知してルートを切り替えられます。
コメント