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ルータは次の順番で動きます。
- IKE Phase1 を開始する
- IKE Phase2 を開始する
- IPsec SA を作成する
- 対象通信を暗号化して転送する
逆に言うと、対象通信が一度も流れていない状態では、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が張れないときは、次の順番で確認すると無駄が少ないです。
- 対向WAN側への疎通確認
- crypto map の適用有無を確認
- VPN対象ACLの内容を確認
- ACLに一致する通信を実際に流す
- show crypto isakmp sa と show crypto ipsec sa を確認する
この流れを押さえておくだけで、かなり早く原因にたどり着けます。
まとめ
Cisco IPsec VPNが張れないとき、設定不備や対向装置の問題を真っ先に疑いがちですが、実際には VPN対象の通信がまだ流れていないだけ ということがあります。
特に crypto map 型の構成では、interesting traffic が発生して初めてトンネルが確立されるため、対向WAN側へのpingだけでは不十分です。
VPNが上がらないときは、まず 対象ネットワーク間の通信を実際に流してみる ことが大切です。
設定を何度も見直す前に、通信が本当に発生しているかを確認するだけで、あっさり解決することもあります。
