IPsec-VPN(基本構築)

目次

IPsecの設定(IKEフェーズ1の設定)

IPsecによる通信を開始するには、最初にISAKMP SAを生成する必要があります。そのためにはIKEフェーズ1のパラメータを定義し、相手機器と一致するように設定を行います。ここで設定した内容に基づき、ISAKMP SAが確立され、後のフェーズ2でIPsec SAを作成できるようになります。

ISAKMPポリシーの作成

ISAKMPポリシーは、以下のコマンドで作成します。

(config)# crypto isakmp policy priority
  • priorityは「1~10000」で指定可能
  • 数字が小さいほど優先度が高く、複数定義がある場合は最も低い番号から順にマッチングされる

例えば「crypto isakmp policy 1」と設定すると、最優先のポリシーになります。

暗号化アルゴリズムの設定

ISAKMP SAで利用する暗号化方式を指定します。デフォルトは「des」です。

(config-isakmp)# encryption [ des | 3des | aes 128 | aes 192 | aes 256 ]

ハッシュアルゴリズムの設定

認証や鍵計算に使用するハッシュ方式を指定します。デフォルトは「sha」です。

(config-isakmp)# hash [ md5 | sha | sha256 | sha384 | sha512 ]

認証方式の設定

IKEフェーズ1で相手を認証する方法を指定します。デフォルトは「rsa-sig」です。

(config-isakmp)# authentication [ rsa-sig | rsa-encr | pre-share ]
  • rsa-sig:RSA署名を利用した方式
  • rsa-encr:RSA暗号化ナンスを利用した方式
  • pre-share:事前共有鍵(Pre-shared Key)を利用する方式

試験では「pre-shared key方式が最もシンプルで広く利用されている」という点が狙われやすいです。

Pre-shared Keyの設定

認証方式に「pre-share」を選んだ場合は、事前に共有する鍵を設定します。

(config)# crypto isakmp key password address address
  • password:共有するパスフレーズ
  • address:相手機器のIPアドレス

Diffie-Hellmanグループの設定

鍵交換に利用するDHグループを指定します。デフォルトは「1」です。

(config-isakmp)# group [ 1 | 2 | 5 ]

ISAKMP SAのライフタイム設定

ISAKMP SAが有効でいられる時間を設定します。デフォルトは86400秒(24時間)です。

(config-isakmp)# lifetime seconds

短くすると鍵の再生成が頻繁に行われ、セキュリティは高まりますが処理負荷が増えます。

DPD(Dead Peer Detection)の設定

DPDを設定すると、相手とのトンネルが切断された場合に自動で検出・削除できます。通常は無効ですが、VPNでダイナミックルーティングを使わない環境では「periodic」を指定するのが推奨です。

(config)# crypto isakmp keepalive seconds [ retries ] [ periodic | on-demand ]

ISAKMP SAのパラメータ一覧

項目選択肢デフォルト値
encryption(暗号化方式)des, 3des, aes 128/192/256des
hash(ハッシュ方式)sha, md5sha
lifetime(有効時間)60~86400秒86400秒
authentication(認証方式)rsa-sig, rsa-encr, pre-sharersa-sig
group(DHグループ)1, 2, 51
crypto isakmp keyPre-shared key と相手アドレス

設定例

以下の例では、暗号化に3DES、ハッシュにSHA、認証方式にPre-shared keyを使用し、DHグループを2、ライフタイムを12時間(43200秒)に設定しています。さらにPre-shared keyを「cisco」とし、相手アドレスを「100.1.1.1」、DPDを30秒ごとに送信するようにしています。

Cisco(config)# crypto isakmp policy 1
Cisco(config-isakmp)# encryption 3des
Cisco(config-isakmp)# hash sha
Cisco(config-isakmp)# authentication pre-share
Cisco(config-isakmp)# group 2
Cisco(config-isakmp)# lifetime 43200

Cisco(config)# crypto isakmp key cisco address 100.1.1.1
Cisco(config)# crypto isakmp keepalive 30 periodic

試験では「ISAKMPポリシーのデフォルト値」や「crypto isakmp key コマンドで設定する内容」が問われることが多いので、一覧表を覚えておくと有利です。

