Ciscoルータを利用したIPsec-VPN接続が失敗する場合、IKEフェーズ1で失敗しているのか、あるいはIKEフェーズ2で失敗しているのかを切り分ける必要があります。
IKEフェーズ1の状態は、show crypto isakmp sa コマンドで確認することができます。このコマンドにより大きく以下の3パターンの結果が得られます。
◆ ケース 1
ステータスに何も表示されないケース。このステータスはIPsec通信が行われていない状態を意味します。つまり、end-to-endで通信が行われていない状態であるためPCから対向拠点のPCに対してPINGなどで通信を行ってみましょう。それでも、何も表示されていない場合にはIPsec対象のACL設定ミス、ルーティング設定ミスである可能性が高いです。
◆ ケース 2
ステータスにMM_NO_STATEと表示されるケース。このステータスはIKEフェーズ1の失敗を意味します。IPsec-VPN接続を行う両方のルータでIKEフェーズ1の設定に間違いがないかどうかを確認しましょう。例えば、Pre-shared Key (crypto isakmp key) の設定が両端のルータで同じ値なのかを確認してみましょう。また、ACLの設定が原因である可能性もあるので障害切り分けのために、ACLを外したり、一時的に緩いACLに変更して問題を切りわけましょう。
この問題はルータの再起動によって解決する事例も報告されており、MM_NO_STATE(失敗)ステータスから、QM_IDLE(成功)ステータスに遷移してくれる場合もあります。
◆ ケース 3
ステータスにQM_IDLEと表示されるケース。このステータスは、IKEフェーズ1の成功を意味します。従って、現状のIKEフェーズ1の設定は正しいことを意味するので、IPsec-VPN接続の通信が正常に行えない場合は、IKEフェーズ1ではなくて、IKEフェーズ2の設定に問題があることを意味します。
IPsec通信が上手くいかない場合は、IKEフェーズ1で失敗していることが多いので、あとはIKEフェーズ2で上述のパラメータが両端のルータで同じであることを確認します。
そして、show crypto ipsec saで IKEフェーズ2の状態を確認しましょう。IKEフェーズ2で、最も使用されているセキュリティプロトコルのESPを使用する場合は、show crypto ipsec saコマンドで「inbound esp sas:」と「outbound esp sas:」の項目でトランスフォームセットが反映されていることを確認して、以下の項目で「 X 」の値がカウントされていることを確認しましょう。
# pkts encaps: X, #pkts encrypt: X, #pkts digest: X
# pkts decaps: X, #pkts decrypt: X, #pkts verify: X
なお、show crypto engine connections activeで、現在のアクティブな暗号化セッションを確認できます。以上、ご参考になれば幸いです。