目次
引っ越したらVPNがつながらなくなった!
自宅を引っ越したあと、これまで問題なく利用できていたIPsec VPNが突然接続できなくなりました。
回線は引き続きNURO光を利用していたため、当初は特に問題は発生しないと考えていました。実際、インターネット接続自体は正常です。Webサイトの閲覧もできるし、通常の通信には大きな違和感がありません。
さらに、社内には同じ回線を利用しているメンバーもいて、そちらではVPN接続できていました。つまり、単純に「NURO光だから接続できない」「回線全体が悪い」とは言い切れない状況です。
- インターネット接続は正常
- 同じ回線を使っている他メンバーはVPN接続できている
- 自分の環境だけIPsec VPNが接続できない
- Windows標準VPNからの接続が失敗する
最初は原因がまったく見えず、「回線を解約するしかないのでは……」とまで考えました。しかし、結果的には回線そのものではなく、IPv6(MAP-E)環境、証明書認証、FortiGate側の設定、Windows VPN側の設定が複合的に絡んだ問題でした。
検証環境
今回検証・切り分けを行った環境は以下の通りです。FortiOSについては、当初 v7.4.7 の環境から調査を開始し、その後 v7.4.12 へアップデートしたうえで確認しています。
VPNゲートウェイ
FortiOS
v7.4.7 → v7.4.12
アップデート後に挙動・設定項目を確認
クライアントOS
Windows 11 Home
VPN方式
IKEv2
認証方式
回線環境
IPv6(IPoE / MAP-E)
発生した事象
今回発生していた事象を整理すると、以下のような状態でした。
- 引っ越し後にIPsec VPNが接続できなくなった
- インターネット接続は正常
- 社内LANへのVPN接続のみ失敗
- 同じ回線を利用している他ユーザーはVPN接続可能
- Windows標準VPN(IKEv2)で接続できない
- FortiGate側ログとWindows側の表示が一致しない場面があった
ポイント
一見すると回線障害のように見える状況でしたが、実際には複数の設定要素が絡み合っており、
一つずつ切り分けて確認する必要がありました。
今回の構成
今回の構成は、FortiGate 60FをVPNゲートウェイとし、クライアント側ではFortiClientではなくWindows標準VPNを利用する形です。VPN方式はIKEv2、認証は証明書認証を採用しています。
FortiGate 60FとWindows標準VPNを利用した、IPv6(MAP-E)環境での接続全体像です。
今回の接続イメージ
まず疑ったのはMAP-E環境
調査を進めるうちに、自宅回線がMAP-E環境で動作していることが分かりました。
MAP-Eは、ざっくり言えばIPv6ネットワーク上でIPv4通信を扱うための方式です。家庭向け回線では、IPv4アドレス不足への対応や通信方式の変化により、IPv6(IPoE)やIPv4 over IPv6の利用が増えています。
通常のWeb閲覧ではあまり意識しなくても問題になりにくい一方、従来のIPv4前提で構成されたVPNでは、NAT、ポート利用、経路、名前解決、証明書検証などが複合的に影響する場合があります。
従来のIPv4前提の接続と、IPv6(IPoE) / MAP-E環境での接続イメージを比較しています。
従来のイメージ:IPv4前提
今回のイメージ:IPv6 / MAP-E
ポイント
「インターネットは普通に使えるのにVPNだけ繋がらない」という場合、回線側のIPv6化やIPv4 over IPv6方式が影響している可能性があります。ただし、今回のように証明書名やVPN設定も絡むため、MAP-Eだけを原因と決めつけるのは危険です。
FortiClientではなくWindows標準VPNを使った理由
今回はFortiClientではなく、Windows標準のVPN機能を利用する方針としました。
- クライアントソフトの追加配布を避けたい
- アップデート管理の負荷を下げたい
- Windows標準機能で運用できる構成にしたい
- 証明書認証を前提に、将来的な管理性も確保したい
環境によっては専用クライアントを使う方が適している場合もあります。今回は「Windows標準VPNでどこまで安定運用できるか」を重視しました。
IPv6対応IPsec VPNの構築開始
まずは社内側のIPv6通信基盤を整備しました。もともと社内側にはIPv6が導入済みだったため、必要な箇所へ設定を追加していきます。
- 必要箇所へのIPv6アドレス設定
- ルーティング設定
- ファイアウォールポリシー追加
- 疎通確認
ここまでは問題なく完了しました。IPv6通信自体は通っており、経路や基本的な疎通には大きな問題はなさそうです。しかし、本当の沼はここから始まります。
第1の沼:VPNが接続できない
FortiGate 60FにIPv6用のIPsec VPNを作成し、Windows標準VPNから接続を試みます。しかし、接続は失敗します。
しかも厄介だったのは、エラーメッセージやログの見え方が毎回微妙に違うことでした。
- 認証失敗のように見える
- 名前解決失敗のように見える
- ポリシー不一致のように見える
- 単純な接続タイムアウトにも見える
ログを見ては設定を変え、また接続して失敗。原因が一つに絞れず、まさに沼という状態でした。
第2の沼:FortiOSアップデート後に見えた "cert-id-validation"
当初のFortiOSは v7.4.7 でした。調査の過程でFortiOSを v7.4.12 へアップデートしたところ、設定項目として以下が確認できました。
set cert-id-validation enableデバッグログでは、次のようなメッセージが確認できました。
gw validation failedこの設定は、IKEで送信されるIDと証明書内のIDを照合する機能に関連するものと考えられます。今回の環境では、ここが認証フェーズの切り分けポイントになりました。
試しに以下のように変更します。
set cert-id-validation disableするとデバッグログの内容が変化し、認証フェーズを通過するようになりました。
注意
ここで重要なのは、「無効化すれば常に正解」という意味ではないです。証明書認証におけるID検証はセキュリティ上重要な意味を持つ場合があります。実際の環境では、証明書CN/SAN、接続先名、IKE IDの整合性を確認したうえで判断する必要があります。
なぜ改善したのか
証明書認証では、単に証明書が存在していればよいわけではありません。接続時に使われるID情報と、証明書のCNやSANがどのように一致しているかが重要になります。
Windows VPNから送信されるID情報と、FortiGate側で確認される証明書CN/SANの関係を整理した図です。
IKE ID と証明書情報の照合イメージ
今回のようにIPv6アドレスで接続しようとしている一方で、証明書はFQDNを前提に発行されている場合、接続先・ID・証明書名の関係が重要になります。
第3の沼:FortiGateでは成功、Windowsでは失敗
さらに調査を進めると、FortiGate側では以下のようなログが出ていました。
authentication succeeded
established IKE SA
added IPsec SAこのログだけを見ると、FortiGate側からは接続が成功しているように見えます。しかし、Windows側では接続失敗と表示されます。
FortiGateでは成功、Windowsでは失敗。ログ上の見え方が一致せず、ここで完全に混乱しました。
ただし、この状態は「FortiGate側のフェーズでは一定の処理が進んでいるが、Windows側が最終的に接続確立と判断できていない」と考えると整理しやすくなります。つまり、FortiGate側ログだけで完了判断するのではなく、Windows側の接続先名や証明書検証も含めて見る必要があります。
原因は接続先と証明書名の不一致
接続先として設定していたのはFortiGateのIPv6アドレスでした。
2001:xxxx:xxxx:xxxx::1
一方で、FortiGateのサーバ証明書はFQDNを前提に発行されていました。
vpn.example.jp
つまり、Windows VPNの接続先はIPv6アドレス、FortiGateの証明書はFQDNという不一致が発生していました。
自己署名証明書のSANが適切に設定されていなかったことも原因であった。
失敗時のIPv6アドレス接続と、解決後のFQDN接続を比較しています。
失敗時:接続先と証明書名が不一致
2001:xxxx:xxxx::1vpn.example.jp解決後:FQDNで接続
vpn.example.jp2001:xxxx:xxxx::1vpn.example.jp対応として、hostsファイルに対象のIPv6アドレスとFQDNを登録し、Windows VPNの接続先もFQDNへ変更しました。すると、ようやくVPN接続に成功しました。ここで一度、沼から生還した気持ちになりました。
第4の沼:接続できたのにクライアントPCでWebが見れない
VPN接続そのものは成功しました。RDPも通る、Pingも通る。これで解決したと思いました。
- VPN接続:成功
- Ping:成功
- RDP:成功
- Webブラウザ:RDP側 成功 クライアント側 失敗
しかし、今度はクライアントPC側のWebブラウザでインターネットが見られません。今日の天気予報すら確認できない状態です。
ここは比較的すぐに、スプリットトンネル設定が怪しいと考えました。Windows VPNの設定を確認します。
Get-VpnConnection -Name "vpn-gw" | fl SplitTunneling
結果は以下の通りでした。
SplitTunneling : False
スプリットトンネルが無効のため、VPN接続後の全通信がVPN側へ流れていました。今回の用途では、社内向け通信のみVPNへ流し、それ以外のインターネット通信は通常経路へ出したかったため、以下のコマンドで変更します。
Set-VpnConnection -Name "vpn-gw" -SplitTunneling $True
設定後は、VPN接続中でも通常のインターネットアクセスができるようになりました。これで、ようやく実用上の問題も解消しました。
切り分け時に使ったコマンド例
実際の調査では、Windows側で以下のようなコマンドを使うと状況を整理しやすくなります。
VPN設定確認
Get-VpnConnection -Name "vpn-gw" | fl *スプリットトンネル確認
Get-VpnConnection -Name "vpn-gw" | fl SplitTunneling名前解決確認
Resolve-DnsName vpn.example.jp疎通確認
Test-NetConnection vpn.example.jp -Port 500
Test-NetConnection vpn.example.jp -Port 4500ネットワーク構成確認
Get-NetIPConfiguration
Get-NetRoute 注意
IPsec/IKEv2ではUDP 500/4500や証明書、名前解決、経路など複数要素が絡みます。単一のコマンド結果だけで判断せず、FortiGate側ログとWindows側状態を突き合わせることが重要です。
FortiGate側で確認したいポイント
環境ごとに設定値は異なりますが、切り分けの観点としては以下を確認します。
- IPv6アドレスとルーティングが正しいか
- IPsec VPNのPhase1 / Phase2設定がWindows側と整合しているか
- 証明書のCN/SANと接続先名が一致しているか
- IKE IDの扱いが想定どおりか
- ファイアウォールポリシーで必要な通信が許可されているか
- FortiOS v7.4.7 と v7.4.12 の設定項目・挙動差を確認しているか
# 例:デバッグ確認時の観点
# 実際のコマンドや出力は環境により異なります
gw validation failed
authentication succeeded
established IKE SA
added IPsec SA 今回の切り分けの流れ
引っ越し後のVPN接続不可から、FortiOS更新、証明書名不一致の発見、スプリットトンネル修正までの流れです。
インターネット接続は正常。他ユーザーは接続できるため、単純な回線断とは言い切れない状態。
IPv6(IPoE) / MAP-E環境になっていることを確認。IPv4前提のVPN構成に影響している可能性を疑う。
FortiGate 60F側でIPv6アドレス、ルーティング、ファイアウォールポリシーを整備。
cert-id-validation 周辺の挙動を確認し、gw validation failed を手がかりに切り分け。接続先IPv6アドレスと証明書CN(FQDN)が一致していないことを確認。
hosts登録とVPN接続先変更により、VPN接続に成功。
VPN接続後のWeb通信不可を、
SplitTunneling=True で解消。今回の原因まとめ
VPN接続失敗および接続後の通信不具合に関係した3つの要因を整理した図です。
cert-id-validationIKE IDと証明書情報の検証
証明書CN/FQDNとの不一致
全通信がVPN側へ流れる
今回のトラブルは、どれか1つだけが原因だったわけではありません。IPv6(MAP-E)、証明書認証、Windows標準VPN、FortiGate 60F側の設定、FortiOSバージョン差分が複合的に影響していました。
まとめ
今回の問題は単純なVPN障害ではなく、以下のような複数要素が重なって発生していました。
- IPv6(MAP-E)環境
- FortiGate 60F / FortiOS設定
- FortiOS v7.4.7 から v7.4.12 へのアップデート前後の確認
- 証明書認証
- 接続先名称(FQDN)と証明書CNの整合性
- Windows標準VPN側のスプリットトンネル設定
最終的には、以下の構成で正常接続を確認できました。
- FortiGate 60F
- FortiOS v7.4.12
- Windows標準VPN(IKEv2)
- 証明書認証
- IPv6(IPoE / MAP-E)
引っ越し直後は回線変更も考えましたが、最終的には構成をIPv6環境に合わせて見直すことで解決できました。
同様に、「インターネットは使えるのにVPNだけ接続できない」「FortiGateとWindows標準VPNの証明書認証でうまくいかない」「IPv6(MAP-E)環境でVPNが不安定」という事象に遭遇した方の参考になれば幸いです。






