目次
サイト間IPSec VPNの設定手順
サイト間IPSec VPNを設定ための手順は以下のようになります。ここでは、crypto mapの設定について解説します。
- ISAKMPポリシーを設定する
- IPSecトランスフォームセットを設定する
- 暗号ACLを設定する
- 暗号マップ(crypto map)を設定する
- 暗号マップ(crypto map)をインタフェースに適用する
- IPSecの通信を可能にするためのACLを設定し、インタフェースに適用する
Step1:ISAKMPポリシーの設定
ISAKMPポリシーを設定するには、グローバルコンフィグレーションモードで次のコマンドを入力します。
(config)#crypto isakmp policy < priority >
(config-isakmp)#encryption {des | 3des | aes128 | aes 192 | aes 256 }
(config-isakmp)#hash { md5 | sha | sha256 }
(config-isakmp)#authentication { pre-share | rsa-encr | rsa-sig }
(config-isakmp)#group { 1 | 2 | 5 }
(config-isakmp)#lifetime < sec >
各パラメータのデフォルト値は、次のように決まっています。
- encryption : default = 56-bit DES-CBC
- hash : default = SHA-1
- authentication : default = RSA signatures
- group : default = group 1
- lifetime : default = 86,400 秒 (1日)
パラメータの設定を省略すると、デフォルト値が適用されます。
そして、ISAKMP SAを確立するピア認証でPSK(pre shared key)を利用する場合には、ピア間で共通の秘密鍵を設定します。そのためのコマンドは、次の通りです。
(config)#crypto isakmp key < keystring > address < peer-address >
< keystring > : 事前共有鍵
< peer-address > : 対向のVPNゲートウェイのIPアドレス
Step2:IPSecトランスフォームセットの設定
IPSecトランスフォームセットの設定は、グローバルコンフィグレーションモードで次のコマンドを入力します。
(config)#crypto ipsec transform-set < transform-set-name > < transform1 > [< transform2 >] [< transform3 >] [< transform4 >]
( config-crypto-trans)#set mode {tunnel|transport}
< transform-set-name > : トランスフォームセット名
< transform1 > ~ < transform4 > : セキュリティプロトコル
< transform1 > ~ < transform4 >によってIPSecのセキュリティプロトコルとしてESP、AHのどちらを使うか、暗号化アルゴリズム、ハッシュアルゴリズムの指定です。指定できるトランスフォームセットのパラメータとして、主なものは次の通りです。
AH
- ah-md5-hmac
- ah-sha-hmac
ESP暗号化
- esp-aes
- esp-aes 192
- esp-aes 256
- esp-des
- esp-3des
ESP認証
- esp-md5-hmac
- esp-sha-hmac
たとえば、「transformset1」という名前でセキュリティプロトコルとしてESPを利用し、3DESの暗号化、md5のハッシュアルゴリズムを用いるトランスフォームセットの設定は次のようになります。
(config)#crypto ipsec transform-set transformset1 esp-3des esp-md5-hmac
設定したトランスフォームセットは、crypto mapの中で関連づけてはじめて、意味を持ちます。
Step3:暗号ACLを設定する
暗号ACLは、拡張アクセスリストで設定します。暗号ACLの目的は、IPSecによって保護するパケットを指定することです。そのため、パケットフィルタリングで利用するACLとpermit/denyの意味が異なるので注意してください。
暗号ACLでのparmitは、IPSecによって保護する、つまりESPやAHのヘッダを付加するパケットです。一方、暗号ACLでdenyとなるパケットは、IPSecによって保護されずそのままで転送されることになります。denyであっても、パケットが捨てられるわけではありません。
たとえば、送信元IPアドレスが192.168.1.0/24のサブネットで、送信先IPアドレスが192.168.2.0/24のサブネットであるIPパケットをIPSecの対象とする暗号ACLは次のようになります。
(config)#access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
やはり、最後に暗黙のdenyがあります。この暗号ACLでpermitされているパケットがIPSec化されます。暗黙のdenyでdenyされるその他のパケットは、IPSec化されずにそのまま転送されます。
暗号ACLは、トランスフォームセットと同じくcrypto mapで関連づける必要があります。
Step4:暗号マップ(crypto map)を設定する
暗号マップ(crypto map)とは、これまでに設定したトランスフォームセットや暗号ACL、IPSec SAを構成するピアの情報をひとまとめにしたものです。また、IPSec SAを構成するためにIKEを利用するかどうかも決められます。crypto mapを設定するには、グローバルコンフィグレーションモードで次のように設定します。
(config)#crypto map < map-name > < sequence > ipsec-isakmp
(config-crypto-map)#match address < ACL >
(config-crypto-map)#set transform-set < transform-set-name >
(config-crypto-map)#set peer < ip-address >
(config-crypto-map)#set security-association lifetime [second < second >| kilobytes < kilobytes >]
< map-name > : 暗号マップの名前
< sequence > : シーケンス番号
ipsec-isakmp : IPSec SAの生成をIKE(ISAKMP)で行う
< ACL >:暗号ACLの番号
< transform-set-name >:トランスフォームセット名
< ip-address >:対向のVPNゲートウェイのIPアドレス
< second >:IPSec SAのライフタイム(時間 秒)
< kirobytes >:IPSec SAのライフタイム(転送量 キロバイト)
暗号マップの処理は< sequence >が小さい順から処理します。< sequence >ごとに対向となるVPNゲートウェイを決めて、どんなパケットをIPSecで保護して通信するかを決めることになります。複数の拠点をIPSec VPNで接続するときには、crypto mapの< sequence >ごとに設定します。
Step5:暗号マップ(crypto map)をインタフェースに適用する
crypto mapを作成しただけでは、IPSec SAを作成することはできません。crypto mapをインタフェースに適用し、crypto map内で指定されているIPパケットがやってきてはじめてIPSec SAを作成するようになります。
インタフェースにcrypto mapを適用するには、インタフェースコンフィグレーションモードで次のように設定します。
(config-if)#crypto map < crypto-map-name >
< crypto-map-name > : 適用するcrypto map名
ここで、注意することはcrypto mapを適用するインタフェースです。crypto mapの適用はIPSec化するパケットの出力インタフェースにします。サイト間IPSec VPNはインターネットを経由することがほとんどです。そのため、crypto mapを適用するインタフェースは、インターネットに接続される(方向の)インタフェースです。
Step6:IPSecの通信を可能にするためのACLを設定し、インタフェースに適用する
crypto mapをインターネットに接続されるインタフェースに適用にされるわけですが、通常、インターネットに接続されるインタフェースにはACLを設定しています。インターネット側から不要なパケットを受信しないようにするためです。IPSecの通信を行う場合、インターネット側のインタフェースのACLにIPSecを許可する条件を追加してあげる必要があります。
IPSecを許可するには、次のプロトコルをpermitする必要があります。
- IKE:UDPポート500
- AH:IPプロトコル番号51
- ESP:IPプロトコル番号50
典型的なACLの例は次のようになります。
(config)#access-list 100 permit ahp any any
(config)#access-list 100 permit esp any any
(config)#access-list 100 permit udp any any eq isakmp
例ではアドレスをany anyとしていますが、アドレスの指定をきちんとVPNゲートウェイだけに限定して設定したほうがよいです。ACLはインタフェースへの適用も忘れないようにしてください。
サイト間IPSec VPNの具体的な設定例について、以下の記事を参照してください。
インターネットVPN
- インターネットVPNの概要
- インターネットへの接続形態
- VPNサービスとは?
- NordVPN ~セキュアなVPNサービスを手軽に利用しよう~
- IPSecの概要
- IKE ~SAの生成と管理~
- IPSec サイト間VPNの動作
- IPSec サイト間VPNの設定 ~crypto mapによる設定~
- IPSec サイト間VPNの設定例
- [演習]サイトツーサイトIPSec-VPN(crypto map)
- [演習]サイトツーサイトIPSec-VPN(VTI)
- [演習]サイトツーサイトIPSec-VPN(VTI) トラブルシューティング
- IPSec 設定ミスの切り分けと修正 Part1
- IPSec 設定ミスの切り分けと修正 Part2
- IPSec 設定ミスの切り分けと修正 Part3
- DMVPNの設定例
- DMVPN設定演習[Cisco] NHRP Phase1
- DMVPN設定演習[Cisco] NHRP Phase2
- DMVPN設定演習[Cisco] NHRP Phase3
- SSL-VPNの実現方式
- SSL-VPN(クライアントレス)の設定例 (Cisco)