0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IKEv1プロトコルで複数CIDRを指定してVPN通信をする ~Alibaba Cloud公式ブログより~

Posted at

アリババクラウドのパートナーのAPコミュニケーションズ様より、アリババクラウドについて第三弾のレポートをいただきましたので共有させていただきます。本編はこちらのサイトでご覧ください。

techblogAPCについて(はじめにお読み下さい)>

はじめに

こんにちは、IaC技術推進部の山路です。 Alibaba Cloudの公式のブログでは毎日のように新しい投稿があり、その中身もインフラからアプリ開発、機械学習にIoTまで多岐にわたります。今回はたくさんのブログ記事の中から、IPSec-VPNとCENを組み合わせたこちらの記事について紹介させていただきます。この記事では、IPSec-VPN接続でIKEv1プロトコルを利用している際に、複数のネットワーク先と通信を行う方法について紹介しております。元の記事を読んでみて、同じようなケースに遭遇したときに何かの参考になるのでは、と感じ、本投稿に至りました。

本投稿では、元となる記事の内容を紹介したのち、記事と同じ手順で実際に環境を構築し、複数のネットワーク間で疎通が取れることを確認するまでを紹介いたします。

元記事はこちら

内容紹介

扱うサービス・プロダクト

記事の中身に入る前に、今回紹介する記事で登場するAlibaba Cloudのサービス・プロダクトについて簡単に紹介します。

VPN Gateway
VPN GatewayはAlibaba Cloud上にVPNゲートウェイを作成し、Alibaba CloudのVPC間やオンプレ・クラウド間でのVPN通信を実現します。

Customer Gateway
Customer Gatewayは、IPSec接続を行う対向側のゲートウェイ情報を定義するリソースです。

IPSec Connection
IPSec Connectionは、作成するIPSec接続の通信先やプロトコルを定義します。VPN GatewayとCustomer Gatewayを指定してアクセス元・アクセス先を指定し、接続時に利用するプロトコルを指定します。元記事のメインテーマであるIKEv1プロトコルはここで指定します。

Cloud Enterprise Network
上記3つのサービスは他のクラウドプロバイダーも提供しているものであるのに対し、Cloud Enterprise Network(CEN)はAlibaba Cloud特有のサービスです。CENはAlibaba Cloudの所有するインフラを利用して、VPC間、VPCとオンプレミス間のネットワーク接続を実現するサービスです。

image.png

※Alibaba Cloud公式ドキュメントより

CENはAlibaba Cloudの所有するグローバルなリージョンで利用することが可能です。またCENを作成後にVPCなどのネットワークをアタッチするだけで、CENにアタッチされたほかのネットワークと相互に通信をすることができます。

背景

Alibaba Cloudに限らず多くのクラウドプロバイダーではVPN Gatewayをサービスとして提供しており、これを利用してIPSec接続を作成することで、VPC間やオンプレのデータセンターとクラウド間をVPN接続することができます。

IPSec接続を作成する際、オプションとしてIKEv1、IKEv2のどちらかを選択することができますが、IKEv1の場合はプロトコルの制約として、単一のCIDRブロックをローカルネットワーク・リモートネットワークとして指定することしかできません。Alibaba CloudのWebコンソール上でIKEv1を利用したIPSec Connectionを作成する際に複数にCIDRを指定しようとすると、以下のようなエラーが表示されます。

image.png

※IKEv1を利用する場合に単一のCIDRブロックしか利用できないのはプロトコルの仕様によるものであり、他のクラウドプロバイダー(例えばGoogle Cloudなど)でも同様の制限があります。

Alibaba Cloudでは複数のCIDRブロックを利用することのできるikev2の利用を推奨していますが、エンタープライズ企業などのクライアントには既にIKEv1を利用している方も多く、現状のIPSec接続を切れない、これ以上ゲートウェイを用意することが難しい、など制約があることもあります。その場合、例えばAlibaba Cloud CENを利用して異なる地域の異なるネットワークへ接続したい場合などに、ikev2への切り替えをすることができない場合があります。

