VPC への VPN 接続で IKEv2 を使う – IOS XE の場合

AWS への VPN 接続で IKEv2 を使う方法についてご紹介します。
2019.02.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、VPN 芸人のトランです。みなさんいかがお過ごしでしょうか?

きょうは、Site-to-Site VPN で AWS へ接続されたカスタマーゲートウェイで IKEv2 を使用する方法についてご紹介します。

前提

  • 2019年2月6日以降に作成された Site-to-Site VPN を使用していること*
  • IOS 15.1 M&T 以降を実行するカスタマーゲートウェイを使用していること

*AWS Site-to-Site VPN Now Supports IKEv2 https://aws.amazon.com/about-aws/whats-new/2019/02/aws-site-to-site-vpn-now-supports-ikev2/

今回は、手軽に再現できるよう VPC 上で起動した Cisco Cloud Services Router 1000V を例に設定方法をご紹介します。

R123(config)#do show version
Cisco IOS XE Software, Version 16.09.02
Cisco IOS Software [Fuji], Virtual XE Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 16.9.2, RELEASE SOFTWARE (fc4)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2018 by Cisco Systems, Inc.
Compiled Mon 05-Nov-18 19:26 by mcpre

なお、まだ IKEv1 を使用する Site-to-Site VPN 接続を設定していない場合、VPC マネジメントコンソールから 新しい Site-to-Site VPN 接続を作成したうえでカスタマーゲートウェイを設定しておきましょう。

! VPC マネジメントコンソールからダウンロードした設定例の通りに (IKEv1 で) 設定します。
R123(config)#crypto isakmp policy 200
R123(config-isakmp)# encryption aes 128
R123(config-isakmp)# authentication pre-share
R123(config-isakmp)# group 2
R123(config-isakmp)# lifetime 28800
R123(config-isakmp)# hash sha
R123(config-isakmp)#exit
R123(config)#
R123(config)#crypto keyring keyring-vpn-000cb14fede018fda-0
R123(conf-keyring)#
! 省略

IKEv2 への切り替え

IKEv1 で正しく ISAKMP SA と IPsec SA がそれぞれ確立されていることを確認できたら、実際に IKEv2 への切り替えを行います。

まず IKEv2 で使うための Phase 1 Proposal (IKEv2 Cipher Suite) を用意します。今回は AWS デフォルトの組み合わせを選択しました。

!
crypto ikev2 proposal AES128-SHA96-MODP1024
 encryption aes-cbc-128
 integrity sha1
 group 2
exit
!

なお、既定で用意される Phase 1 Proposal ("default") は AWS でサポートされない Integrity アルゴリズム (SHA512, SHA384) しか許容されないため使用できません。

R123(config)#do show crypto ikev2 proposal
 IKEv2 proposal: AES128-SHA96-MODP1024 
     Encryption : AES-CBC-128
     Integrity  : SHA96
     PRF        : SHA1
     DH Group   : DH_GROUP_1024_MODP/Group 2
 IKEv2 proposal: default 
     Encryption : AES-CBC-256
     Integrity  : SHA512 SHA384
     PRF        : SHA512 SHA384
     DH Group   : DH_GROUP_256_ECP/Group 19 DH_GROUP_2048_MODP/Group 14 DH_GROUP_521_ECP/Group 21 DH_GROUP_1536_MODP/Group 5

作成した Phase 1 Proposal を IKEv2 SA のソースインターフェイスで使用するポリシーを作成します。

!
crypto ikev2 policy GigabitEthernet1
 ! 次でソースインターフェイスの IP アドレスを指定します
 match address local 172.16.0.254
 proposal AES128-SHA96-MODP1024
exit
!

なお、使用する Phase 1 Proposal を指定したポリシーを用意しない場合は "default" の Phase 1 Proposal が使われるようになっています。

R123(config)#do show crypto ikev2 policy

 IKEv2 policy : GigabitEthernet1
      Match fvrf  : global
      Match address local : 172.16.0.254
      Proposal    : AES128-SHA96-MODP1024 

 IKEv2 policy : default
      Match fvrf : any
      Match address local : any 
      Proposal    : default

IKEv2 で使うためのプロファイルをエンドポイントごとに用意します。

!
crypto ikev2 profile ikev2-vpn-000cb14fede018fda-0
 match identity remote address 52.193.148.66 255.255.255.255
! Phase 1 ネゴシエーションで使用するアイデンティティ (IP アドレス) を指定します。
! カスタマーゲートウェイが直接インターネットに接続されていない (NAT が存在する) 場合、
! ソースインターフェイスが実際に使用する (プライベート) アドレスを指定します。
 identity local address 172.16.0.254
 authentication remote pre-share key UM7bie1TnA3d_KF.7ckK_KjK64Q1Hch.
 authentication local pre-share key UM7bie1TnA3d_KF.7ckK_KjK64Q1Hch.
 lifetime 28800
