VPN Gatewayの新バージョンを使ってみた

2023年8月25日掲載

キービジュアル

ご覧いただきありがとうございます。ソフトバンクの結城です。

Alibaba Cloud VPN Gatewayで新バージョンがリリースされましたので、リリースされたデュアルトンネルモードと簡単な構成について紹介します。

目次

VPN Gatewayの新バージョンについて

2023年6月にVPN Gatewayの新バージョンがリリースされました。新バージョンでは、IPsec-VPNのデュアルトンネルモードを利用することができるようになりました。現時点では、全てのリージョンで利用できず、一部のリージョンでのみ利用が可能です。詳細についてはリリースノート対応リージョンの詳細についてご参照ください。
※日本リージョンでは、デュアルトンネルモードが提供されており、利用することができます。

デュアルトンネルモードと従来のIPsec-VPN構成との違い

デュアルトンネルモードがリリースされる前までは、IPsec-VPNの冗長化構成の設定は複数箇所設定する必要があり、方法としてはIPsec-VPN接続を複数作成して、ルーティングの重み設定とVPN Gatewayのヘルスチェック機能を設定する必要がありました。新しくリリースされたデュアルトンネルモードでは、1つのIPsec-VPN接続を作成、設定することによって、従来の冗長化構成と同様の構成を作成できるようになりました。また、新しくリリースされたデュアルトンネルモードでは、ヘルスチェック機能が廃止され、VPN Gatewayの基盤側の仕組みで自動的に経路の切り替えがされるようになりました。

デュアルトンネルモードを使った構成の紹介

今回はオンプレミスのCiscoルータとVPN GatewayをIPsec-VPN(デュアルトンネル)で接続します。動作確認では、Ciscoルータ側でprimaryのトンネルをdownさせて、secondaryのトンネルに切り替わるか確認します。

■構成図 (簡略)

vpn

■環境

Alibaba Cloud (クラウド)側
VPC (VSwitch2台 / それぞれ別ゾーン)
VPN Gateway
ECS
※全プロダクト日本リージョンを利用

・オンプレミス環境
Cisco Router

■事前準備

① Cisco RouterでVPN側の設定(通信が受けれる状態)

Version

ikev2

Encryption Algorithm

aes256

Authentication Algorithm

sha256

DH Group

group2

Pre-Shared Key

test1234

② ECSを1台作成(疎通確認用)

■構成方法

1 ) Alibaba Cloudコンソールにログインし、表示された画面で[Create VPN Gateway]をクリックします。

2 ) 以下の通り設定値を入力 / 設定します。設定値を入力 / 設定後、「Buy Now」をクリックし、VPN Gatewayインスタンスの作成を行います。

Name

任意の名前を入力

Region

Japan(Tokyo)

Gateway Type

Standard

Network Type

Public

Tunnels

Single-tunnel

VPC

事前に作成したECSに指定したVPCを選択

VSwitch

事前に作成したECSに指定したVSwitchを選択

VSwitch 2

VSwitchで指定したVSwitch以外のVSwitchを選択(別ゾーン)

Maximum Bandwith

任意の最大帯域幅を選択

Traffic

Pay-by-data-transfer

IPsec-VPN

Enable

SSL-VPN

Disable

Duration

By Hour

3 ) インスタンスが作成されたことを確認します。IPsec Address 1と2は以降の手順で使いますのでメモします。CIsco Router側でIPsec Address1と2を指定してトンネルの設定を行います。

vpn

4 ) Customer Gatewayの作成画面に移動し、「Create Customer Gateway」をクリックします。

5 ) 以下の通り設定値を入力 / 設定します。設定値を入力 / 設定後、「OK」をクリックし、Customer Gatewayを作成します。

Name

任意の名前を入力

IP Address

Cisco RouterのIPアドレスを入力します。

ACN

任意で設定

Discription

任意で設定

6 ) Customer Gatewayが作成されたことを確認します。