ここではIKEv1プロトコルを利用している場合にCENを利用して複数のCIDRへ接続する方法について紹介しています。

解決方法

具体的な解決方法の前に、今回検証をする環境について触れておきます。

今回紹介する記事では、オンプレのDC間をAlibaba Cloudを経由して接続することを想定しています。図にすると以下のような構成です。

image.png

IKEv1を既に利用しているVPN Gatewayを利用して複数のVPNトンネルを実現するため、ここでは同一のVPN Gatewayに複数のIPSec接続を作成する方法を紹介しています。具体的には以下の図のように、一組のVPN Gatewayのセット間で複数のIPSec接続を作成します。IPSec接続の一つは、既存の接続先を指定し、もう一つは新たに追加する接続先を指定します。2つ目のIPSec接続はそれだけではもちろんローカルの拠点との間で通信を行うことはできませんが、CENを用いてVPC間を接続し、IPSec接続によるルーティング情報をCENに広報することで、リモート拠点からローカル拠点へのルーティング情報が渡され、2つの拠点間での通信が実現します。

image.png

構築方法の紹介

構築環境情報

ここからは実際の環境を構築する手順について紹介します。まず作成をするリソースは以下の通りになります。

リージョン リソース種別 リソース名 その他情報
China (Hong Kong) VPC ikev1test-hongkong CIDR: 192.168.0.0/16
- Vswitch default CIDR: 192.168.0.0/24, Zone: Hongkong Zone B
- VPN Gateway ikev1test-hongkong IP: 8.210.95.193(自動的に決定)
- Customer Gateway ikev1test-hongkong IP: 47.74.25.32
- IPSec ikev1test-hongkong-to-japan shared-key: test1234
- IPSec ikev1test-hongkong-to-us shared-key: test1234
- Route Entry ikev1test-hongkong-to-japan 172.16.0.0/12
- Route Entry ikev1test-hongkong-to-us 10.0.0.0/8
- Security Group ikev1test-hongkong -
- Security Group Rule - ローカル端末のパブリックIPを指定
- Security Group Rule - 172.16.0.0/12
- Security Group Rule - 10.0.0.0/8
- ECS ikev1test-hongkong IP: 192.168.0.219(自動的に決定)
Japan (Tokyo) VPC ikev1test-japan CIDR: 172.16.0.0/12
- Vswitch default CIDR: 172.16.0.0/24, Zone: Tokyo Zone A
- VPN Gateway ikev1test-japan IP: 47.74.25.32(自動的に決定)
- Customer Gateway ikev1test-japan IP: 8.210.95.193
- IPSec ikev1test-japan-to-hongkong shared-key: test1234
- IPSec ikev1test-us-to-hongkong shared-key: test1234
- CEN ikev1test -
- Route Entry ikev1test-japan-to-hongkong 192.168.0.0/16、CENに広報する
- Security Group ikev1test-japan -
- Security Group Rule - ローカル端末のパブリックIPを指定
- Security Group Rule - 192.168.0.0/16
- Security Group Rule - 10.0.0.0/8
- ECS ikev1test-japan IP: 172.16.0.65(自動的に決定)
US (silicon Valley) VPC ikev1test-us CIDR: 10.0.0.0/8
- Vswitch default CIDR: 10.0.0.0/24, Zone: Silicon Valley Zone A
- CEN ikev1test -
- Security Group ikev1test-us -
- Security Group Rule - ローカル端末のパブリックIPを指定
- Security Group Rule - 192.168.0.0/16
- Security Group Rule - 172.16.0.0/12
- ECS ikev1test-us IP: 10.0.0.231(自動的に決定)

構築概要

ここから実際の環境構築を行います。構築作業の流れは以下の通りです。

