FortiGate IPsec VPN 複数回線冗長化の切替失敗を切り分け|確認手順

FortiGateのIPsec VPNを複数回線で冗長化し切替失敗を切り分ける手順(routing・sniffer・session・IKE/IPsec)

現場でよくあるのが「平常時は拠点間IPsecが安定しているのに、回線切替(フェイルオーバー/フェイルバック)した瞬間だけ通信が死ぬ」「片方向だけ通る」「数分戻らない」です。
この記事は一般的なVPN不通ではなく、FortiGate IPsec VPN 複数回線 冗長化切替時だけ起きるトラブルに絞って、私が実際に使う順序で切り分けます。

現場での体験談

FortiGate IPsec VPN 複数回線 冗長化は、製品名だけで決めると運用で詰まりやすいです。私はまず既存構成、認証、ログ、例外運用、切り戻し条件を並べて、置き換える範囲を小さく確認します。

この記事でやること(順序固定)
  1. 切替後の経路(SD-WAN/静的/PBR)を確定
  2. snifferで往復が同じトンネルか確認
  3. セッション残存/固定を確認して必要最小でクリア
  4. 最後にIKE/IPsec(SA/Phase2/提案)の不整合を詰める
現場メモ(私の肌感)
切替不通は「IPsecそのもの」より経路・戻り非対称・セッションが原因のことが多いです。IKEデバッグに突っ込む前に、まずどのIFから出るべきかを言語化してからコマンドを打つと早く終わります。
SECTION
対象構成の前提と、よくある3パターン
注意

新しい方式を入れても、既存VPN、DNS、証明書、端末管理、例外通信を同時に整理しないと、移行後の問い合わせが増えます。PoCでは成功条件だけでなく、切り戻し条件も先に決めてください。

移行前チェックの優先度

認証/IdP

95%

端末状態

90%

切り戻し条件

85%

対象構成の前提と、よくある3パターン

以降は「拠点AのFortiGate ↔ 拠点BのFortiGate/他社装置」を想定します。冗長化は大きく3パターンあります。

方式切替の根っこ切替時に詰まりやすい点
SD-WAN配下にIPsecSLA/優先でメンバ選択SLAプローブ設計、揺れ、戻り非対称、セッション
静的ルート優先度(距離/AD)到達性/リンクダウン依存リンクは生きているが上位が死んでいる時に検知できない
PBR併用マッチ条件で経路強制条件漏れ・優先順位・戻りが別経路になりやすい
注意(無理に断定しない)
FortiOSのバージョン、対向装置(FortiGate/他社/クラウドGW)、NAT有無、ポリシー構成で挙動が変わります。ここでは「切替で詰まる観点」と「判断基準」を示しますが、すべての環境で同じ出力になる保証はありません
SECTION
アーキテクチャ(テキストフロー)と、切替時に起きること

アーキテクチャ(テキストフロー)と、切替時に起きること

想定フロー(例:SD-WAN+2本のDialup/Static IPsec)
LAN(A) → Policy →(SD-WAN選択)→ IPsec_Tunnel_A(Primary) → Internet → 対向GW → LAN(B)
                └→ IPsec_Tunnel_B(Backup)  → Internet → 対向GW → LAN(B)
戻り: LAN(B) → 対向GWの経路/ポリシー → (同じトンネルで返す必要がある)

切替失敗の多くは、切替後に「片道はBackupトンネル、戻りはPrimaryのまま」などの非対称になり、FortiGateのステートフル処理(セッション/ポリシー)や対向側の実装で落ちます。

比較(切替のしやすさ/観測しやすさ)
SD-WAN(観測しやすさ)

静的ルートのみ(検知の確実さ)

PBR併用(設計ミスの入りやすさ)

※数値は性能評価ではなく、私が現場で「原因を追いやすい/追いにくい」と感じる傾向を棒で表現しただけです。環境差は出ます。
SECTION
切替失敗の確認手順(routing→sniffer→session→IKE/IPsec)

切替失敗の確認手順(routing→sniffer→session→IKE/IPsec)

ここからは手順書として使える粒度で書きます。私は「切替の瞬間」だけでなく、切替後30〜60秒も含めて観測します(SLAの判定/ホールドで挙動が変わるため)。

Step 1:切替後、どのIF/トンネルから出ているか(経路の確定)
判断基準:送信元LAN→宛先LANの通信が、想定したトンネルIFに向いていること。
確認コマンド例(代表)
get router info routing-table details <対向LANセグメント>
get router info routing-table all

# SD-WAN利用時
diagnose sys sdwan health-check
diagnose sys sdwan service
  • NG例:routing-tableで次ホップ/デバイスがPrimaryのまま。→ SD-WANルール、静的ルート距離、PBR条件を先に直す。
  • NG例:SD-WAN health-checkがDownになっているのに、serviceがまだPrimaryを掴む。→ SLAのfailtime/recoverytime、hold-down相当の設定、優先度を見直す。