vpn

7 ) IPsec Connectionsの画面に移動し、「Create IPsec Connection」をクリックします。

8 ) 以下の通り設定値を入力 / 設定します。設定値を入力 / 設定後、「OK」をクリックし、IPsec-VPN接続を作成します。

Name

任意の名前を入力

Associate Resource

VPN Gateway

VPN Gateway

1-2で作成したVPN Gatewayを指定

Routing Mode

Destination Routing Mode

Effective Immediately

Yes

BGP Configuration

Disable

  

<Tunnel 1>

 

Customer Gateway

1-5で作成したCustomer Gatewayを選択

Pre-Shared Key

Cisco Routerで設定している値を入力

Version

ikev2

Negotiation Mode

main

Encryption Algorithm

aes256

Authentication Algorithm

sha256

DH Group

group2

SA Life Cycle (seconds)

86400 (デフォルト値)

LocalID

1-3でメモしたIPsec Address 1のアドレスを入力

RemoteID

Cisco RouterのIPアドレスを入力

Encryption Algorithm

aes256

Authentication Algorithm

sha256

DH Group

group2

SA Life Cycle (seconds)

86400 (デフォルト値)

DPD

enable

NAT Travesal

enable

  

<Tunnel 2>

 

Customer Gateway

1-5で作成したCustomer Gatewayを選択

Pre-Shared Key

Cisco Routerで設定している値を入力

Version

ikev2

Negotiation Mode

main

Encryption Algorithm

aes256

Authentication Algorithm

sha256

DH Group

group2

SA Life Cycle (seconds)

86400 (デフォルト値)

LocalID

1-3でメモしたIPsec Address 2のアドレスを入力

RemoteID

Cisco RouterのIPアドレスを入力

Encryption Algorithm

aes256

Authentication Algorithm

sha256

DH Group

group2

SA Life Cycle (seconds)

86400 (デフォルト値)

DPD

enable

NAT Travesal

enable

9 ) IPsec Connectionsが作成されたことを確認します。

vpn

10 ) 9で表示されたvcoから始まるインスタンスIDをクリックします。
トンネル1と2が「Phase 2 negotiation succeeded」のステータスになっていることを確認します。もし、失敗している状態であれば設定値の間違いが考えられますので、こちらのドキュメントを参照して対応してください。

vpn

設定は以上です。

■動作確認


ECS - VPN Gateway - Cisco Router間の疎通確認をします。
172.16.0.1はCisco Router側のローカルIPです。結果から見るとping応答が返ってきており、疎通が取れていることを確認できます。


Cisco RouterからECSに対してpingを打ちながら、Tunnel1をシャットダウンさせ、Tunnel2に切り替わるか確認をします。

■トンネルの状態

Cisco-CPE-K#show ip interface brief 
Tunnel1                    xx.xx.xx.xx   YES TFTP   up                    up      
Tunnel2                    xx.xx.xx.xx   YES TFTP   up                    up      


■Pingの実行画面
Cisco-CPE-K#ping 192.168.0.252 source 172.16.0.1 repeat 10000
Type escape sequence to abort.
Sending 10000, 100-byte ICMP Echos to 192.168.0.252, timeout is 2 seconds:
Packet sent with a source address of 172.16.0.1

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!...............
.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Success rate is 99 percent (9984/10000), round-trip min/avg/max = 4/5/160 ms



■Tinnel1をDown(ping実行中の状態)
Cisco-CPE-K(config)#interface tunnel 1
Cisco-CPE-K(config-if)#shutdown 
Aug 15 03:12:09.827: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel1, changed state to down
Aug 15 03:12:09.827: %LINK-5-CHANGED: Interface Tunnel1, changed state to administratively downend



