はじめに
本記事では、Cisco IOS XE 17.x を前提に、IKEv2 + VTI(Virtual Tunnel Interface) で拠点間 VPN(Site-to-Site VPN)を構築する手順を解説します。
かつて Cisco の VPN 設定では Crypto Map(暗号マップ)を使うのが主流でしたが、設定が複雑でトラブルシューティングが難しいという課題があり、現在は VTI を使用した Route-based VPN 構成が推奨 されています。さらに Cisco は IOS XE 17.6 で Static/Dynamic Crypto Map 機能の EOL を発表済み であり、新規構築・既存環境のリプレースともに VTI への移行が推奨される状況です。
参考: Cisco – Configure a Multi-SA Virtual Tunnel Interface on a Cisco IOS XE Router
“Cisco announced the end-of-life dates for the Cisco IPsec Static Crypto Map and Dynamic Crypto Map feature in Cisco IOS XE Release 17.6.”
(Cisco は IOS XE 17.6 で IPsec Static/Dynamic Crypto Map 機能の EOL を発表しました)
https://www.cisco.com/c/en/us/support/docs/security-vpn/ipsec-negotiation-ike-protocols/214728-configure-multi-sa-virtual-tunnel-interf.html
また、本記事は IKEv2 をベースとした設定例で構成しています。IKEv1 は RFC 9395(2023 年 4 月)で正式に Deprecated 化されており、新規構築では IKEv2 を選定することが推奨されます。IKEv1 と IKEv2 の違いや IPsec の仕組みについては、関連記事『IPsec の仕組みと IKEv1 廃止|ESP・SA・NAT-T の落とし穴』で詳しく解説しています。
- IKEv2 + VTI による Cisco 拠点間 VPN の構築手順(CLI 設定例)
- Crypto Map/VTI/Multi-SA VTI など Cisco IPsec VPN 機能の選定基準
- VTI 特有の制約事項と運用上のハマりポイント
show crypto ikev2 sa等を使ったトラブルシューティング手順
VTI(Virtual Tunnel Interface)とは
VTI(仮想トンネルインターフェイス)は、VPN トンネルを 1 つの論理インターフェイス(Tunnel X)として扱う技術 です。物理インターフェイスと同じようにルーティング・QoS・ACL を適用できるため、Crypto Map 方式と比べて構成・運用がシンプルになります。
Crypto Map 方式との違い
| 項目 | Crypto Map(Policy-based VPN) | VTI(Route-based VPN) |
|---|---|---|
| 暗号化対象の指定方法 | ACL にマッチした通信のみ暗号化 | トンネルインターフェイス向けの通信を暗号化 |
| ルーティング | ACL 依存。動的ルーティング非対応 | ルーティングテーブルで制御。OSPF・BGP 対応 |
| NAT との競合 | 発生しやすい | 発生しにくい |
| トラブルシューティング | 複雑 | インターフェイスとして扱えるため明快 |
| 現在のステータス | IOS XE 17.6 で EOL 発表済み | 現行の推奨方式 |
Crypto Map から VTI への移行が間に合わない既存環境向けには、IOS XE 16.12 以降で Multi-SA VTI が利用可能です。これは Crypto Map 互換のクリプト ACL を持ちながら VTI のメリットを得られる中間ソリューションで、対向が古い Crypto Map 構成のまま残っているケースで有効です。
GRE over IPsec との違い
VTI は GRE ヘッダのオーバーヘッドを削減できる 点で優れています。
| 方式 | パケット構造 | 特徴 |
|---|---|---|
| GRE over IPsec | [IP][ESP][GRE][元 IP][Payload] | GRE ヘッダ(24 byte)の分、MTU が縮小。ルーティングプロトコル全般・マルチキャストに対応 |
| VTI(IPsec Profile) | [IP][ESP][元 IP][Payload] | GRE ヘッダ不要。オーバーヘッドが小さい。IP ユニキャストとマルチキャストに対応 |
VTI は 「GRE のような手軽なルーティング制御」と「ネイティブ IPsec の効率性」の両者の利点を組み合わせた構成 といえます。なお、IS-IS など一部のレイヤ 2 系プロトコルは GRE が必要となるため、要件に応じて GRE over IPsec を選択するケースもあります。
参考: Cisco – IPsec Virtual Tunnel Interface
“The IPsec VTI is limited to IP unicast and multicast traffic only, as opposed to generic routing encapsulation (GRE) tunnels, which have a wider application for IPsec implementations.”
(IPsec VTI は IP ユニキャストとマルチキャストに限定されており、より広範な用途に対応する GRE トンネルとは異なります)
https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/sec_conn_vpnips/configuration/zZ-Archive/IPsec_Virtual_Tunnel_Interface.html
Cisco IPsec VPN 機能の選定マトリクス
Cisco IOS には複数の IPsec VPN 構成方式があり、要件によって最適な選択肢が異なります。本記事で紹介する SVTI(Static VTI)以外の代替を含めて整理します。
参考: Cisco Live 2024 – BRKSEC-3058
“Main building block for IOS IPSec VPNs – mGRE (DMVPN), Static/Dynamic (FlexVPN) and now ASA / FTD.”
(IOS の IPsec VPN における主要な構成要素 – mGRE [DMVPN]、Static/Dynamic VTI [FlexVPN]、そして現在は ASA/FTD でも採用)
https://www.ciscolive.com/c/dam/r/ciscolive/emea/docs/2024/pdf/BRKSEC-3058.pdf
主要な構成方式の比較
| 方式 | 用途 | IKE バージョン | スケーラビリティ | 現在のステータス |
|---|---|---|---|---|
| Crypto Map(Static/Dynamic) | レガシー Site-to-Site | IKEv1/IKEv2 | 拠点数増加で複雑化 | IOS XE 17.6 で EOL 発表済み |
| Multi-SA VTI | Crypto Map から VTI への移行 | IKEv1/IKEv2 | 中規模まで | 移行用の中間ソリューション |
| SVTI(Static VTI) | 拠点間 P2P VPN(本記事の構成) | IKEv1/IKEv2 | 数〜数十拠点 | 新規構築の推奨方式 |
| DVTI(Dynamic VTI) | リモートアクセス/動的ピア | IKEv2 のみ | ハブ&スポーク | リモートアクセス向け |
| DMVPN | 大規模ハブ&スポーク(mGRE + NHRP) | IKEv1/IKEv2 | 100〜10,000 拠点規模 | 大規模拠点網で現役 |
| FlexVPN | DMVPN の後継(IKEv2 統合フレームワーク) | IKEv2 のみ | 大規模対応 | 大規模新規構築の推奨 |
選定の目安
- 拠点数が数〜数十程度の P2P 接続: SVTI(本記事の構成)
- 対向が動的 IP(リモートアクセス含む): DVTI または FlexVPN
- 既存 Crypto Map 環境からの段階的移行: Multi-SA VTI を経由
- 数百拠点以上のハブ&スポーク: DMVPN または FlexVPN
- 3rd ベンダー機器との相互接続: SVTI(最も互換性が高い)
本記事で紹介した SVTI は、「数拠点規模・対向 IP が固定または DDNS 解決可能・シンプルな構成を望むケース」 に最適な構成です。
検証環境
インターネット(PPPoE 接続)を介して、本社(R1)と支社(R2)を接続するシナリオを想定します。