Step 2:snifferで「片道だけ」になっていないか(非対称の確認)
判断基準:同じ5-tupleの往復が、同じトンネルIFで観測できること(少なくとも往復が見えること)。
確認コマンド例(IFは置き換え)
# トンネルIFでLAN側→対向LANの通信を見る
diagnose sniffer packet any 'host 10.10.10.10 and host 10.20.20.20' 4 0 a

# 片方向疑いなら、LAN側IFでも同じ条件で見る
diagnose sniffer packet <lan_if> 'host 10.10.10.10 and host 10.20.20.20' 4 0 a
  • 症状→判断:送信は見えるが戻りが見えない → 対向側の戻り経路(SD-WAN/静的/PBR/ポリシー)か、対向側が別トンネルへ返している可能性。
  • 症状→判断:戻りは来ているのにLANへ出ていかない → FortiGate側のポリシー順序/UTM/NAT、またはセッション不整合の可能性。
Step 3:セッションが旧経路に残っていないか(切替後に詰まる定番)
判断基準:切替後の新規通信が、期待するトンネルIFのセッションとして張られること。
確認コマンド例(影響範囲を絞る)
diagnose sys session filter clear
diagnose sys session filter src 10.10.10.10
diagnose sys session filter dst 10.20.20.20
diagnose sys session list

セッションの読み方は別記事に寄せます:FortiGate session tableの確認と詰まりどころ

警告(セッションクリアの扱い)
セッションクリアは影響が出ます。まずフィルタで絞って「該当通信だけ」を落とします。広範囲クリアは、監視/業務影響の合意が取れてからにします。
Step 4:IKE/IPsec(SA/Phase2/提案)を確認する
判断基準:切替後に「期待したトンネル」にSAが張られ、Phase2が必要分だけupしていること。
確認コマンド例(途切れない形で一式)
# IKE SAの状態
diagnose vpn ike gateway list
diagnose vpn ike gateway list name <tunnel_name>

# IPsec SA(Phase2)の状態
diagnose vpn tunnel list
diagnose vpn ipsec sa

# 必要に応じてデバッグ(実施後は必ずoff)
diagnose debug reset
diagnose debug console timestamp enable
diagnose debug application ike -1
diagnose debug enable
# ...切替/再接続を実施...
diagnose debug disable
  • 典型症状:切替後にIKE SAが別ゲートウェイで張られない/張り直しが遅い → 対向から見た送信元IP(回線のPublic IP)が変わっており、対向側のピア条件に合っていない可能性。
  • 典型症状:IKEはupだがPhase2が不足/Down → セレクタ(proxy-id)不整合、またはトンネルごとのPhase2重複が疑い。
  • 典型症状:ログにproposal/selector関連が出る → 既存記事のエラー別整理に逃がす:peer SA proposal対処(提案不一致)
SECTION
論点別:典型症状→確認→判断→対処(最低1セットずつ)

論点別:典型症状→確認→判断→対処(最低1セットずつ)

1) 戻り非対称(片方向)

症状切替後にping片方向、TCPはSYNだけ見える等
確認snifferで送信/戻りが同じトンネルIFか、対向側の戻り経路(可能なら)
判断基準戻りが別回線/別トンネルに出ている、または戻りが来ていない
対処対向側も同様に冗長化する場合、両側で切替条件を揃える(SLA宛先/閾値/ホールド)。片側だけSD-WANで切り替える構成は、戻り非対称になりやすいので要注意。

2) SD-WAN SLA設計ミス(Down判定がズレる/揺れる)

私がよく見る失敗は「プローブが実際の出口を通っていない」「sourceが固定されていない」「閾値が厳しすぎて揺れる」です。

設計の具体(例)
  • probe宛先:回線A/Bそれぞれで到達してほしい先を2つ用意(同一ASに偏らない)
  • source:WANインターフェースのIP(回線ごとの出口を固定)
  • 閾値:packet loss/latency/jitterは「業務アプリが耐えられる範囲」から逆算。いきなり厳しくしない
  • 揺れ対策:failtime/recoverytime、復旧後もしばらくPrimaryに戻さない運用(時間帯で戻す等)も検討

3) Phase2セレクタ/プロキシID(重複・不足)

冗長化でトンネルを2本作ると、同じローカル/リモートサブネットを両方に入れがちです。FortiGate同士なら成立することもありますが、対向が他社装置やクラウドゲートウェイの場合、受け側の実装で不安定になることがあります。

確認→判断
diagnose vpn tunnel list
# 出力で、どのtunnelにどのproxyid/selectorが紐づいているかを確認

対処は「セレクタを役割分担(例:通常系/バックアップ系で経路を明確化)」か、「対向仕様に寄せて1本に集約+回線冗長はUnderlay側で行う」など。どちらが取れるかは対向依存です。

4) NAT/ポリシー順序(切替後にだけ踏む)

切替でトンネルIFが変わると、ポリシーのfrom/toが一致せず、暗黙denyに落ちることがあります。UTMを掛けているとログの見え方も変わります。

