はじめに
本記事では、Cisco ルータを使用した 拠点間 VPN(Site-to-Site VPN)の設定例を紹介します。
IPsec の基本的な仕組みについては、以下の記事をご参照ください。

- VTI (Virtual Tunnel Interface) を使用した拠点間 VPN の構築手順
- 従来の Crypto Map 方式と比べた VTI のメリット
- 現代の基準に合わせた セキュアな暗号化設定 (AES-256/SHA-256)

かつて Cisco の VPN 設定といえば「Crypto Map(暗号マップ)」を使用するのが主流でしたが、設定が複雑でトラブルシューティングが難しいという課題がありました。
現在は、よりモダンで管理しやすい VTI (Virtual Tunnel Interface) を使用した構成が推奨されています。本記事では、この VTI を使って VPN を構築する手順を解説します。
VTI(Virtual Tunnel Interface)とは?
VTI(仮想トンネルインターフェース)とは、その名の通り 「VPN トンネルを 1つの論理インターフェース(Tunnel X)として扱う技術」 です。
従来の Crypto Map 方式との違い
- Crypto Map(Policy-based VPN)
-
「ACL(アクセリスト)にマッチした通信だけを暗号化する」という方式。設定が複雑で、NAT との競合や、片方向通信などのトラブルが起きやすい欠点がありました。
- VTI(Route-based VPN)
-
「Tunnel インターフェースに向けた通信はすべて暗号化する」という方式。ルーティングテーブルだけで通信を制御できる ため、OSPF や BGP などの動的ルーティングとも相性がよいです。
GRE over IPsec との違い
「トンネルなら GRE でもいいのでは?」と思われるかもしれません。 VTI は、「GRE ヘッダのオーバーヘッドを削減できる」 という点で優れています。
| 方式 | 構造 | 特徴 |
|---|---|---|
| GRE over IPsec | [IP][ESP][GRE][Payload] | GRE ヘッダ(24byte)の分、MTUサイズが小さくなる。マルチキャスト対応 |
| VTI(IPsec Profile) | [IP][ESP][Payload] | GRE ヘッダ不要。 オーバーヘッドが少なく、帯域を有効に使える。 |



つまり VTI は、「GRE のような手軽さ(ルーティング制御)」と「ネイティブ IPsec の効率の良さ」 をいいとこ取りした機能と言えます。
検証環境
今回は、インターネット(PPPoE 接続)を介して、本社(R1)と支社(R2)を接続するシナリオを想定します。
前提条件
- 接続方式
-
両拠点ともフレッツ光などの PPPoE 接続を使用
- IP アドレス
-
固定グローバル IP アドレス、または DDNS を使用して名前解決が可能であること。
- セキュリティ
-
2025年現在の推奨強度(AES-256 / SHA-256 / DH Group 14)に準拠した設定を行います。


設定手順
まずは、VPN ルータ同士が互いに認証し、安全な土管を作るための準備段階(IKE フェーズ1)を設定します。
セキュリティ強度の見直し
古い情報では aes 128 や group 2 が使われていることがありますが、現在のセキュリティ基準では不十分です。本記事では以下の推奨設定を使用します。
- 暗号化:
AES-256 - ハッシュ:
SHA-256 - DHグループ:
14(2048-bit)以上
設定コマンド(R1側)
! --- IKE Phase 1 Policy ---
crypto isakmp policy 1
encr aes 256
hash sha256
authentication pre-share
group 14
!
! --- Pre-shared Key ---
! address には対向拠点(R2)のグローバルIPを指定
crypto isakmp key [SECRET-KEY] address 10.1.1.2次に、実際のデータ通信を暗号化するためのルール(IKE フェーズ2)を定義します。 VTI 構成では、ここで作成した IPsec プロファイル を、後ほどインターフェースに適用します。
設定コマンド
トランスフォームセット(暗号化セット)も、フェーズ1と同様に強度を高めておきます。
! --- Transform Set (AES-256 / SHA-256) ---
crypto ipsec transform-set TFSET esp-aes 256 esp-sha256-hmac
mode transport
!
! --- IPsec Profile for VTI ---
crypto ipsec profile VTI_PROF
set transform-set TFSET
set pfs group14- mode transport
-
VTI 自体がトンネル化(GRE ヘッダ等の付与)を行うため、IPsec 自体はオーバーヘッドの少ないトランスポートモードを使用するのが一般的です。
- set pfs group14
-
PFS (Perfect Forward Secrecy)を有効にすることで、万が一鍵が漏洩しても過去の通信内容を守ることができます。
Tunnel インターフェース を作成します。 物理インターフェースと同じように扱えるため、設定もシンプルです。
設定コマンド
interface Tunnel1
! IPアドレスの節約 (WAN側と同じIPを借用)
ip unnumbered Dialer1
!
! トンネルの始点と終点
tunnel source Dialer1
tunnel destination 10.1.1.2
!
! VTIモードの指定 (GREを使わない純粋なIPsec)
tunnel mode ipsec ipv4
!
! 作成したIPsecプロファイルの適用
tunnel protection ipsec profile VTI_PROF