1、VPCの作成
2、VPN gatewayの作成
3、Customer Gatewayの作成
4、IPSec Connectionの作成
5、CENの作成とVPCのアタッチ
6、Route Entryの設定
7、Security Group / Security Group Ruleの作成
8、ECSの作成
9、接続テスト

1. VPCの作成

まずは3つのVPCを作成します。作成手順は特に記載しませんが、以下のようなパラメータとなるよう作成します。

リソース種別 リソース名 オプション
VPC ikev1test-hongkong CIDR 192.168.0.0/16
Region China (Hong Kong)
Vswitch default CIDR 192.168.0.0/24
Zone Hongkong Zone B
VPC ikev1test-japan CIDR 172.16.0.0/12
Region Japan (Tokyo)
Vswitch default CIDR 172.16.0.0/24
Zone Tokyo Zone A
VPC ikev1test-us CIDR 10.0.0.0/8
Region US (Silicon Valley)
Vswitch default CIDR 10.0.0.0/24
Zone Silicon Valley Zone A

2. VPN gatewayの作成

次にVPN Gatewayを作成します。VPN Gatewayは香港リージョンと日本リージョンで作成します。Alibaba CloudのWebコンソールから「VPC」を選択し、左横のメニューバーから「VPN Gateway」を選択します。VPN Gatewayの画面に遷移したのち、「Create VPN Gateway」を選択し、作成画面に遷移します。

image.png

VPN Gatewayの作成画面では、リソースの名称や作成するリージョンを選択します。ここでは以下のようなパラメータを指定してリソースを作成します。

リソース種別 リソース名 パラメータ
VPN Gateway ikev1test-hongkong Region China (Hong Kong)
VPC ikev1test-hongkong
Assign Vswitch No
Peak Bandwidth 10Mbps
Billing Method Pay ByTraffic
IPSec-VPN Enable
SSL-VPN Disable
Billing Cycle By Hour
VPN Gateway ikev1test-japan Region Japan (Tokyo)
VPC ikev1test-japan
Assign Vswitch No
Peak Bandwidth 10Mbps
Billing Method Pay ByTraffic
IPSec-VPN Enable
SSL-VPN Disable
Billing Cycle By Hour

香港リージョン

image.png

日本リージョン
image.png

作成後は以下のようにVPN Gatewayが確認できます。この時、次項のCustomer Gatewayの作成時にパブリックIPアドレスを指定するため、各VPN Gatewayの持つパブリックIPアドレスを確認しておきます。

香港リージョン
image.png

日本リージョン
image.png

  1. Customer Gatewayの作成
    続いてCustomer Gatewayを作成します。先ほどのVPN Gatewayの画面で左横にあるメニューから「Customer Gateway」を選択し、作成画面に移動します。作成画面では、以下のようにパラメータを指定します。
リソース種別 リソース名 パラメータ
Customer Gateway ikev1test-hongkong IPアドレス JapanリージョンのVPN Gatewayが持つパブリックIPアドレスを指定
Region China (Hong Kong)
Customer Gateway ikev1test-japan IPアドレス HongkongリージョンのVPN Gatewayが持つパブリックIPアドレスを指定
Region Japan (Tokyo)

作成後は以下のようにCustomer Gatewayを確認することができます。

香港リージョン
image.png

日本リージョン
image.png

4. IPSec Connectionの作成

次にIPSec Connectionを作成します。ここでは、先ほど作成したVPN Gateway、Customer Gatewayを利用してIPSecの接続を構成します。

先ほどのCustomer Gatewayの画面にある左横のメニューから「IPSec Connection」を選択し、作成画面に遷移します。ここでは指定できるパラメータが多いため、デフォルトから変更しているパラメータのみを掲載しておきます。

