【Cisco】VTI を使用した IPsec VPN 設定例 | GRE 不要の拠点間接続

  • URLをコピーしました!
目次

はじめに

本記事では、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)に準拠した設定を行います。

設定手順

STEP
IKEフェーズ1(ISAKMPポリシー)

まずは、VPN ルータ同士が互いに認証し、安全な土管を作るための準備段階(IKE フェーズ1)を設定します。

セキュリティ強度の見直し

古い情報では aes 128group 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
STEP
IKE フェーズ2(IPsec プロファイル)

次に、実際のデータ通信を暗号化するためのルール(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) を有効にすることで、万が一鍵が漏洩しても過去の通信内容を守ることができます。

STEP
Tunnelインターフェースの作成

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 アドレスを借りて通信できます。

STEP
ルーティングと NAT の設定

最後に、VPN トンネルを通して通信させるためのルーティングと、インターネット接続用の NAT 設定を行います。

ルーティング設定

「対向拠点の LAN 宛て通信」を、Tunnel インターフェースに向けます。

! 対向拠点(192.168.2.0/24) へのルートを Tunnel1 へ
ip route 192.168.2.0 255.255.255.0 Tunnel1

NAT 設定

ルータがインターネット接続(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

設定の全体像

拠点 A(R1)
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 any
拠点 B(R2)
hostname 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 ACTIVE

IKE フェーズ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 構成を第一候補として検討してみてください。

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

インフラ(クラウド/NW/仮想化)から Web 開発まで、技術領域を横断して活動するエンジニア💻 コンシューマー向けエンタメ事業での新規開発・運営経験を活かし、実戦的な技術ノウハウを発信中

[ Certs ] CCIE Lifetime Emeritus / VCAP-DCA ✒️ [ Life ] 技術書・ビジネス書愛好家📖 / 小・中学校で卓球コーチ👟

目次