IPsecの設定(IKEフェーズ2の設定)

IKEフェーズ1でISAKMP SAが確立された後、IKEフェーズ2ではIPsec SAを生成するための設定を行います。ここでは「どの通信を暗号化するか」「どの暗号方式を使うか」を具体的に定義し、最終的に暗号マップをインターフェースへ適用することでVPNトンネルが確立します。

トランスフォームセットの定義

IPsec SAを確立するために、まずトランスフォームセットを作成します。これは「暗号化方式」「認証方式」「セキュリティプロトコル」を組み合わせたものです。

(config)# crypto ipsec transform-set name transform1 transform2

代表的な選択肢は以下の通りです。

種類選択肢
ESP暗号化esp-aes / esp-aes-192 / esp-aes-256 / esp-des / esp-3des / esp-null / esp-seal
ESP認証esp-md5-hmac / esp-sha-hmac
AH認証ah-md5-hmac / ah-sha-hmac

設定例

Cisco(config)# crypto ipsec transform-set IPSEC esp-3des esp-md5-hmac

この例ではESPを使い、暗号化に3DES、認証にMD5を利用しています。

通信モードの指定

デフォルトではトンネルモードが利用されるため、特別な指定をしない限りトンネルモードになります。必要に応じて明示的に指定可能です。

(cfg-crypto-trans)# mode [ tunnel | transport ]

IPsec SAのライフタイム設定(オプション)

デフォルトでは以下が適用されます。

  • 時間:3600秒(1時間)
  • データ量:4608000KB

変更したい場合は次のように設定します。

(config)# crypto ipsec security-association lifetime [ seconds 秒 | kilobytes バイト数 ]

IPsec対象トラフィックの定義(ACL)

どの通信を暗号化するかはACLで定義します。permitで一致したトラフィックは暗号化され、denyに一致したトラフィックは暗号化されません。

設定例

Cisco(config)# access-list 101 permit ip 172.16.1.0 0.0.0.255 172.16.2.0 0.0.0.255

この例では、172.16.1.0/24 から 172.16.2.0/24 への通信をIPsec対象にしています。

暗号マップの設定

トランスフォームセット・ACL・ピアの情報を組み合わせるのが暗号マップです。優先度はシーケンス番号で決まり、数字が小さいほど優先度が高くなります。

(config)# crypto map map-name seq-number ipsec-isakmp
(config-crypto-map)# match address acl-number
(config-crypto-map)# set transform-set name
(config-crypto-map)# set peer address

オプションとして以下を設定可能です。

  • SAライフタイムの個別指定
  • PFS(Perfect Forward Secrecy)の有効化
(config-crypto-map)# set security-association lifetime [ seconds 秒 | kilobytes バイト数 ]
(config-crypto-map)# set pfs [ group1 | group2 | group5 ]

インターフェースへの適用

最後に、作成した暗号マップをVPNトンネルを張るインターフェースへ適用します。

(config)# interface interface-id
(config-if)# crypto map map-name

設定例

以下は、IKEフェーズ1とフェーズ2を通して実際にIPsec VPNを設定した例です。

! IKE Phase 1 の設定
Cisco(config)# crypto isakmp policy 1
Cisco(config-isakmp)# encryption 3des
Cisco(config-isakmp)# hash sha
Cisco(config-isakmp)# authentication pre-share
Cisco(config-isakmp)# group 2
Cisco(config-isakmp)# lifetime 43200

Cisco(config)# crypto isakmp key cisco address 100.1.1.1
Cisco(config)# crypto isakmp keepalive 30 periodic

! IKE Phase 2 の設定
Cisco(config)# crypto ipsec transform-set IPSEC esp-3des esp-md5-hmac

! IPsec対象トラフィックの定義
Cisco(config)# access-list 101 permit ip 172.16.1.0 0.0.0.255 172.16.2.0 0.0.0.255

! 暗号マップの設定
Cisco(config)# crypto map M-ipsec 1 ipsec-isakmp
Cisco(config-crypto-map)# set peer 100.1.1.1
Cisco(config-crypto-map)# set transform-set IPSEC
Cisco(config-crypto-map)# match address 101

! インターフェースへの適用
Cisco(config)# interface GigabitEthernet0/0
Cisco(config-if)# crypto map M-ipsec