■Tunnel2の状態
Cisco-CPE-K#   sh int tunnel 2
Tunnel2 is up, line protocol is up 
  Hardware is Tunnel
  Interface is unnumbered. Using address of GigabitEthernet8 (xx.xx.xx.xx)
  MTU 17878 bytes, BW 100 Kbit/sec, DLY 50000 usec, 
     reliability 255/255, txload 153/255, rxload 153/255
  Encapsulation TUNNEL, loopback not set
  Keepalive not set
  Tunnel linestate evaluation up
  Tunnel source xx.xx.xx.xx (GigabitEthernet8), destination xx.xx.xx.xx
   Tunnel Subblocks:
      src-track:
         Tunnel2 source tracking subblock associated with GigabitEthernet8
          Set of tunnels with source GigabitEthernet8, 2 members (includes iterators), on interface
<OK>
  Tunnel protocol/transport IPSEC/IP
  Tunnel TTL 255
  Tunnel transport MTU 1438 bytes
  Tunnel transmit bandwidth 8000 (kbps)
  Tunnel receive bandwidth 8000 (kbps)
  Tunnel protection via IPSec (profile "ipsecprofile2")
  Last input never, output never, output hang never
  Last clearing of "show interface" counters 00:03:32
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
  Queueing strategy: fifo
  Output queue: 0/0 (size/max)
  30 second input rate 60000 bits/sec, 75 packets/sec          
  30 second output rate 60000 bits/sec, 75 packets/sec         
     8179 packets input, 817900 bytes, 0 no buffer
     Received 0 broadcasts (0 IP multicasts)
     0 runts, 0 giants, 0 throttles 
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
     8194 packets output, 819400 bytes, 0 underruns
     0 output errors, 0 collisions, 0 interface resets
     0 unknown protocol drops
     0 output buffer failures, 0 output buffers swapped out

出力結果を見ると20秒ほど接続断が発生し、その後Tunnel2に切り替わっていることを確認できます。

 

③Cisco RouterからECSに対してpingを打ちながら、Tunnel1を復旧させ、Tunnel1に戻るか確認をします。

■Tunnel1を復旧
Cisco-CPE-K(config)#endshutdown int tunnel 1
Cisco-CPE-K(config-if)#no shutdown 
Cisco-CPE-K(config-if)#end
Cisco-CPE-K#
Aug 15 03:19:44.107: %SYS-5-CONFIG_I: Configured from console by admin on vty1 (xx.xx.xx.xx)
Aug 15 03:19:44.471: %LINK-3-UPDOWN: Interface Tunnel1, changed state to up
Cisco-CPE-K#
Aug 15 03:20:08.539: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel1, changed state to up


■Tunnel1の状態を確認
Cisco-CPE-K#      sh int tunnel 1
Tunnel1 is up, line protocol is up 
  Hardware is Tunnel
  Interface is unnumbered. Using address of GigabitEthernet8 (xx.xx.xx.xx)
  MTU 17878 bytes, BW 100 Kbit/sec, DLY 50000 usec, 
     reliability 255/255, txload 140/255, rxload 119/255
  Encapsulation TUNNEL, loopback not set
  Keepalive not set
  Tunnel linestate evaluation up
  Tunnel source xx.xx.xx.xx (GigabitEthernet8), destination xx.xx.xx.xx
   Tunnel Subblocks:
      src-track:
         Tunnel1 source tracking subblock associated with GigabitEthernet8
          Set of tunnels with source GigabitEthernet8, 2 members (includes iterators), on interface
<OK>
  Tunnel protocol/transport IPSEC/IP
  Tunnel TTL 255
  Tunnel transport MTU 1438 bytes
  Tunnel transmit bandwidth 8000 (kbps)
  Tunnel receive bandwidth 8000 (kbps)
  Tunnel protection via IPSec (profile "ipsecprofile")
  Last input never, output never, output hang never
  Last clearing of "show interface" counters 00:00:04
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
  Queueing strategy: fifo
  Output queue: 0/0 (size/max)
  30 second input rate 47000 bits/sec, 58 packets/sec         
  30 second output rate 55000 bits/sec, 70 packets/sec         
     1061 packets input, 106100 bytes, 0 no buffer
     Received 0 broadcasts (0 IP multicasts)
     0 runts, 0 giants, 0 throttles 
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
     1061 packets output, 106100 bytes, 0 underruns
     0 output errors, 0 collisions, 0 interface resets
     0 unknown protocol drops
     0 output buffer failures, 0 output buffers swapped out