拠点間 VPN のためにわざわざプライベート IP アドレス(例: 172.16.1.1/30 など)を割り当てる必要はありません。 ip unnumbered を使うことで、WAN インターフェース(Dialer1)の IP アドレスを借りて通信できます。
最後に、VPN トンネルを通して通信させるためのルーティングと、インターネット接続用の NAT 設定を行います。
ルーティング設定
「対向拠点の LAN 宛て通信」を、Tunnel インターフェースに向けます。
! 対向拠点(192.168.2.0/24) へのルートを Tunnel1 へ
ip route 192.168.2.0 255.255.255.0 Tunnel1NAT 設定
ルータがインターネット接続(NAT/NAPT)を行っている場合、「VPN 宛ての通信まで NAT 変換されてしまい、通信できない」 という事故が多発します。
これを防ぐため、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設定の全体像
hostname R1
!
! --- IKE Phase 1 ---
crypto isakmp policy 1
encr aes 256
hash sha256
authentication pre-share
group 14
!
! 対向(R2)のアドレス
crypto isakmp key [SECRET-KEY] address 10.1.1.2
!
! --- IKE Phase 2 ---
crypto ipsec transform-set TFSET esp-aes 256 esp-sha256-hmac
mode transport
!
crypto ipsec profile VTI_PROF
set transform-set TFSET
set pfs group14
!
! --- Interface ---
interface Tunnel1
ip unnumbered Dialer1
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 ---
! 対向LANへのルート
ip route 192.168.2.0 255.255.255.0 Tunnel1
! インターネットへのルート
ip route 0.0.0.0 0.0.0.0 Dialer1
!
! NAT除外設定(重要)
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 anyhostname R2
!
! --- IKE Phase 1 ---
crypto isakmp policy 1
encr aes 256
hash sha256
authentication pre-share
group 14
!
! 対向(R1)のアドレス
crypto isakmp key [SECRET-KEY] address 10.1.1.1
!
! --- IKE Phase 2 ---
crypto ipsec transform-set TFSET esp-aes 256 esp-sha256-hmac
mode transport
!
crypto ipsec profile VTI_PROF
set transform-set TFSET
set pfs group14
!
! --- Interface ---
interface Tunnel1
ip unnumbered Dialer1
tunnel source Dialer1
tunnel destination 10.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
!
! --- Routing & NAT ---
! 対向LANへのルート
ip route 192.168.1.0 255.255.255.0 Tunnel1
! インターネットへのルート
ip route 0.0.0.0 0.0.0.0 Dialer1
!
! NAT除外設定(重要)
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動作確認
設定が完了したら、トンネルの状態を確認します。
IKE フェーズ1(ISAKMP SA)の確認
QM_IDLE 状態になっていれば、認証が成功しトンネルが確立しています。
R1# show crypto isakmp sa
IPv4 Crypto ISAKMP SA
dst src state conn-id slot status
10.1.1.1 10.1.1.2 QM_IDLE 1001 0 ACTIVEIKE フェーズ2(IPsec SA)の確認
実際にパケットが暗号化・復号されているか確認します。 pkts encaps:, pkts decaps: のカウントが増えていれば、正常にデータが流れています。
R1# show crypto ipsec sa
interface: Tunnel1
Crypto map tag: Tunnel1-head-0, local addr 10.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
PERMIT, flags={origin_is_acl,}
#pkts encaps: 105, #pkts encrypt: 105, #pkts digest: 105
#pkts decaps: 105, #pkts decrypt: 105, #pkts verify: 105疎通確認(Ping)
最後に、LAN 内の端末から、対向拠点の端末へ Ping が通ることを確認しましょう。
# R1からR2のLAN側へ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)まとめ
本記事では、Cisco ルータの VTI (Virtual Tunnel Interface) を使用した、拠点間 VPN 設定を紹介しました。
これから Cisco ルータで VPN を構築する場合は、複雑な Crypto Map ではなく、この VTI 構成を第一候補として検討してみてください。
以上、最後までお読みいただきありがとうございました。






