CiscoルータでIPsec VPNを設定したあと、設定に問題がなさそうなのにトンネルが張れないことがあります。

対向装置へのpingは通る。
インターフェースもup。
設定ミスも見当たらない。
それでも show crypto isakmp sa を見ると何も出てこない。

こういうとき、原因は意外と単純で、VPN対象の通信がまだ流れていないだけというケースがあります。

今回は、Ciscoルータでありがちなこの事象について、仮の構成と仮アドレスを使ってわかりやすく解説します。


よくある症状

IPsec VPNを設定したあと、次のような状態になります。

  • 対向のWAN側IPにはpingが通る
  • ルーティングも設定済み
  • crypto map もインターフェースに適用済み
  • しかしVPNが張れない

確認コマンドを打つと、以下のように何も表示されないことがあります。

show crypto isakmp sa

この状態は、IKE Phase1がまだ始まっていないことを意味します。


原因は「interesting traffic」が流れていないこと

CiscoのIPsec VPNは、特に crypto map を使った構成 の場合、VPN対象通信が実際に流れたときに初めてネゴシエーションを開始します。

この「VPN対象通信」は、一般的にACLで定義されます。

ip access-list extended VPN-TRAFFIC
 permit ip 10.10.10.0 0.0.0.255 10.20.20.0 0.0.0.255

このACLに一致する通信が発生すると、Ciscoルータは次の順番で動きます。

  1. IKE Phase1 を開始する
  2. IKE Phase2 を開始する
  3. IPsec SA を作成する
  4. 対象通信を暗号化して転送する

逆に言うと、対象通信が一度も流れていない状態では、VPNは張られません。


仮構成で見るネットワーク例

ここでは、実環境ではなく、すべて仮の構成で説明します。

拠点A

  • LAN側ネットワーク:10.10.10.0/24
  • WAN側IP:192.0.2.10

拠点B

  • LAN側ネットワーク:10.20.20.0/24
  • WAN側IP:198.51.100.10

この2拠点をIPsec VPNで接続する想定です。


仮の設定例

以下は拠点A側の簡易的なサンプルです。すべて説明用の仮設定です。

crypto isakmp policy 10
 encr aes 256
 authentication pre-share
 group 14

crypto isakmp key sample-key address 198.51.100.10

crypto ipsec transform-set VPN-SET esp-aes esp-sha-hmac
 mode tunnel

ip access-list extended VPN-TRAFFIC
 permit ip 10.10.10.0 0.0.0.255 10.20.20.0 0.0.0.255

crypto map VPN-MAP 10 ipsec-isakmp
 set peer 198.51.100.10
 set transform-set VPN-SET
 match address VPN-TRAFFIC

interface GigabitEthernet0/0
 ip address 192.0.2.10 255.255.255.0
 crypto map VPN-MAP

この設定自体が正しくても、10.10.10.0/24 から 10.20.20.0/24 宛の通信がまだ発生していなければ、VPNは上がりません。


なぜ対向WAN側へのpingが通っていてもVPNが張れないのか

ここで混乱しやすいのが、対向装置のWAN側IPにpingが通っているのにVPNが張れないという点です。

たとえば、拠点Aから拠点BのWAN側IPである 198.51.100.10 にpingが通ったとしても、それは単にIP疎通があるだけです。

この通信はVPN対象ACLには一致していません。

permit ip 10.10.10.0 0.0.0.255 10.20.20.0 0.0.0.255

つまり、WAN側IPへのpingでは interesting traffic にならないため、VPN開始のきっかけになりません。


実際にVPNを張るにはどうするか

VPNを張るには、ACLに一致する通信を実際に発生させます。

たとえば、拠点AのLAN側端末やルータから、拠点BのLAN側宛にpingを打ちます。

ping 10.20.20.10 source 10.10.10.1

このように、10.10.10.0/24 → 10.20.20.0/24 の通信を流すことで、初めてVPNネゴシエーションが始まります。


確認すべきコマンド

VPNが上がらないときは、次のコマンドを順番に見ると状況がつかみやすいです。

IKE Phase1 の確認

show crypto isakmp sa

ここに何も出ない場合、interesting traffic が流れていないか、Phase1開始前の問題を疑います。

IPsec SA の確認

show crypto ipsec sa

ここで暗号化・復号のカウンタが増えていれば、トンネルは動いています。

ACLの確認

show access-lists VPN-TRAFFIC

ACLにヒットカウントが付いているかを見ることで、対象通信が本当に流れているか確認できます。


現場で勘違いしやすいポイント

この手のトラブルでは、次のような思い込みがよくあります。

  • 対向WAN側にpingが通るからVPNも上がるはず
  • 設定を入れた瞬間に常時トンネルが張られるはず
  • show crypto isakmp sa に何も出ないのは設定ミスに違いない

ですが、Ciscoのcrypto map型IPsecでは、対象通信が流れないと何も始まらないことがあります。

ここを知らないと、不要な設定変更をしてしまい、かえって切り分けが難しくなることもあります。


切り分けの基本手順

IPsec VPNが張れないときは、次の順番で確認すると無駄が少ないです。

  1. 対向WAN側への疎通確認
  2. crypto map の適用有無を確認
  3. VPN対象ACLの内容を確認
  4. ACLに一致する通信を実際に流す
  5. show crypto isakmp sa と show crypto ipsec sa を確認する

この流れを押さえておくだけで、かなり早く原因にたどり着けます。


まとめ

Cisco IPsec VPNが張れないとき、設定不備や対向装置の問題を真っ先に疑いがちですが、実際には VPN対象の通信がまだ流れていないだけ ということがあります。

特に crypto map 型の構成では、interesting traffic が発生して初めてトンネルが確立されるため、対向WAN側へのpingだけでは不十分です。

VPNが上がらないときは、まず 対象ネットワーク間の通信を実際に流してみる ことが大切です。

設定を何度も見直す前に、通信が本当に発生しているかを確認するだけで、あっさり解決することもあります。