リソース種別 リソース名 パラメータ
IPSec Connection ikev1test-hongkong-to-japan Region China (Hong Kong)
VPN Gateway ikev1test-hongkong
Customer Gateway ikev1test-hongkong
Local Network 192.168.0.0/16
Remote Network 172.16.0.0/12
Pre-Shared Key test1234
version ikev1
IPSec Connection ikev1test-hongkong-to-us Region China (Hong Kong)
VPN Gateway ikev1test-hongkong
Customer Gateway ikev1test-hongkong
Local Network 192.168.0.0/16
Remote Network 10.0.0.0/8
Pre-Shared Key test1234
version ikev1
IPSec Connection ikev1test-japan-to-hongkong Region Japan (Tokyo)
VPN Gateway ikev1test-hongkong
Customer Gateway ikev1test-hongkong
Local Network 172.16.0.0/12
Remote Network 192.168.0.0/16
Pre-Shared Key test1234
version ikev1
IPSec Connection ikev1test-us-to-hongkong Region Japan (Tokyo)
VPN Gateway ikev1test-hongkong
Customer Gateway ikev1test-hongkong
Local Network 10.0.0.0/8
Remote Network 192.168.0.0/16
Pre-Shared Key test1234
version ikev1

まずはローカルDC(香港リージョンのVPC)とローカルVPC(日本リージョンのVPC)を接続するikev1test-hongkong-to-japan ikev1test-japan-to-hongkongの2つのリソースを作成します。以下の画像の通り、必要なパラメータを設定して、それぞれ作成します。

ikev1test-hongkong-to-japan
image.png

image.png

image.png

ikev1test-japan-to-hongkong

image.png

image.png

image.png

なお、IPSec Connectionを作成した時点でRoute Entryの作成を促す画面が表示されます。今回は後ほどまとめてRoute Entryを設定しましたが、IPSec Connectionの作成に合わせて設定をしても問題ありません。

image.png

作成後は以下のようにリソースが確認できます。なお画像では香港リージョンの側がネゴシエーションに失敗していますが、日本リージョンのIPSec接続を作成したのちにネゴシエーションに成功していることは確認しています。

香港リージョン
image.png

日本リージョン
image.png

続いて、ローカルDC(香港リージョンのVPC)とリモートVPC(USリージョンのVPC)とを接続するためのikev1test-hongkong-to-us ikev1test-us-to-hongkongを作成します。

ikev1test-hongkong-to-us

image.png

ikev1test-us-to-hongkong
image.png

作成後は以下の通り表示されます。この時点ではIPSecのトンネル自体はGateway間で確立していますが、疎通は取れない状態です。

香港リージョン
image.png

日本リージョン
image.png

5. CENの作成とVPCのアタッチ

続いてCENの作成を行います。CENでは日本リージョンとUSリージョンのVPCをアタッチします。なお、CENを利用する場合、帯域幅パッケージを購入することで利用する帯域を決定しますが、帯域幅パッケージを購入しない場合でもPing疎通を確認できる程度の最低限の帯域は確保されています。

CENを作成するには、Alibaba CloudのWebコンソールから「Cloud Enterprise Network」を選択し、CENの管理画面に遷移します。

image.png

「Create CEN Instance」を選択し、CENの作成画面に遷移します。ここではCENの名称とアタッチする一つ目のVPCを選択します。

image.png

CENを作成後は以下のように表示されます。もう一つのVPCをアタッチするため、作成したばかりのCENを選択します。

image.png

CEN毎のリソース画面に遷移した後、「Attach Network」を選択します。

image.png

USリージョンのVPCを選択し、アタッチします。

image.png

USリージョンのVPCをアタッチすると、以下のように2つのVPCがCENにアタッチされたことが確認できます。

image.png

6. Route Entryの設定

次に各VPC間で通信を行うため、Route Entryを設定します。

まず香港リージョンのRoute Entryを設定します。先ほどのCEN管理画面に左横にあるメニューから「Route Table」を選択します。VPCを作成した時点でRoute Tableは作成されており、今回利用するVPCと関連したRoute Tableを選択します。