試験では「crypto mapに関連付ける3つの要素(トランスフォームセット、ACL、ピア)」や「フェーズ1とフェーズ2で決定されるパラメータの違い」がよく問われます。特にACLのpermit文が「IPsec対象通信の定義」に使われる点をしっかり覚えておくことが重要です。

異機種間で迷わないための事前準備

IPsec-VPNを複数メーカーで組むときは、各社独自の呼び方や初期値に振り回されがちです。そこで、構築前に共通のパラメータ表を用意しておくと、設定の突き合わせが一気に楽になります。フェーズ1(ISAKMP SA)とフェーズ2(IPsec SA)で決める内容を左右に分け、相手と合意してから作業に入るのが鉄則です。CCNAでは「どの段階で何を決めるか」がよく問われます。

IKE Phase1(ISAKMP SA)IKE Phase2(IPsec SA)
暗号化アルゴリズム(DES/3DES/AES)セキュリティプロトコル(AH/ESP)
ハッシュ(MD5/SHA-1)暗号化(DES/3DES/AES/Null)
認証方式(Pre-shared Key / 署名 / 公開鍵 など)認証(HMAC-MD5 / HMAC-SHA1)
DHグループ(1/2/5)PFSグループ(任意:1/2/5)
ISAKMP SAライフタイムIPsec SAライフタイム
Pre-shared KeyIPsec通信モード(トンネル/トランスポート)
ISAKMPピアアドレスIPsecピアアドレス
DPDの有無IPsec対象トラフィック(ACL)
フェーズ1モード(Main/Aggressive)フェーズ2モード(Quickのみ)

一般的な方針として、事前共有鍵方式(Pre-shared Key)とDHグループ2の組み合わせが採用される場面が多く、拠点間VPNはMainモード、リモートアクセスはAggressiveモードがよく使われます。PFSは要件がなければ無効のままにするケースが目立ちます。ISAKMPとIPsecのピアは同一アドレスでそろえるとトラブルが減ります。

PPPoE回線で拠点間IPsec-VPNを張るときの全体像

国内のアクセス回線としてPPPoEが使われることが多いため、外側インターフェースはDialerで確立し、その上に暗号マップを適用する形になります。ルータはインターネット側にデフォルトルートを向けたうえで、暗号マップ(crypto map)に「ピア」「トランスフォームセット」「対象ACL」をひとまとめにし、Dialerインターフェースへ貼り付けます。これにより、指定サブネット間のみが暗号化され、他の通信は平文のままインターネットへ流せます(必要に応じてACLを調整)。

サンプル構成とコンフィグ(拠点A:192.168.1.0/24 ⇔ 拠点B:192.168.2.0/24)

以下は拠点A側の例です。ISAKMPは3DES/SHA、事前共有鍵、DH2、ライフタイム12時間。フェーズ2はESP-3DES + MD5。DPDは30秒周期で送信します。インターネット側はPPPoEのDialer1、暗号マップはDialer1へ適用します。

! === 拠点A(R1) ===
crypto isakmp policy 1
 encr 3des
 hash sha
 authentication pre-share
 group 2
 lifetime 43200
!
crypto isakmp key cisco address 200.1.1.1
crypto isakmp keepalive 30 periodic
!
crypto ipsec transform-set IPSEC esp-3des esp-md5-hmac
!
access-list 101 permit ip 172.16.1.0 0.0.0.255 172.16.2.0 0.0.0.255
!
crypto map M-ipsec 1 ipsec-isakmp
 set peer 200.1.1.1
 set transform-set IPSEC
 match address 101
!
interface Loopback1
 ip address 100.1.1.1 255.255.255.255
!
interface GigabitEthernet0/0
 pppoe enable group global
 pppoe-client dial-pool-number 1
 no cdp enable
!
interface GigabitEthernet0/1
 ip address 192.168.1.254 255.255.255.0
 ip tcp adjust-mss 1356
!
interface Dialer1
 ip unnumbered Loopback1
 ip access-group A-security in
 ip mtu 1454
 encapsulation ppp
 dialer pool 1
 dialer-group 1
 no cdp enable
 ppp authentication chap callin
 ppp chap hostname cisco@cisco.com
 ppp chap password cisco
 crypto map M-ipsec