確認(ログ)
# forward traffic のdeny/accept、policyid、srcintf/dstintf を見る
# GUI: Log & Report → Forward Traffic
# CLI例(環境によりフィルタは調整)
diagnose log filter category 0
diagnose log filter field logid 0000000013
# showでも十分だが、運用ポリシーに合わせて確認

判断基準:切替後にsrcintf/dstintfが変わっているのに、ポリシーが追従していない。対処はポリシー追加/統合、またはzone化でトンネルをまとめる等(ただし既存設計への影響は要評価)。

5) セッション固定(古い経路のまま)

切替直後だけ詰まる・数分で戻る場合、セッションタイムアウト待ちのことがあります。影響を最小にするなら「該当通信だけ」落とします。

対処例(最小クリア)
diagnose sys session filter clear
diagnose sys session filter src 10.10.10.10
diagnose sys session filter dst 10.20.20.20
diagnose sys session clear
SECTION
切替テスト手順(回線断/復旧、収束時間、切り戻し条件、ログ)

切替テスト手順(回線断/復旧、収束時間、切り戻し条件、ログ)

実施チェックリスト(コピペ用)
  • 事前:現行の経路(routing-table/SD-WAN service)を保存、対象フロー(IP/ポート)を決める
  • 計測:連続ping/TCP疎通(可能なら業務アプリ)を用意し、時刻を揃える
  • 断手順:回線Aの物理断 or 上位装置でBGP/PPPoE断(現場の手段に合わせる)
  • 観測:切替開始〜復旧までの秒数、snifferで往復、forward trafficログのdeny有無
  • 復旧:回線A復旧後、すぐPrimaryへ戻すか、一定時間Backup維持か(揺れ対策)
  • 切り戻し条件:収束が長い/片方向が再発する場合は一旦固定(運用として“戻さない”判断を先に決める)
  • 記録:SD-WAN health-checkの状態遷移、IKE/IPsec SAの張り替え時刻、sessionクリアの有無

一般的な「VPNがつながらない」観点も併用すると漏れが減ります:FortiGate VPN不通で最初に見るポイント

SECTION
関連読み(深掘りは既存記事に分離)

関連読み(深掘りは既存記事に分離)

Related Reading 1
切替後に提案不一致が出るケースはここでエラー別に確認すると早いです。
Related Reading 2
冗長化を続けるか、段階的にVPN共存しながらZTNAへ寄せるかの判断材料に。
SECTION
まとめ(現場で迷わない最短ルート)

まとめ(現場で迷わない最短ルート)

  • 切替不通は、まず経路の確定(RIB/SD-WAN)から。ここが曖昧だと全部ブレる
  • 次にsnifferで往復が見えるか。片方向なら戻り非対称を疑う
  • 切替直後だけ詰まるならセッション残存を疑い、絞ってクリア
  • 最後にIKE/IPsecのSA/Phase2。proposal/selector系は対向依存が強いのでログと突合
  • SD-WAN SLAは「宛先・source・閾値・揺れ対策」をセットで設計し、試験で収束時間を測る
SECTION
FAQ

FAQ

Q. 切替後に通信が復帰するまでの「許容秒数」はどう決める?
A. 業務アプリの再接続仕様(タイムアウト/リトライ)と監視通知の運用(誤検知許容)から決めます。ゼロ断が必要な要件だと、IPsec冗長化だけでは難しいケースがあり、アプリ設計や別方式も含めて再検討します。
Q. 片側だけSD-WANで切替、対向は静的のままでも動く?
A. 動くこともありますが、戻り非対称になりやすく、切替の瞬間に片方向やセッション不整合が出やすいです。少なくとも「対向がどの回線で返すか」を設計で固定できるか確認します。
Q. 切替後にDNSだけ引けない時は?
A. DNSはUDPで片方向の影響を受けやすいので、まずsnifferでクエリ/応答の往復を確認します。併せて、DNSサーバ到達の経路が切替後に別ポリシーへ落ちていないか(from/to、NAT)も確認します。
Q. Phase2が多い環境で切替が遅い
A. SA再生成の量が多いと時間が掛かることがあります。必要なセレクタの整理、集約(可能なら)、または切替頻度を下げる(SLA揺れ対策)を先に検討します。装置性能・暗号設定にも依存します。
Q. 将来的にVPNからZTNAへ段階移行したい
A. Fortinet文脈だと FortiSASE / FortiClient ZTNA / EMS、IdP/MFA、タグ(端末状態)、アプリ単位アクセス、ログ(アクセス/認証/端末)を段階導入し、拠点間は当面IPsecを共存させる構成が取りやすいです。全置き換えを急ぐと運用の崩れが出やすいので、共存期間の設計から入ります。
まとめ

まとめ

まとめ

FortiGate IPsec VPN 複数回線 冗長化は、機能名だけで比べず、認証、端末状態、通信経路、ログ、例外運用、切り戻し条件を並べて判断します。既存環境との併存期間を前提に、小さく試してログで確認する進め方が安全です。