あんたいとる

無駄の中に宝がある!

【Fortigate】 IPsec VPN トラブルシューティング

はじめに

Fortigateで IPsec VPNを利用している場合のトラブルシューティングについて、メーカーの Knowledge Baseや Handbookなどから情報を集めまとめてみました。

参考URLについては、記事末尾にリンクを貼ってます。

情報収集

トラブルシューティングを行う前に、以下の情報を確認しておきます。

  • VPNのタイプと構成

    • VPNのタイプがサイト間VPNなのか、リモートアクセスVPNなのか
    • サイト間VPNの場合、両拠点とも Fortigateなのか異機種なのか。
    • リモートアクセスVPNの場合、障害発生したクライアント側の台数、クライアントPCのOS、VPNクライアントソフトの種類・バージョンなど
    • 回線情報(固定 IP or 動的 IPなど)

  • 障害状況

    • 障害発生日時。障害発生前後の経緯や設定変更の有無など
    • 障害が継続しているか回復しているか
    • VPN以外のインターネット接続の状況

  • 各種ログを取得

トラブルシューティングで使用するコマンド

IPsec VPNのトラブルシューティーングでは 以下のコマンドを使用します。

  # get ipsec tunnnel list
  # get vpn ipsec tunnel summary
  # diagnose vpn ike gateway list
  # diagnose vpn tunnel list

上記はもっとも基本的な構成(VDOM環境でないスタンドアローン構成)でのコマンド例になります。
VDOM環境の場合、 VDOM設定内で実行する必要があります。

  # config vdom
  # edit VDOM名                   (VDOM名を入力)

トラブルシューティング実行例

1. 問題がある IPsec VPN通信の識別

以下のコマンドで、IPsec VPNのトンネル情報概要を取得します。

# get vpn ipsec tunnel summary
 'to10.174.0.182' 10.174.0.182:0  selectors(total,up): 1/1  rx(pkt,err): 1921/0  tx(pkt,err): 69/2
 'to10.189.0.182' 10.189.0.182:0  selectors(total,up): 1/0  rx(pkt,err): 0/0  tx(pkt,err): 0/0

上記の例では、2つのVPNトンネル情報(to10.174.0.182とto10.189.0.182)が表示されています。
リストの2番目のVPNトンネルはセレクタがダウン状態になっているので、問題が発生していると考えられます。

2. IKE フェーズ 1の状態確認

IKEフェーズ 1が確立されているか確認

1で確認した問題が発生していると思われるトンネルのフェーズ 1の状態を以下のコマンドで確認します。

# diagnose vpn ike gateway list name to10.189.0.182

vd: root/0
name: to10.189.0.182
version: 1
interface: port9 10
addr: 10.189.0.31:500 -> 10.189.0.182:500
created: 15s ago
IKE SA: created 1/1
IPsec SA: created 0/0

  id/spi: 19576 a83334b3c66f871b/0000000000000000
  direction: responder
  status: connecting, state 3, started 15s ago

コマンド出力結果の中の「status」部分を確認します。
ステータスは「Established」か「Connectiong」のどちらかが出力されます。それぞれの意味は以下の通りです。

ステータス 意味
Established フェーズ 1 がアップし確立している
Connecting 接続はフェーズ 1 がダウンしている

フェーズ 1 がダウンしている場合は、追加のチェックを行い、原因を特定します。

IKEフェーズ 1が確立されていない場合

  • VPN ゲートウェイ間の IPレベルの接続性を確認。 以下のコマンドで、VPN ピアに向かってトレースルートを実行します。
# execute traceroute-options source 10.189.0.31
# execute traceroute 10.189.0.182
  • IKE通信(500番ポート または 4500番ポート )が経路上のどこかでブロックされていないか確認 以下のコマンドで、パケットキャプチャを実行します。
# diagnose sniffer packet any 'host 10.189.0.182 and port 500' 4 0 l
interfaces=[any]
filters=[host 10.189.0.182 and port 500]

※4500番ポートを確認する場合は上記コマンド中の "500" の部分を "4500"にして実行。
※diagnose snifer コマンドの使用方法詳細については、以下の記事を参照してください。

# diagnose vpn ike log-filter dst-addr4 10.189.0.182
# diagnose debug application ike -1
# diagnose debug enable

3. IKE フェーズ 2の状態確認

IKEフェーズ 1が確立状態だった場合は、以下のコマンドで IKEフェーズ 2の状態を確認します。

# diagnose vpn tunnel list name 10.189.0.182
list all ipsec tunnel in vd 0
name=to10.189.0.182 ver=1 serial=2 10.189.0.31:0->10.189.0.182:0
bound_if=10 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/8 options[0008]=npu
proxyid_num=1 child_num=0 refcnt=10 ilast=25 olast=25 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=0 idle=20000ms retry=3 count=0 seqno=534
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=to10.189.0.182 proto=0 sa=0 ref=1 serial=4
src: 0:172.16.170.0/255.255.255.0:0
dst: 0:192.168.50.0/255.255.255.0:0

コマンド出力結果の中の「sa=0」の部分を確認します。
saは以下の3つの値を持つことができます。

saの値 意味
0 セレクタ間に不一致があるか、トラフィックが開始されていないことを示す。
1 IPsec SA が一致しており、セレクタ間にトラフィックがあることを示す。
2 IPsecのSAリキー時にのみ表示される。

最後に、IKEフェーズ 2 の暗号化アルゴリズムとハッシュアルゴリズムがミスマッチしている場合が考えられます。 そのようなエラーを特定するためには、上記で説明したように IKE デバッグを実行する必要があります。

よくある不具合の原因と対処方法

IPsec VPNはアップしているが、ネットワークにアクセスできない

2つのFortiGates間のサイト間VPNとトンネルのステータスはアップしているのに、ローカルとリモートの両方のサブネットがお互いに到達できないか、一方通行の通信しかできない場合。

原因
  • クイックモードセレクタの不一致

  • 送信元NATが有効になっている

  • ルーティングの誤り

対処方法

 →クイックモードセレクタの設定に誤りがないか確認する。

  • 送信元 NATが有効になっている

 →IPsec VPN用のファイアウォールポリシーで送信元 NATを無効する。

  • ルーティングの誤り

 →IPsec VPNトラフィック用の経路(宛先やゲートウェイ)を正しく設定する。

IKEデバッグログに "could not send IKE Packet" が出力される

原因

ローカルの Fortigateからリモートの Fortigateへのアクティブなスタティックルートがない

対処方法

以下のコマンドでルーティングテーブルの情報を確認し、スタティックルートを正しく設定する

# get router info routing-table

参考URL

Knowledge Base: Troubleshooting IPsec VPNs

Knowledge Base: Phase 2 status in ipsec monitor page

Knowledge Base: Troubleshooting Tip: IPsec VPN Phase 1 Process - Aggressive Mode

Knowledge Base: IPsec VPN 'could not send IKE Packet' message

Knowledge Base: IPsec VPN is up but network is not reachable

【Fortigate】 トラブルシューティングに役立つ基本コマンド 10 - あんたいとる