【Fortigate】WAN回線冗長(link-monitor設定) FortiOS6.4.2

FortiGate で WAN 回線を冗長化するときは、リンクモニタ(link-monitor)を使います。リンクモニタは、指定したインターフェースから特定の宛先に定期的にプローブ(今回は ping)を送り、応答がなくなるとその回線を使うスタティックルートをルーティングテーブルから外します。

この記事では、2本の WAN 回線にリンクモニタを設定し、プライマリ回線の上位側を切断したときと、復旧したときの動きを CLI とログで確認します。検証時の FortiOS は 6.4.2 です。

この記事でわかること
  1. リンクモニタの設定(CLI)
  2. リンクモニタとルーティングテーブルの確認方法
  3. 回線断と復旧のときのルートと通信の切り替わり

検証の構成

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 を送って監視します。

Internet8.8.8.810.0.1.10port2FortiGateport3port1WAN Primary10.0.2.0/24WAN Secondary10.0.0.0/2410.0.2.110.0.0.1ping 監視ping 監視
図1 検証の構成(2本の WAN 回線を、それぞれ 8.8.8.8 への ping で監視する)

この構成は、次の記事の ECMP(等コストのデフォルトルートを2本使う構成)を前提にしています。先に読んでおくと流れがつかみやすくなります。

>> 参考記事:【Fortigate】WAN回線分散(ECMP)FortiOS6.4.2

ECMP の負荷分散の方式を送信元 IP アドレスに戻し、端末(10.0.1.10)の通信がすべてプライマリ回線を通っていることを、先に確認しておきます。ログ&レポート ›› 転送トラフィック で、ポリシー ID が WAN-Primary になっていることがわかります。

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時の画面から見るポイントを抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。

FortiGate 管理画面画面イメージ
ログ&レポート ›› 転送トラフィック
送信元宛先アプリケーション名結果ポリシーID
10.0.1.10edge2000.img.vip.djm.yimg.jpYahoo.Services✓1WAN-Primary (5)
10.0.1.10edge1000.img.vip.bbt.yimg.jpYahoo.Services✓WAN-Primary (5)
10.0.1.10(伏せています)Microsoft.Office.365.Portal✓WAN-Primary (5)
10.0.1.10edge1000.img.vip.bbt.yimg.jpYahoo.Services✓WAN-Primary (5)
10.0.1.10(伏せています)Yahoo.Services✓WAN-Primary (5)
⋮(以下略)
図2 切断前のログ(実際の画面ではなく、表示のポイントを示したイメージです。宛先はホスト名だけを示しています)

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)や監視の間隔・回数も設定できます。今回は指定していないので、次の値で動いています。

設定今回の値意味
protocolping監視に使うプロトコルです。ping のほか、tcp-echo、udp-echo、http、twamp を選べます。
interval500 msプローブを送る間隔です(既定 500 ミリ秒)。
failtime5この回数だけ失敗すると、宛先がダウンしたと判断します(既定 5)。
recoverytime5この回数だけ応答があると、宛先が復旧したと判断します(既定 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 に応答が返らなくなります。

Internet8.8.8.810.0.1.10port2FortiGateport3port1WAN Primary10.0.2.0/24WAN Secondary10.0.0.0/2410.0.2.110.0.0.1応答なしping 監視
図3 プライマリ回線の上位側を切断する

切断後、リンクモニタの状態を確認します。

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 回線を通っていることがわかります。

FortiGate 管理画面画面イメージ
ログ&レポート ›› 転送トラフィック
送信元宛先アプリケーション名結果ポリシー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.10client.hip.live.comMicrosoft.Portal✓WAN-Secondary (2)
10.0.1.10(伏せています)Yahoo.Services✓WAN-Secondary (2)
10.0.1.10signup.live.comMicrosoft.Portal✓WAN-Secondary (2)
⋮(以下略)
図4 切断後のログ(実際の画面ではなく、表示のポイントを示したイメージです。宛先はホスト名だけを示しています)
No.表示意味
1ポリシーID切断前(図2)は WAN-Primary (5) でしたが、切断後は WAN-Secondary (2) で通信しています。

回線復旧

プライマリ回線を復旧する

しばらくしてから、プライマリ回線を復旧させます。

Internet8.8.8.810.0.1.10port2FortiGateport3port1WAN Primary10.0.2.0/24WAN Secondary10.0.0.0/2410.0.2.110.0.0.1ping 監視ping 監視復旧
図5 プライマリ回線の上位側を復旧する

リンクモニタの状態を確認すると、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 が dieport3 側のデフォルトルートが消え、port1 側だけになる
プライマリ復旧Primary が aliveデフォルトルートが2本に戻る

リンクモニタを使うと、回線のインターフェースがリンクアップしたままでも、その先の障害を検知してルートを切り替えられます。

コメント