背景
IKEv2を推してくる若者がいる。だからおっさんも勉強開始。我らがAlibaba CloudもVPN-GWはIKEv2サポート。対抗は物理ルータが手元にないし、まあ趣味の領域なのでAWSのmarketplaceのCSR(CISCO Cloud Services Router)のFree trial版でやってみよう。NAT配下の物理C社ルータも同じような設定で動くんじゃなかろうか、、、というわけで、よくありそうな
- IKEv2
- NATありの環境
- C社ルータとの接続
を試してみる。
環境
CSRはVPC配下なのでEIPでNATされる。綺麗に動けば自動的にNAT traversalで動くはず。
AWS側準備
AWSでCiscoのCSR trialイメージを使ったEC2を立ち上げる。(省略)
そして以下のパラメータは控えておく。
- EIP: Alibaba Cloud側から見たCustomer gatewayのアドレスとなる
- Private IP: Alibaba Cloud側から見たRemote ID
- Subnet: IPSecでの保護対象のCIDRとなる
Alibaba Cloud側準備
VPN Gatewayの作成
Alibaba Cloud側の接続ポイントを定義。「VPN gatewayの作成」ボタンを押す。
とりあえず日本リージョンを選ぶ。VPCが複数あるなら適切なVPCを選択。1時間10円ぐらいだし、とりあえず購入。
適切に操作すればVPN Gatewayが作成され、 Global IP がアサインされる。これがAlibaba Cloud側のID件接続先IPになるので、メモしておく
Customer Gatewayの作成
次に「カスタマーゲートウェイ」作成へ進む。Allibaba Cloudから見た接続先を定義。必要な情報接続先のグローバルIP(ここではAWSのEIP)と名称ぐらい。
IPSec Connectionの作成
接続の両端とパラメータを指定して接続。
- 名前:なんでも。
- VPN Gateway:先ほど定義したVPN Gatewayが出てくるので選択する。
- カスタマーゲートウェイ:先ほど定義したCustomer Gatewayが出てくるので選択する
- ローカルネットワーク:IPSecで使うAlibaba側のCIDR。vSwitch のアドレス。ここでは172.24.0.0/16
- リモートネットワーク:IPSecで使う、AlibabaCloudから見て接続先にあるCIDR。ここではAWSのサブネット のアドレス。ここでは10.128.0.0/16
- ここではIKEv2を設定するため、「高度な構成」をon
- 事前共有鍵:PSK(pershared key)を記載する。ここではalitest
- バージョン:ike2
- Localid:Alibaba CloudのVPN GWのグローバルIPアドレスを記載。
- Remoteid:CSRのPrivate IPを記載する。
Routing の設定
VPCのRouting TableへAWSのCIDR(ここではA)のNexthopとして、先ほど作成したVPC-GWを指定する。
再びAWS側準備へ
Alibaba Cloud側のVPN GWのアドレスへのIKE/IPSecパケットがAWSのセキュリティポリシー上ドロップされている可能性がそこそこ高いので、適切にACLを設定
CSR(CISCO仮想ルータの設定)
! SNIP
crypto ikev2 proposal Proposal2Ali
encryption aes-cbc-128
integrity sha1
group 2
!
crypto ikev2 policy Policy2Ali
match address local 10.128.0.57
proposal Proposal2Ali
!
crypto ikev2 keyring keys
peer Alibaba
address 47.91.xx.xx
pre-shared-key local alitest
pre-shared-key remote alitest
!
!
!
crypto ikev2 profile Profile2Ali
match identity remote address 47.91.xx.xx 255.255.255.255
authentication remote pre-share
authentication local pre-share
keyring local keys
!
!
!
!
!
!
!
!
!
!
!
!
crypto ipsec transform-set TS esp-aes esp-sha-hmac
mode tunnel
!
!
!
!
crypto map cmap 10 ipsec-isakmp
set peer 47.91.xx.xx
set transform-set TS
set ikev2-profile Profile2Ali
match address cryptoacl
!
ip access-list extended cryptoacl
permit ip 10.128.0.0 0.0.0.63 172.24.0.0 0.0.255.255
! SNIP
とりあえず接続完了
Cisco側
ip-10-128-0-57#show crypto ipsec sa
interface: GigabitEthernet1
Crypto map tag: cmap, local addr 10.128.0.57
protected vrf: (none)
local ident (addr/mask/prot/port): (10.128.0.0/255.255.0.0/0/0)
remote ident (addr/mask/prot/port): (172.24.0.0/255.255.0.0/0/0)
current_peer 47.91.xx.xx port 4500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 18, #pkts encrypt: 18, #pkts digest: 18
#pkts decaps: 18, #pkts decrypt: 18, #pkts verify: 18
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0
local crypto endpt.: 10.128.0.57, remote crypto endpt.: 47.91.xx.xx
plaintext mtu 1422, path mtu 1500, ip mtu 1500, ip mtu idb GigabitEthernet1
current outbound spi: 0x●●●●●●●●(●●●●●●●●)
PFS (Y/N): N, DH group: none
inbound esp sas:
spi: 0x●●●●●●●●(●●●●●●●●)
transform: esp-aes esp-sha-hmac ,
in use settings ={Tunnel UDP-Encaps, }
conn id: 3475, flow_id: CSR:1475, sibling_flags FFFFFFFF80000048, crypto map: cmap
sa timing: remaining key lifetime (k/sec): (4608000/2726)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: spi: 0x●●●●●●●●(●●●●●●●●)
transform: esp-aes esp-sha-hmac ,
in use settings ={Tunnel UDP-Encaps, }
conn id: 3476, flow_id: CSR:1476, sibling_flags FFFFFFFF80000048, crypto map: cmap
sa timing: remaining key lifetime (k/sec): (4608000/2726)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
outbound ah sas:
outbound pcp sas:
ip-10-128-0-57#ping 172.24.189.251
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.24.189.251, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/5 ms
ip-10-128-0-57#