■Tunnel2の状態を確認
Cisco-CPE-K#   sh int tunnel 2
Tunnel2 is up, line protocol is up 
  Hardware is Tunnel
  Interface is unnumbered. Using address of GigabitEthernet8 (xx.xx.xx.xx)
  MTU 17878 bytes, BW 100 Kbit/sec, DLY 50000 usec, 
     reliability 255/255, txload 5/255, rxload 22/255
  Encapsulation TUNNEL, loopback not set
  Keepalive not set
  Tunnel linestate evaluation up
  Tunnel source xx.xx.xx.xx (GigabitEthernet8), destination xx.xx.xx.xx
   Tunnel Subblocks:
      src-track:
         Tunnel2 source tracking subblock associated with GigabitEthernet8
          Set of tunnels with source GigabitEthernet8, 2 members (includes iterators), on interface
<OK>
  Tunnel protocol/transport IPSEC/IP
  Tunnel TTL 255
  Tunnel transport MTU 1438 bytes
  Tunnel transmit bandwidth 8000 (kbps)
  Tunnel receive bandwidth 8000 (kbps)
  Tunnel protection via IPSec (profile "ipsecprofile2")
  Last input never, output never, output hang never
  Last clearing of "show interface" counters 00:00:07
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
  Queueing strategy: fifo
  Output queue: 0/0 (size/max)
  30 second input rate 9000 bits/sec, 12 packets/sec           
  30 second output rate 2000 bits/sec, 3 packets/sec           
     0 packets input, 0 bytes, 0 no buffer
     Received 0 broadcasts (0 IP multicasts)
     0 runts, 0 giants, 0 throttles 
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
     0 packets output, 0 bytes, 0 underruns
     0 output errors, 0 collisions, 0 interface resets
     0 unknown protocol drops
     0 output buffer failures, 0 output buffers swapped out

出力結果を見るとTunnel1(primary)が復旧したタイミングから、Tunnel1にトラフィックが流れはじめ、Tunne2(secondary)から切り替わっていることを確認できます。

■考察

Tunnel1(primary)とTunnel2(secondary)が両方利用できる状態であればTunnel1が使われ、Tunnel2にトラフィックが流れません。Tunnel1がダウンした場合は、Tunnel2に自動的に切り替えが行われます。Tunnel1が復旧した後は自動的にTunnel1(primary)に戻ることが上記の結果から分かります。

最後に

今回は新しくリリースされたVPN Gateway(デュアルトンネルモード)を紹介させていただきました。個人的な感想としては、従来の冗長化構成と比べて設定箇所は少なく、シンプルに設定が行えた印象でした。また、Tunnel1をシャットダウンさせ、Tunnel2に切り替わる時間は複数回テストした限りだと最長で20秒ほど、最小でパケットロスなしで切り替わったので、接続断を気にされる方は新しくリリースされたVPN Gateway(デュアルトンネルモード)をご利用いただくことをお勧めします。

関連記事

関連サービス

Alibaba Cloud

Alibaba Cloudは中国国内でのクラウド利用はもちろん、日本-中国間のネットワークの不安定さの解消、中国サイバーセキュリティ法への対策など、中国進出に際する課題を解消できるパブリッククラウドサービスです。

MSPサービス

MSP(Managed Service Provider)サービスは、お客さまのパブリッククラウドの導入から運用までをトータルでご提供するマネージドサービスです。

おすすめの記事

条件に該当するページがございません