image.png

ikev1test-hongkongに関連付けられているRoute Tableの管理画面に遷移したら「Add Route Entry」を選択します。

image.png

まずは香港リージョンから日本リージョンへのルーティングを追加します。Next Hopとして作成したVPN Gatewayのikev1test-hongkongを指定します。

image.png

次に香港リージョンからUSリージョンへのルーティングを追加します。

image.png

Route Entryを追加した後は、以下のように表示されます。

image.png

次に日本リージョンのRoute Tableの設定を変更します。日本リージョンのVPCであるikev1test-japanと関連付けられたRoute Tableを選択します。ikev1test-japanが持つCIDRの172.16.0.0/12がCENに向けて広報されているのが確認できます。

image.png

ここでは先ほど香港リージョンで追加したRoute Entryの情報が確認できます。このRoute Entry情報をCENに向けて広報するため、「Publish」という項目を選択します。

image.png

image.png

確認画面が表示されるので許可します。

image.png

先ほどの項目が「Published」と表示されていればCENへの広報が有効になっています。なお、Publishの設定が反映されるまでしばらく時間がかかります。

image.png

image.png

最後はUSリージョンのRoute Tableですが、こちらは特に必要な設定変更はありません。一応USリージョンのVPCであるikev1test-usに紐づいたRoute Tableを確認すると、以下のように表示されます。

image.png

ここまでで3つのVPCの間で通信を行う環境が用意できました。

7. Security Group / Security Group Ruleの作成

ここからは、通信テストを行うための準備となります。まずはVPC間での通信を許可するため、Security Group及びSecurity Group Ruleを設定し、VPC間での通信を許可するルールに加え、ローカルの操作端末からECSにアクセスするのに必要なパブリックIPアドレスの許可設定を追加します。

各Security Groupとルールの設定は以下の通りになります。

香港リージョン
image.png

日本リージョン
image.png

USリージョン
image.png

8. ECSの作成

次に疎通確認を行うECSインスタンスを各リージョンに作成します。ここでは特に気を付けるべき点はありませんが、作成したVPC・VswitchとECSとを紐づけることを忘れないようにしましょう。

香港リージョン
image.png

日本リージョン
image.png

USリージョン
image.png

9. 接続テスト

最後にECS間でPing疎通性を確認します。作成したECSにSSH接続し、それぞれのECSから対向に向けてPingコマンドを実行します。

# Hong KongリージョンのECS
# Hong KongからJapan
[root@ikev1test-hongkong ~]# ping 172.16.0.65
PING 172.16.0.65 (172.16.0.65) 56(84) bytes of data.
64 bytes from 172.16.0.65: icmp_seq=1 ttl=62 time=53.3 ms
64 bytes from 172.16.0.65: icmp_seq=2 ttl=62 time=53.3 ms
64 bytes from 172.16.0.65: icmp_seq=3 ttl=62 time=53.3 ms
64 bytes from 172.16.0.65: icmp_seq=4 ttl=62 time=53.4 ms
64 bytes from 172.16.0.65: icmp_seq=5 ttl=62 time=53.3 ms
64 bytes from 172.16.0.65: icmp_seq=6 ttl=62 time=53.3 ms
^C
--- 172.16.0.65 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5006ms
rtt min/avg/max/mdev = 53.334/53.385/53.492/0.271 ms


# Hong KongからUS
[root@ikev1test-hongkong ~]# ping 10.0.0.231
PING 10.0.0.231 (10.0.0.231) 56(84) bytes of data.
64 bytes from 10.0.0.231: icmp_seq=1 ttl=62 time=158 ms
64 bytes from 10.0.0.231: icmp_seq=2 ttl=62 time=158 ms
64 bytes from 10.0.0.231: icmp_seq=3 ttl=62 time=158 ms
64 bytes from 10.0.0.231: icmp_seq=4 ttl=62 time=158 ms
64 bytes from 10.0.0.231: icmp_seq=5 ttl=62 time=158 ms
64 bytes from 10.0.0.231: icmp_seq=6 ttl=62 time=158 ms
^C
--- 10.0.0.231 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5005ms
rtt min/avg/max/mdev = 158.004/158.099/158.436/0.154 ms