!
ip route 0.0.0.0 0.0.0.0 Dialer1
!
ip access-list extended A-security
 permit esp host 200.1.1.1 host 100.1.1.1
 permit udp host 200.1.1.1 host 100.1.1.1 eq isakmp
!
dialer-list 1 protocol ip permit

拠点B側はアドレスと方向を入れ替えるだけです。設定値を左右で鏡写しにすると覚えやすく、突き合わせも容易です。

! === 拠点B(R2) ===
crypto isakmp policy 1
 encr 3des
 hash md5
 authentication pre-share
 group 2
!
crypto isakmp key cisco address 100.1.1.1
crypto isakmp keepalive 30 periodic
!
crypto ipsec transform-set IPSEC esp-3des esp-md5-hmac
!
access-list 101 permit ip 172.16.2.0 0.0.0.255 172.16.1.0 0.0.0.255
!
crypto map M-ipsec 1 ipsec-isakmp
 set peer 100.1.1.1
 set transform-set IPSEC
 match address 101
!
interface Loopback1
 ip address 200.1.1.1 255.255.255.255
!
interface GigabitEthernet0/0
 pppoe enable group global
 pppoe-client dial-pool-number 1
 no cdp enable
!
interface GigabitEthernet0/1
 ip address 192.168.2.254 255.255.255.0
 ip tcp adjust-mss 1356
!
interface Dialer1
 ip unnumbered Loopback1
 ip access-group A-security in
 ip mtu 1454
 encapsulation ppp
 dialer pool 1
 dialer-group 1
 no cdp enable
 ppp authentication chap callin
 ppp chap hostname cisco@cisco.com
 ppp chap password cisco
 crypto map M-ipsec
!
ip route 0.0.0.0 0.0.0.0 Dialer1
!
ip access-list extended A-security
 permit esp host 100.1.1.1 host 200.1.1.1
 permit udp host 100.1.1.1 host 200.1.1.1 eq isakmp
!
dialer-list 1 protocol ip permit

PPPoEで固定グローバルIPを契約しているなら、Loopbackを使わずip address negotiatedでDialerに直接アドレス取得させる設計も可能です。契約が固定型であれば付与IPは毎回同一になります。

端末ごとのパラメータを表で整理する(覚え方のコツ)

R1(拠点A) IKE Phase1R1 IKE Phase2
暗号: 3DES / ハッシュ: MD5 / 認証: Pre-shared Key / DH: 2プロトコル: ESP / 暗号: 3DES / 認証: MD5-HMAC
ISAKMP SA LT: 86400秒 / DPD: 30IPsec SA LT: 3600秒 / モード: トンネル
ISAKMPピア: 200.1.1.1 / PSK: ciscoIPsecピア: 200.1.1.1 / 対象: 192.168.1.0/24 → 192.168.2.0/24
R2(拠点B) IKE Phase1R2 IKE Phase2
暗号: 3DES / ハッシュ: MD5 / 認証: Pre-shared Key / DH: 2プロトコル: ESP / 暗号: 3DES / 認証: MD5-HMAC
ISAKMP SA LT: 86400秒 / DPD: 30IPsec SA LT: 3600秒 / モード: トンネル
ISAKMPピア: 100.1.1.1 / PSK: ciscoIPsecピア: 100.1.1.1 / 対象: 192.168.2.0/24 → 192.168.1.0/24

ここは必ず覚える:フェーズ1のライフタイムとフェーズ2のライフタイムは別物です。設定の食い違いがあると再交渉がループしたり、トンネルが安定しなくなります。

つながらないときの切り分け手順

まずは「フェーズ1が成立しているか」を確認します。IKEが上がらない限り、フェーズ2は始まりません。CCNAでは出力の読み取りがよく出るため、表示語句と意味を結びつけて覚えましょう。

パターン画面の見え方何を示すか/対処の方向性
① 何も表示されないshow crypto isakmp sa に何も出ないまだトラフィック未発生かマッチしていない可能性。対象サブネット間でPingを打ち、ACLとルーティングを再確認。
② MM_NO_STATE交渉開始に失敗PSK不一致やISAKMP到達不可が典型。両端のcrypto isakmp key、到達用ACL、必要なら一時的にフィルタ解除も検討。まれに再起動で復帰する事例あり。
③ QM_IDLEフェーズ1成功次はフェーズ2の確認へ進む。