前提条件
| 項目 | 内容 |
|---|---|
| 対象 IOS バージョン | Cisco IOS XE 17.x 系 |
| 接続方式 | 両拠点ともフレッツ光などの PPPoE 接続 |
| グローバル IP | 固定 IP、または DDNS で名前解決可能であること |
| 暗号アルゴリズム | AES-256 + SHA-256 + DH Group 19(ECP)以上 |
| IKE バージョン | IKEv2 |
設定手順
IKEv2 Proposal と Policy の設定
IKEv2 では、Proposal(暗号アルゴリズムの提案) と Policy(Proposal の適用ルール) を分けて定義します。IKEv1 の crypto isakmp policy に相当する設定です。
! --- IKEv2 Proposal: 暗号アルゴリズムの組み合わせを定義 ---
crypto ikev2 proposal IKEV2-PROP
encryption aes-cbc-256
integrity sha256
group 19 14 ! ECP P-256(Group 19)優先、互換性のため Group 14 も併記
!
! --- IKEv2 Policy: Proposal を適用するポリシー ---
crypto ikev2 policy IKEV2-POL
proposal IKEV2-PROPIKEv2 Keyring と Profile の設定
PSK 認証情報を Keyring に格納し、Profile で対向ピアと認証方式を関連付けます。
! --- IKEv2 Keyring: ピアごとの PSK を定義 ---
crypto ikev2 keyring IKEV2-KEY
peer R2
address 10.1.1.2 ! 対向(R2)のグローバル IP
pre-shared-key <16文字以上のランダム文字列>
!
! --- IKEv2 Profile: ピアの識別と認証方式を定義 ---
crypto ikev2 profile IKEV2-PROF
match identity remote address 10.1.1.2 255.255.255.255
authentication local pre-share
authentication remote pre-share
keyring local IKEV2-KEY
dpd 30 5 on-demand ! DPD: 30 秒間隔・5 秒リトライ・オンデマンド参考: Cisco – Implementing IKEv2 Route-Based Site-to-Site VPN on Cisco Routers
https://www.cisco.com/c/en/us/support/docs/security-vpn/internet-security-association-key-management-protocol-isakmp/223291-implementing-ikev2-route-based-site-to.html
IPsec Transform Set と Profile の設定
実際のデータ通信を暗号化するためのルール(IKEv1 でいう Phase 2 相当)を定義します。VTI では mode tunnel を使用する ことが Cisco 公式で明記されています。
! --- Transform Set ---
crypto ipsec transform-set TFSET esp-aes 256 esp-sha256-hmac
mode tunnel ! VTI では tunnel mode のみサポート
!
! --- IPsec Profile(VTI に適用) ---
crypto ipsec profile VTI_PROF
set transform-set TFSET
set ikev2-profile IKEV2-PROF
set pfs group19 ! PFS: DH Group 19(ECP P-256)参考: Cisco – IPsec Virtual Tunnel Interface
“The IPsec transform set must be configured in tunnel mode only.”
(IPsec トランスフォームセットは tunnel mode でのみ構成する必要があります)
https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/sec_conn_vpnips/configuration/zZ-Archive/IPsec_Virtual_Tunnel_Interface.html
set pfs を有効にすると、鍵が漏洩した場合でも過去の通信を遡って復号できないようにする Perfect Forward Secrecy が動作します。
Tunnel インターフェイスの作成
interface Tunnel1
ip unnumbered Dialer1 ! WAN 側 IP を借用(プライベート IP の割当不要)
ip mtu 1400 ! IPsec オーバーヘッドを考慮した MTU
ip tcp adjust-mss 1360 ! TCP MSS clamping(MTU - 40)
tunnel source Dialer1 ! トンネルの始点
tunnel destination 10.1.1.2 ! トンネルの終点(対向の固定 IP)
tunnel mode ipsec ipv4 ! VTI モード(GRE を使わない純粋な IPsec)
tunnel protection ipsec profile VTI_PROFip unnumbered Dialer1 を使うことで、拠点間 VPN のためにプライベート IP を別途割り当てる必要がなく、WAN インターフェイスの IP を借用できます。アドレス設計が簡潔になり、運用上のミスも減らせます。
ルーティングと NAT の設定
ルーティング設定
対向拠点の LAN 宛て通信を Tunnel インターフェイスへ向けます。
ip route 192.168.2.0 255.255.255.0 Tunnel1NAT 設定(VPN 通信を NAT 対象から除外)
ルータがインターネット接続用に NAT/NAPT を行っている場合、VPN 宛ての通信まで NAT 変換されてしまうと、対向側で送信元 IP が一致せず通信できない事象が発生します。NAT 対象を定義する ACL で VPN 通信を明示的に除外(deny)します。
! --- NAT ACL ---
! 1. VPN 宛て(自 LAN → 対向 LAN)は NAT しない(deny)
access-list 100 deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
!
! 2. それ以外(インターネット宛て)は NAT する(permit)
access-list 100 permit ip 192.168.1.0 0.0.0.255 any
!
! --- NAT 適用 ---
ip nat inside source list 100 interface Dialer1 overload設定の全体像
拠点 A(R1)
hostname R1
!
! --- IKEv2 Proposal / Policy ---
crypto ikev2 proposal IKEV2-PROP
encryption aes-cbc-256
integrity sha256
group 19 14
!
crypto ikev2 policy IKEV2-POL
proposal IKEV2-PROP
!
! --- IKEv2 Keyring / Profile ---
crypto ikev2 keyring IKEV2-KEY
peer R2
address 10.1.1.2
pre-shared-key <16文字以上のランダム文字列>
!
crypto ikev2 profile IKEV2-PROF
match identity remote address 10.1.1.2 255.255.255.255
authentication local pre-share
authentication remote pre-share
keyring local IKEV2-KEY
dpd 30 5 on-demand
!
! --- IPsec Transform Set / Profile ---
crypto ipsec transform-set TFSET esp-aes 256 esp-sha256-hmac
mode tunnel
!
crypto ipsec profile VTI_PROF
set transform-set TFSET
set ikev2-profile IKEV2-PROF
set pfs group19
!
! --- Interface ---
interface Tunnel1
ip unnumbered Dialer1
ip mtu 1400
ip tcp adjust-mss 1360
tunnel source Dialer1
tunnel destination 10.1.1.2
tunnel mode ipsec ipv4
tunnel protection ipsec profile VTI_PROF
!
interface Dialer1
ip address negotiated
ip nat outside
! (PPPoE 設定省略)
!
interface Vlan10
ip address 192.168.1.254 255.255.255.0
ip nat inside
!
! --- Routing & NAT ---
ip route 192.168.2.0 255.255.255.0 Tunnel1
ip route 0.0.0.0 0.0.0.0 Dialer1
!
ip nat inside source list 100 interface Dialer1 overload
access-list 100 deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
access-list 100 permit ip 192.168.1.0 0.0.0.255 any拠点 B(R2)
hostname R2
!
crypto ikev2 proposal IKEV2-PROP
encryption aes-cbc-256
integrity sha256
group 19 14
!
crypto ikev2 policy IKEV2-POL
proposal IKEV2-PROP
!
crypto ikev2 keyring IKEV2-KEY
peer R1
address 1.1.1.1
pre-shared-key <16文字以上のランダム文字列>
!
crypto ikev2 profile IKEV2-PROF
match identity remote address 1.1.1.1 255.255.255.255
authentication local pre-share
authentication remote pre-share
keyring local IKEV2-KEY
dpd 30 5 on-demand
!
crypto ipsec transform-set TFSET esp-aes 256 esp-sha256-hmac
mode tunnel
!
crypto ipsec profile VTI_PROF
set transform-set TFSET
set ikev2-profile IKEV2-PROF
set pfs group19
!
interface Tunnel1
ip unnumbered Dialer1
ip mtu 1400
ip tcp adjust-mss 1360
tunnel source Dialer1
tunnel destination 1.1.1.1
tunnel mode ipsec ipv4
tunnel protection ipsec profile VTI_PROF
!
interface Dialer1
ip address negotiated
ip nat outside
! (PPPoE 設定省略)
!
interface Vlan10
ip address 192.168.2.254 255.255.255.0
ip nat inside
!
ip route 192.168.1.0 255.255.255.0 Tunnel1
ip route 0.0.0.0 0.0.0.0 Dialer1
!
ip nat inside source list 100 interface Dialer1 overload
access-list 100 deny ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
access-list 100 permit ip 192.168.2.0 0.0.0.255 any動作確認
設定完了後、トンネルの状態を確認します。IKEv2 では show crypto ikev2 sa を使用する点に注意が必要です(IKEv1 の show crypto isakmp sa とは異なります)。
IKEv2 SA の確認
R1# show crypto ikev2 sa
IPv4 Crypto IKEv2 SA
Tunnel-id Local Remote fvrf/ivrf Status
1 1.1.1.1/500 10.1.1.2/500 (none)/(none) READY
Encr: AES-CBC, keysize: 256, PRF: SHA256, Hash: SHA256, DH Grp:19,
Auth sign: PSK, Auth verify: PSK
Life/Active Time: 86400/128 secStatus: READY が表示されていれば IKEv2 SA が確立済みです。Encr や DH Grp の項目で、ネゴシエーションで採用された暗号化方式と DH グループも確認できます。
IPsec SA の確認
R1# show crypto ipsec sa
interface: Tunnel1
Crypto map tag: Tunnel1-head-0, local addr 1.1.1.1
protected vrf: (none)
local ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
remote ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
current_peer 10.1.1.2 port 500
#pkts encaps: 105, #pkts encrypt: 105, #pkts digest: 105
#pkts decaps: 105, #pkts decrypt: 105, #pkts verify: 105
...
plaintext mtu 1458, path mtu 1500, ip mtu 1500, ip mtu idb Dialer1#pkts encaps/#pkts decaps のカウンタが両方とも増えていれば、双方向で暗号化通信が成立しています。送信側のみカウンタが増えていて受信側が 0 の場合は、対向側のルーティングまたは ACL/NAT 設定を確認します。
統合状態の確認
show crypto session を使うと、IKE と IPsec の状態を 1 つのコマンドで確認できます。
R1# show crypto session
Crypto session current status
Interface: Tunnel1
Session status: UP-ACTIVE
Peer: 10.1.1.2 port 500
Session ID: 1
IKEv2 SA: local 1.1.1.1/500 remote 10.1.1.2/500 Active
IPSEC FLOW: permit ip 0.0.0.0/0.0.0.0 0.0.0.0/0.0.0.0
Active SAs: 2, origin: crypto mapSession status: UP-ACTIVE が表示されればトンネルが正常に確立しています。
IKE デバッグログの取得
トンネルが確立しない場合は、IKEv2 のネゴシエーションをデバッグログで確認します。
R1# debug crypto ikev2
R1# debug crypto ipsec
! 確認後はデバッグを停止
R1# undebug allログ出力で proposal not chosen が見られる場合は、Phase 1/Phase 2 の暗号化アルゴリズムが両端で一致していません。AUTHENTICATION_FAILED の場合は、PSK の不一致または match identity remote address の差異を確認します。
疎通確認(Ping)
R1# ping 192.168.2.254 source Vlan10
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.254, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.254
!!!!!
Success rate is 100 percent (5/5)SVTI の制約と運用ハマりポイント
SVTI は Crypto Map と比べてシンプルですが、Cisco 公式が明示している制約や、運用で踏みやすい落とし穴があります。設計時に把握しておくことが推奨されます。
SVTI の構造的な制約
参考: Cisco – IPsec Virtual Tunnel Interface
“Static VTIs (SVTIs) support only a single IPsec SA that is attached to the VTI interface. The traffic selector for the IPsec SA is always ‘IP any any.'”
(SVTI は VTI インターフェイスに紐づく単一の IPsec SA のみサポートし、トラフィックセレクタは常に「IP any any」となります)
https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/sec_conn_vpnips/configuration/zZ-Archive/IPsec_Virtual_Tunnel_Interface.html
| 制約事項 | 内容 |
|---|---|
| 単一 IPsec SA のみサポート | SVTI 1 本に対して IP any any の 1 つの SA しか持てない |
Transform Set は mode tunnel のみ | mode transport は SVTI では未サポート |
| IPsec ステートフルフェイルオーバー非対応 | HSRP/SSO 連携での IPsec 状態同期は不可 |
| Crypto offload 時の traceroute 非対応 | NP オフロード時、トンネル内の traceroute は失敗する |
shared キーワード非対応 | tunnel mode ipsec ipv4 使用時に shared は指定不可 |
| IPv4/IPv6 混在不可 | 1 本の SA で IPv4/IPv6 両方を運ぶことはできない |
MTU と MSS の調整
VTI 経由のパケットは IPsec オーバーヘッドにより実効 MTU が縮小します。Cisco 公式の検証例では plaintext MTU は 1458 バイト(IPsec オーバーヘッド 42 バイトを差し引いた値)です。NAT-T 環境ではさらに UDP 4500 のヘッダ(8 バイト)が加わるため、安全側に倒すと MTU 1400/MSS 1360 が一般的な目安 です。
設定例(再掲)
interface Tunnel1
ip mtu 1400
ip tcp adjust-mss 1360NAT-T や MTU 縮小の仕組みの詳細は、関連記事『IPsec の仕組みと IKEv1 廃止|ESP・SA・NAT-T の落とし穴』のハマりポイント節を参照してください。
NAT 除外漏れによる「片側だけ通信不可」
NAT 用 ACL から VPN 通信の deny を漏らすと、自拠点 LAN から発信したパケットの送信元が NAT で書き換えられてしまい、対向側の Phase 2 セレクタと一致せずトンネル経由で破棄されます。対向側のみ通信不可になる事象が出た場合は、NAT 除外 ACL を最初に確認します。
R1# show ip nat translations ! 不要な NAT エントリが作られていないか確認
R1# show access-lists 100 ! NAT ACL の deny 行が正しいか確認IKEv2 の identity マッチに関するハマり
IKEv2 では match identity remote address で対向ピアを識別しますが、対向側の送信元 IP(NAT 越えで書き換わる場合はその後の IP)と一致していないと AUTHENTICATION_FAILED で失敗 します。NAT 配下のピアでは特に注意が必要で、identity local key-id などで明示的に ID を指定する設計が推奨されます。
! NAT 越え対向ピア向けの ID 明示指定例
crypto ikev2 profile IKEV2-PROF
identity local key-id site-A
match identity remote key-id site-BDPD タイマーの不一致
両拠点で DPD の間隔が極端に異なる と、片側がフェイルオーバーや一時的な疎通断を起こした際に、もう片側が「まだ生きている」と認識し続けてトンネルが残留するケースがあります。両拠点で DPD の間隔・リトライ回数を揃えることが推奨されます。
DPD の仕組みの詳細は、関連記事『IPsec の仕組みと IKEv1 廃止|ESP・SA・NAT-T の落とし穴』の DPD 節を参照してください。
PSK 不一致のデバッグ
PSK が両拠点で異なっている場合、debug crypto ikev2 のログには AUTHENTICATION_FAILED が出力されます。PSK は合っているのに認証に失敗する場合は、Keyring の address 行が対向のグローバル IP(NAT 越えなら NAT 後の IP)と一致していないケースが多い です。
R1# debug crypto ikev2
R1# debug crypto ikev2 internal ! より詳細なログが必要な場合
R1# show crypto ikev2 sa detail ! 対向ピアのアドレス確認まとめ
本記事では、Cisco IOS XE 17.x における IKEv2 + SVTI での拠点間 VPN 構築手順と、運用上のハマりポイントを解説しました。
- 新規構築では VTI(Route-based VPN)+ IKEv2 が推奨される
- Cisco IOS XE 17.6 で Crypto Map(Static/Dynamic)の EOL が発表済み
- VTI Transform Set は
mode tunnelのみサポート(mode transportは SVTI では使用不可) - SVTI は単一 IPsec SA/IP any any 限定の制約があり、要件次第で DMVPN/FlexVPN を選定する
- 状態確認は
show crypto ikev2 sa/show crypto session、デバッグはdebug crypto ikev2を使用する - 対向との
identity一致、DPD 設定、NAT 除外 ACL を運用面の重点ポイントとして押さえる
以上、最後までお読みいただきありがとうございました。