exit
!
crypto ikev2 profile ikev2-vpn-000cb14fede018fda-1
 match identity remote address 54.199.142.165 255.255.255.255
! Phase 1 ネゴシエーションで使用するアイデンティティ (IP アドレス) を指定します。
! カスタマーゲートウェイが直接インターネットに接続されていない (NAT が存在する) 場合、
! ソースインターフェイスが実際に使用する (プライベート) アドレスを指定します。
 identity local address 172.16.0.254
 authentication remote pre-share key CoYLWNCGZT42tf0VCdTJ7TQePZL65_CA
 authentication local pre-share key CoYLWNCGZT42tf0VCdTJ7TQePZL65_CA
 lifetime 28800
exit
!

それぞれのトンネルインターフェイス (VTI) に指定された tunnel protection を、既存の IKEv1 から新しく用意した IKEv2 へ変更します。なお、Phase 2 Proposal (ipsec profile や ipsec transform-set) については既にあるものを流用します。

R123(config)#do show running-config | section crypto ipsec 
crypto ipsec security-association replay window-size 128
crypto ipsec transform-set ipsec-prop-vpn-000cb14fede018fda-0 esp-aes esp-sha-hmac 
 mode tunnel
crypto ipsec transform-set ipsec-prop-vpn-000cb14fede018fda-1 esp-aes esp-sha-hmac 
 mode tunnel
crypto ipsec df-bit clear
crypto ipsec profile ipsec-vpn-000cb14fede018fda-0
 set transform-set ipsec-prop-vpn-000cb14fede018fda-0 
 set pfs group2
crypto ipsec profile ipsec-vpn-000cb14fede018fda-1
 set transform-set ipsec-prop-vpn-000cb14fede018fda-1 
 set pfs group2

インターフェイスをフラップしつつ、使用する tunnel protection を IKEv1 のものから IKEv2 のものへ変更します。

!
interface Tunnel1
 shutdown
 no tunnel protection ipsec profile ipsec-vpn-000cb14fede018fda-0
 tunnel protection ipsec profile ipsec-vpn-000cb14fede018fda-0 ikev2-profile ikev2-vpn-000cb14fede018fda-0
 no shutdown
exit
!
R123(config)#do show crypto ikev2 sa
 IPv4 Crypto IKEv2  SA 

Tunnel-id Local                 Remote                fvrf/ivrf            Status 
1         172.16.0.254/4500     52.193.148.66/4500    none/none            READY  
      Encr: AES-CBC, keysize: 128, PRF: SHA1, Hash: SHA96, DH Grp:2, Auth sign: PSK, Auth verify: PSK
      Life/Active Time: 28800/886 sec

 IPv6 Crypto IKEv2  SA 

#do ping 169.254.25.221
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 169.254.25.221, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 222/222/222 ms
!
interface Tunnel2
 shutdown
 no tunnel protection ipsec profile ipsec-vpn-000cb14fede018fda-1
 tunnel protection ipsec profile ipsec-vpn-000cb14fede018fda-1 ikev2-profile ikev2-vpn-000cb14fede018fda-1
 no shutdown
exit
!
R123(config)#do show crypto ikev2 sa
 IPv4 Crypto IKEv2  SA 

Tunnel-id Local                 Remote                fvrf/ivrf            Status 
1         172.16.0.254/4500     52.193.148.66/4500    none/none            READY  
      Encr: AES-CBC, keysize: 128, PRF: SHA1, Hash: SHA96, DH Grp:2, Auth sign: PSK, Auth verify: PSK
      Life/Active Time: 28800/945 sec

Tunnel-id Local                 Remote                fvrf/ivrf            Status 
2         172.16.0.254/4500     54.199.142.165/4500   none/none            READY  
      Encr: AES-CBC, keysize: 128, PRF: SHA1, Hash: SHA96, DH Grp:2, Auth sign: PSK, Auth verify: PSK
      Life/Active Time: 28800/4 sec

 IPv6 Crypto IKEv2  SA 

R123(config-if)#do ping 169.254.25.241
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 169.254.25.241, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 215/215/215 ms

これで IKEv1 から IKEv2 への切り替えを行うことができました!

参考

Security for VPNs with IPsec Configuration Guide, Cisco IOS Release 15M&T - Cisco https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/sec_conn_vpnips/configuration/15-mt/sec-sec-for-vpns-w-ipsec-15-mt-book.html