フェーズ2はshow crypto ipsec saで確認します。ESP利用時はinbound/outboundのSAsに自分のトランスフォームセットが反映され、パケット統計が増えていくのが正常です。

# pkts encaps: X, #pkts encrypt: X, #pkts digest: X
# pkts decaps: X, #pkts decrypt: X, #pkts verify: X

動作中セッションの有無はshow crypto engine connections activeで見られます。ここが空なら、暗号処理まで到達していません。

現場で使う確認コマンドの要点

コマンド目的
show crypto isakmp policyフェーズ1ポリシー(暗号・ハッシュ・認証・DHなど)
show crypto isakmp saフェーズ1の状態(MM_NO_STATE / QM_IDLEなど)
show crypto ipsec transform-setフェーズ2トランスフォームの定義確認
show crypto ipsec saフェーズ2のSAと統計値(暗号化・復号の増分)
show crypto session detailセッションの詳細状態と原因切り分け材料

試験では、Aggressive/Main/Quickの対応関係DPDの役割、暗号マップに束ねる三要素(ピア・トランスフォーム・ACL)が頻出です。設定値は片側だけ見て満足せず、左右対称に突き合わせる癖をつけるとミスを大幅に減らせます。

IPsec-VPNとインターネット接続を両立させる考え方

拠点間VPNだけを構成した場合、社内サブネット同士の通信は通せても、拠点から外部インターネットへは出ていけません。これを同時に実現するには、PPPoEで外部へ出る経路を用意しつつ、LAN側の送信トラフィックをNATでグローバル化し、VPN向けのトラフィックだけはNATから除外する、という順序で制御します。ここで重要なのは「VPN向けはNAT対象外」「それ以外はNAT」の線引きです。

NAT設計の要点(NAT除外→インターネット宛てを変換)

NATのアクセスリストでは、まず最初にVPNで暗号化したい通信をdenyで除外し、その後ろでpermit anyを定義して通常の外向き通信を変換します。ACLは上から評価されるため、この並び順が肝になります。IPsecの対象ACLと混同しやすいので名称と役割をはっきり分けておきましょう。

ACL名の例役割典型的な書き方
A-ipsecIPsecで暗号化すべき通信の定義permit ip 192.168.1.0/24 192.168.2.0/24
A-natNAT変換対象の定義(先頭でVPN通信を除外)deny ip 192.168.1.0/24 192.168.2.0/24 の次に permit ip 192.168.1.0/24 any
A-security回線側の保護用(ISAKMP・ESPを通す)permit udp <peer> eq isakmppermit esp

ここは必ず覚える:NAT除外ACLはdenyでVPN向けを除外→permitで外向きを許可の順番。順序が逆だとVPNがNATされて失敗します。

インターフェースの役割とPPPoE特有の注意点

LAN側インターフェースはip nat inside、回線側(PPPoEのDialer)はip nat outsideで役割を明確にします。PPPoEはヘッダ分のオーバーヘッドがあるため、回線側MTUは小さくなり、LAN側ではip tcp adjust-mss 1356のようにMSSを調整して断片化や速度低下を避けます。グローバルIPの付与方法が2通りあり、NATのoverload先が変わる点も要確認です。

グローバルIPの持ち方代表的な設定NATのoverload指定先
Dialerで動的取得(ip address negotiated)interface Dialer1 にアドレスが付与ip nat inside source list A-nat interface Dialer1 overload
ループバックで固定IPを持つ(unnumberedでDialerに貸与)Loopback1に固定IP、Dialer1 ip unnumbered Loopback1ip nat inside source list A-nat interface Loopback1 overload

試験では「unnumbered時はLoopbackをoverload先にする」点が問われやすいです。

具体的な流れ(設定の読み解き)

