◆ IPsec-VPN のコンフィグを作成する前に
Cisco機器同士でのIPsec-VPNで行う場合は、難なくスムーズに構築することができると思いますが、
他のメーカーとの機器とIPsec-VPNを行う場合はメーカ独自のパラメータを排除して、IPsec規格に
基づいたパラメータ表を事前に作成しておき認識を合わせておくことが大切です。例えば以下の表を
もとにパラメータの認識を合わせたなら異なるメーカとのIPsec-VPNも問題なく構築できるでしょう。
IKE Phase1( ISAKMP SA ) |
IKE Phase2( IPsec SA ) |
暗号化アルゴリズム |
DES or 3DES or AES |
セキュリティプロトコル |
AH or ESP |
ハッシュアルゴリズム |
MD5 or SHA-1 |
暗号化アルゴリズム |
DES or 3DES or AES or Null |
IKE Phase1 の認証方式 |
Pre-shared Key or
デジタル署名、or
公開鍵暗号、or
改良型公開鍵暗号
|
認証アルゴリズム |
MD5-HMAC or SHA1-HMAC |
DHグループ |
1 or 2 or 5 |
PFSグループ |
(option) 1 or 2 or 5 |
ISAKMP SA ライフタイム |
- |
IPsec SAのライフタイム |
- |
Pre-shared Key |
- |
IPsec通信モード |
トンネル or トランスポート |
ISAKMPのピアアドレス |
- |
IPsecのピアアドレス |
- |
IKEキープアライブ(DPD) |
- |
IPsecの対象トラフィック |
- |
IKE Phase1 モード |
Mainモード/Aggressiveモード |
IKE Phase 2 モード |
Quickモードのみ |
・ IKE Phase1の認証方式は「Pre-Shared Key」方式を採用するのが一般的です。DHグループは「2」を採用するのが一般的です。
・ サイト間VPNの場合、IKE Phase1モードは「Main」を使用します。リモートアクセスVPNの場合はAggressiveを有効にします。
ただし、サイト間VPNにおいてもIPsecのピアとなるアドレスが動的なアドレスである場合には「Aggressive」を有効にします。
・ optionのPFSグループは一般的に定義しません。ISAKMPのピアアドレスとIPsecでのピアアドレスは、同じアドレスとなります。
◆ IPsec-VPN のサンプルコンフィグ
日本においてIPsec-VPN(インターネットVPN)を行う場合、回線の足回りとしてBフレッツなどの
PPPoEを使用することが非常に多いといえます。ここでは、インターネット回線にPPPoEを使用して
拠点間で IPsec-VPN(インターネットVPN)を行う場合のコンフィグの設定例を紹介していきます。
以下のコンフィグレーションは、拠点間「 192.168.1.0/24 ⇔ 192.168.2.0/24 」のIPsecの通信のみが
可能となる設定例であり、拠点からインターネット通信を行いたい場合はACLを変更する必要があります。
crypto isakmp policy 1
encry 3des
hash md5
authentication pre-share
group 2
!
crypto isakmp key cisco address 200.1.1.1
crypto isakmp keepalive 30 periodic
!
crypto ipsec transform-set IPSEC esp-3des esp-md5-hmac
!
crypto map M-ipsec 1 ipsec-isakmp
set peer 200.1.1.1
set transform-set IPSEC
match address A-ipsec
!
!
interface Loopback1
ip address 100.1.1.1 255.255.255.255
!
interface GigabitEthernet 0/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-ipsec
permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
!
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
|
crypto isakmp policy 1
encry 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
!
crypto map M-ipsec 1 ipsec-isakmp
set peer 100.1.1.1
set transform-set IPSEC
match address A-ipsec
!
!
interface Loopback1
ip address 200.1.1.1 255.255.255.255
!
interface GigabitEthernet 0/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-ipsec
permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
!
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 I/Fを使用せず「ip address negotiated」を使用することも可能です。
Global IPの固定契約さえしていれば ip address negotiated で得られるグローバルIPアドレスは常に同じIPアドレスが付与されます。
R1のIPsecパラメータ |
IKE Phase1 ( for ISAKMP SA ) |
IKE Phase2 ( for IPsec SA ) |
暗号化アルゴリズム |
3DES |
セキュリティプロトコル |
ESP |
ハッシュアルゴリズム |
MD5 |
暗号化アルゴリズム |
3DES |
IKE Phase1 の認証方式 |
Pre-shared Key |
認証アルゴリズム |
MD5-HMAC |
DHグループ |
2 |
PFSグループ |
- |
ISAKMP SA ライフタイム |
86400(秒) ※1 |
IPsec SAのライフタイム |
3600(秒) ※1 |
Pre-shared Key |
cisco |
IPsec通信モード |
トンネルモード |
ISAKMPのピアアドレス |
200.1.1.1 |
IPsecのピアアドレス |
200.1.1.1 |
IKEキープアライブ(DPD) |
30 |
IPsecの対象トラフィック |
192.168.1.0/24 → 2.0/24 |
IKE Phase1 モード |
Mainモード ※2 |
IKE Phase 2 モード |
Quickモード |
R2のIPsecパラメータ |
IKE Phase1 ( for ISAKMP SA ) |
IKE Phase2 ( for IPsec SA ) |
暗号化アルゴリズム |
3DES |
セキュリティプロトコル |
ESP |
ハッシュアルゴリズム |
MD5 |
暗号化アルゴリズム |
3DES |
IKE Phase1 の認証方式 |
Pre-shared Key |
認証アルゴリズム |
MD5-HMAC |
DHグループ |
2 |
PFSグループ |
- |
ISAKMP SA ライフタイム |
86400(秒) ※1 |
IPsec SAのライフタイム |
3600(秒) ※1 |
Pre-shared Key |
cisco |
IPsec通信モード |
トンネルモード |
ISAKMPのピアアドレス |
100.1.1.1 |
IPsecのピアアドレス |
100.1.1.1 |
IKEキープアライブ(DPD) |
30 |
IPsecの対象トラフィック |
192.168.2.0/24 → 1.0/24 |
IKE Phase1 モード |
Mainモード ※2 |
IKE Phase 2 モード |
Quickモード |
※1 ISAKMP SAのライフタイム値、IPsec SAのライフタイム値はデフォルト値です。詳細は「IKE phase1」「IKE phase2」
※2 crypto isakmp aggressive-mode disableと設定していない場合には、アグレッシブモードのISAKMP SAも処理できます。
◆ IPsec-VPN が上手く接続できない場合
IPsec通信が上手くいかない場合、先ずIKEフェーズ1で失敗しているのか、フェーズ2で失敗しているのか
特定する必要があります。IKEフェーズ1の状態は「 show crypto isakmp sa 」コマンドで確認できます。
show crypto isakmp saにより、一般的に以下の3パターンの結果が得られます。
パターン |
表示 |
説明 |
@ |
- |
何も表示されない状態は、IPsecの通信が行われていない状態。例えば、IPsecの通信対象が
192.168.1.0/24 ⇔ 192.168.2.0/24 である場合、192.168.1.XのPCから、192.168.2.Xの
PCにPINGして通信させてみよう。その結果「MM_NO_STATE」または「QM_IDLE」になる。
PING疎通でIPsec通信したのに非表示ならルーティング設定ミス or IPsec対象ACL設定ミス。
|
A |
MM_NO_STATE |
MM_NO_STATEの表示はIKEフェーズ1の失敗を意味する。IPsec接続を行う両方のルータで
IKEフェーズ1の設定に間違いないか確認しよう。Pre-shared Key (crypto isakmp key) の
設定が両端のルータで同じ値なのかを確認してみよう。ルータの機種やIOSバージョンにより
sanity check failedというメッセージが返される。Pre-shared Keyの設定が同じ値である場合
IPsec間のルータに設定されているACLの設定を確認しよう。ISAKMPパケットが許可されて
いるのか試しにACLの設定を外してみよう。ACLの設定を外してもMM_NO_STATE状態が続く
場合、ルータ再起動によりMM_NO_STATE(失敗)からQM_IDLE(成功)になる場合もある。 |
B |
QM_IDLE |
QM_IDLEの表示はIKEフェーズ1の成功を意味する。以降は後続となるIKEフェーズ2における
クイックモードの交換が可能であることを意味する。 |
IPsec通信が上手くいかない場合は、IKEフェーズ1で失敗していることが多いので、あとはIKEフェーズ2で
上述のパラメータが両端のルータで同じであることを確認して、show crypto ipsec saで IKEフェーズ2の
状態を確認しましょう。IKEフェーズ2で最も使用されているセキュリティプロトコルのESPを使用する場合
show crypto ipsec saコマンドでinbound esp sas:とoutbound esp sas:の項目でトランスフォームセット
が反映されていることを確認して、以下の項目にて「 X 」の値がカウントされていることを確認しましょう。
# pkts encaps: X, #pkts encrypt: X, #pkts digest: X
# pkts decaps: X, #pkts decrypt: X, #pkts verify: X
なお、show crypto engine connections activeで、現在のアクティブな暗号化セッションを確認できます。
IPsec-VPN確認コマンド |
説明 |
show crypto isakmp policy |
IKEフェーズ 1 のISAKMPポリシーを表示
|
show crypto isakmp sa |
IKEフェーズ 1 のISAKMP SAを表示 |
show crypto ipsec transform-set |
IKEフェーズ 2 のトランスフォームセットの表示 |
show crypto ipsec sa |
IKEフェーズ 2 のIPsec SAを表示 |
show crypto session detail |
IPsec SAのステータス表示 |
|