# JapanリージョンのECS
# JapanからHong Kong
[root@ikev1test-japan ~]# ping 192.168.0.219
PING 192.168.0.219 (192.168.0.219) 56(84) bytes of data.
64 bytes from 192.168.0.219: icmp_seq=1 ttl=62 time=53.2 ms
64 bytes from 192.168.0.219: icmp_seq=2 ttl=62 time=53.3 ms
64 bytes from 192.168.0.219: icmp_seq=3 ttl=62 time=56.8 ms
64 bytes from 192.168.0.219: icmp_seq=4 ttl=62 time=53.4 ms
64 bytes from 192.168.0.219: icmp_seq=5 ttl=62 time=53.2 ms
64 bytes from 192.168.0.219: icmp_seq=6 ttl=62 time=53.2 ms
^C
--- 192.168.0.219 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5007ms
rtt min/avg/max/mdev = 53.220/53.905/56.893/1.364 ms

# JapanからUS
[root@ikev1test-japan ~]# ping 10.0.0.231
PING 10.0.0.231 (10.0.0.231) 56(84) bytes of data.
64 bytes from 10.0.0.231: icmp_seq=1 ttl=64 time=104 ms
64 bytes from 10.0.0.231: icmp_seq=2 ttl=64 time=104 ms
64 bytes from 10.0.0.231: icmp_seq=3 ttl=64 time=104 ms
64 bytes from 10.0.0.231: icmp_seq=4 ttl=64 time=104 ms
64 bytes from 10.0.0.231: icmp_seq=5 ttl=64 time=104 ms
64 bytes from 10.0.0.231: icmp_seq=6 ttl=64 time=104 ms
^C
--- 10.0.0.231 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5007ms
rtt min/avg/max/mdev = 104.643/104.660/104.680/0.373 ms


# USリージョンのECS
# USからHong Kong
[root@ikev1test-us ~]# ping 192.168.0.219
PING 192.168.0.219 (192.168.0.219) 56(84) bytes of data.
64 bytes from 192.168.0.219: icmp_seq=1 ttl=62 time=146 ms
64 bytes from 192.168.0.219: icmp_seq=2 ttl=62 time=146 ms
64 bytes from 192.168.0.219: icmp_seq=3 ttl=62 time=146 ms
64 bytes from 192.168.0.219: icmp_seq=4 ttl=62 time=146 ms
64 bytes from 192.168.0.219: icmp_seq=5 ttl=62 time=146 ms
64 bytes from 192.168.0.219: icmp_seq=6 ttl=62 time=146 ms
^C
--- 192.168.0.219 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5008ms
rtt min/avg/max/mdev = 146.716/146.823/146.987/0.391 ms

# USからJapan
[root@ikev1test-us ~]# ping 172.16.0.65
PING 172.16.0.65 (172.16.0.65) 56(84) bytes of data.
64 bytes from 172.16.0.65: icmp_seq=1 ttl=64 time=115 ms
64 bytes from 172.16.0.65: icmp_seq=2 ttl=64 time=115 ms
64 bytes from 172.16.0.65: icmp_seq=3 ttl=64 time=115 ms
64 bytes from 172.16.0.65: icmp_seq=4 ttl=64 time=115 ms
64 bytes from 172.16.0.65: icmp_seq=5 ttl=64 time=115 ms
64 bytes from 172.16.0.65: icmp_seq=6 ttl=64 time=115 ms
^C
--- 172.16.0.65 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5009ms
rtt min/avg/max/mdev = 115.847/115.867/115.884/0.013 ms

上記の通り、ECS間でPing疎通を確認することができました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?