最初にIKEフェーズ1・2(ISAKMP SAとIPsec SA)を整え、トランスフォームセット・暗号マップ・対象ACLを用意してDialerにcrypto mapを適用します。続いてNATのACLを作り、ip nat inside sourceでoverloadを定義。最後に回線側へデフォルトルートを向ければ、VPNと一般インターネットの両方が機能します。ここまでで「VPNはNAT除外」「外向きはNAT」という分岐が完成します。

代表スニペット(考え方が掴める最小構成)

! VPNで用いるISAKMP/IKE
crypto isakmp policy 1
 encr 3des
 hash md5
 authentication pre-share
 group 2
!
crypto isakmp key cisco address 200.1.1.1
crypto isakmp keepalive 30 periodic

! フェーズ2(ESP 3DES+MD5 例)
crypto ipsec transform-set IPSEC esp-3des esp-md5-hmac

! VPN対象トラフィック(拠点間)
ip access-list extended A-ipsec
 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

! NAT除外→インターネット宛てだけ変換
ip access-list extended A-nat
 deny   ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
 permit ip 192.168.1.0 0.0.0.255 any

! 回線側保護(ISAKMP/ESPのみ穴あけ)
ip access-list extended A-security
 permit esp host 200.1.1.1 host 100.1.1.1
 permit udp host 200.1.1.1 host 100.1.1.1 eq isakmp

! 暗号マップにピア・トランスフォーム・対象ACLを束ねる
crypto map M-ipsec 1 ipsec-isakmp
 set peer 200.1.1.1
 set transform-set IPSEC
 match address A-ipsec

! インターフェース
interface GigabitEthernet0/1
 ip address 192.168.1.254 255.255.255.0
 ip nat inside
 ip tcp adjust-mss 1356

interface Dialer1
 ip unnumbered Loopback1
 ip access-group A-security in
 ip mtu 1454
 ip nat outside
 encapsulation ppp
 dialer pool 1
 ppp authentication chap callin
 ppp chap hostname cisco@cisco.com
 ppp chap password cisco
 crypto map M-ipsec

! 経路とNATのひも付け
ip route 0.0.0.0 0.0.0.0 Dialer1
ip nat inside source list A-nat interface Loopback1 overload

この例ではLoopbackに固定グローバルを持つ想定です。Dialerで動的取得に切り替える場合は、NATのoverload先だけinterface Dialer1へ変更します。

ステートフル検査(CBAC)で回線側ACLの穴あけを簡素化

回線側に細かな穴あけACLを手作業で作るのは現実的ではありません。CBAC(Context-Based Access Control)を有効化すれば、内部から開始したセッションに対して戻りトラフィックを自動で許可でき、設定が大幅に楽になります。やることは「検査したいプロトコルを指定」し、「LAN側インターフェースにインスペクションを適用」するだけです。

ip inspect name CBAC tcp
ip inspect name CBAC udp
ip inspect name CBAC ftp

interface GigabitEthernet0/1
 ip inspect CBAC in

CBACをLAN側inで掛けても、回線側outで掛けても効果は同じです。構成資料ではout適用の例も多く見かけます。現場では、より新しい機能としてゾーンベースファイアウォール(ZBFW)が使われることもありますが、CCNA対策ではCBACの基本動作を押さえておけば十分です。

つまずきやすいポイントと確認観点

VPNが上がってもインターネットへ出られない場合、NAT除外ACLの順番ミスやip nat inside/outsideの付け忘れが典型です。show crypto isakmp saでフェーズ1(MM_NO_STATEやQM_IDLE)、show crypto ipsec saでフェーズ2(トンネルの入出力統計)を確認し、NAT周りはshow ip nat translationsshow run | sec natで実体を照合します。PPPoEではMTU/MSS調整が不足すると、特定サイトだけ繋がらないといった事象が出やすいため、ip mtuip tcp adjust-mssの値にも目を向けましょう。

試験で狙われやすい要点

VPN向けトラフィックは暗号化ACL(A-ipsec)で定義し、NATはNAT ACL(A-nat)で制御するなど、役割が違うACLを混同しないこと。crypto mapはピア・トランスフォームセット・対象ACLの三点セットであること。PPPoE環境ではMTU/MSS調整が必要なこと。CBACを使えば戻りトラフィックをステートフルに許可でき、回線側ACLを最小限にできること。これらは実務でもCCNAでも頻出です。

◆まとめスライド

目次