AWS Transit GatewayとAlibaba Cloud CENの接続

AWS運用自動化サービス「Cloud Automator」

はじめに

2018年11月にAWS Transit Gatewayが登場しました。
これは複数のVPCを接続するHUBとなるサービスです。
一方、Alibaba CloudではCEN(Cloud Enterprise Network)という同様のサービスが既にあります。
まず、両サービスの構成図を比較してみましょう。

なお、この記事はAlibaba Cloudアドベントカレンダー2018の12日目となります。

AWS Transit Gateway

https://aws.amazon.com/jp/transit-gateway/

Alibaba Cloud CEN

https://jp.alibabacloud.com/help/doc-detail/59870.htm

どうでしょう?とても似てますよね。
AWSのVPCはTransit Gatewayを介して、お互いに通信可能です。
Alibaba CloudのVPCもCENを介して、お互いに通信可能です。
それなら、Transit GatewayとCENを接続すれば、全て通信可能だと思いませんか?

こんな構成を作って見ました。

Transit GatewayとCENをVPN接続し、両クラウドの全VPCが通信可能となる構成です。

構築手順

1. VPC作成

普通にVPC、サブネットなどを作ります。
ここの手順説明は省略させていただきますが、図のような感じでVPCを作成しました。

2. CENの作成

2-1.CEN作成

Alibaba CloudのコンソールでExpress Connectを選択します。
Express ConnectとCENは別サービスなのですが、設定画面への入り口は現在のところ共通になっています。

CENの作成をクリックします。

CENの名前と接続するVPCを選択します。
東京側のVPCでも北京側のVPCでもどちらでも問題ありません。(後で他方も接続するので)

作成完成すると、以下のような画面が表示されます。

2-2.CENにVPCをアタッチ

作成したCENインスタンスをクリックします。

ネットワークのアタッチをクリックします。

CEN作成時にアタッチしていなかったVPNをここでアタッチします。

この時点でAlibaba CloudのVPC間の通信は完了です。
なお、リージョン跨ぎの帯域は標準1Kbpsとなります。
帯域購入もできますが、今回は疎通テストをゴールとするため、そのままとします。

CENの状態は下記のようになります。
Japan(Tokyo)とChina(Beijing)のVPCが一つずつCENにアタッチされました。

ルートも自動設定です。
VPCのCIDRではなく、実際に設定されているサブネット向けのルートが自動登録されます。
最終的にAWS向けのルートも入る必要がありますが、それは作業の終盤に行います。

3. Transit Gatewayの作成

3-1. Transit Gateway作成

AWSコンソールのVPC設定画面の左下の方にTransit Gatewayがあるのでクリックします。
(但し、非対応リージョンの場合は表示されません。)

Create Transit Gatewayをクリックします。

いろいろ設定項目ありますが、Nameタグの設定以外はデフォルトで大丈夫です。

3-2.Transit GatewayにVPCをアタッチ

作成したTransit GatewayにVPCをアタッチします。
Transit Gateway Attachmentsをクリックします。

Create Transit Gateway Attachmentをクリックします。

下記のように設定を入力し、作成します。

Transit GatewayにアタッチしたいVPCの数だけ作業を繰り返します。
今回は二つのVPCなので、以下のようになります。
なお、後の工程でVPNを追加することになります。

3-3. Subnet Route Tableにルート追加

Transit GatewayにVPCが接続されたのですが、実際はまだVPC間の通信はできません。
サブネットに紐づいているRouteTableにTransit Gatewayを経由させるエントリを追加する必要があります。

今回はAWSの別VPC(172.17.0.0/16)をTransit Gateway経由にするだけでなく、Alibaba Cloudのアドレス(10.0.0.0/8と192.168.0.0/16)へもTransit Gateway経由にするため、エントリを3つ追加しました。
各サブネットのRouteTableで同様の設定が必要です。

この時点でAWSのVPC間の通信は完了です。

4.VPN Gatewayの作成

両クラウドにVPN Gatewayを作成します。
なお、Alibaba CloudとAWSのVPN接続についてはSBCloud様の下記ページを参考とさせていただきました。

Alibaba CloudとAWSをVPN接続する

ちなみに本記事の冒頭の構成図を見てもらうとわかるのですが、微妙に配置に違いがあります。

  • Alibaba CloudのVPN Gatewayは、いずれかのVPCに接続する
  • AWSのVPN Gatewayは、Transit Gatewayに直接接続する

4-1.Alibaba Cloud の VPN Gateway作成

Alibaba CloudのコンソールでVPN Gatewayの作成をします。

作成後、VPN GatewayのIPアドレスが確認できます。
このアドレスは、AWS側でVPN設定をする時に使います。

4-2.AWS の VPN作成

AWSで普通にVPN作成する時は、「VPN接続」という項目で設定しますが、Transit Gatewayの場合は異なります。
Transit Gateway Attachmentsで設定します。
「3-2.Transit GatewayにVPCをアタッチ」で設定したのと同じ箇所です。

上記を行うと、「VPN接続」欄にVPN接続が表示されます。
AWS側のIPアドレスが確認できます。
このアドレスは、Alibaba Cloud側でVPN設定をする時に使います。

4-3.Alibaba Cloud の Customer Gateway作成

Alibaba CloudのコンソールでCustomer Gatewayを作成します。

4-4. Alibaba Cloud の VPN接続作成

IPsec ConnectionsでVPN接続の作成をします。

AWS側とAlibaba Cloudの双方にVPC CIDRが複数あるため、「追加ローカルネットワーク」「追加リモートネットワーク」をしたくなります。
それをするためにはVPNをIKEv2とする必要があります。
ところが、AWSのVPNはIKEv1しか使えません。
やや苦し紛れに以下のように設定したところ、問題なく通信できました。
– ローカルネットワーク:0.0.0.0/0
– リモートネットワーク:172.16.0.0/12

VPN接続が成功となりました。

5. 再びルート設定

5-1. Transit Gateway Route Tableにルートを追加

Transit Gateway Route TableにAlibaba Cloud向けのルートエントリを追加します。
「3-3. Subnet Route Tableにルート追加」では、サブネットからTransit Gatewayまでのルートを追加しました。
ここではTransit GatewayからAlibaba CloudへのルートをVPNに向ける設定を追加します。

5-2. Alibaba Cloud のへルート追加

VPN GatewayのあるVPC(東京VPC)でAWS向けのルートをVPNに向ける設定を追加します。
これで東京VPCとAWSのVPCは通信可能になります。
ところが、これだけだと北京VPCはAWSと通信できません。

CENのルートステータスを 公開 にすると、CENのルートテーブルにこのルートが伝播し、北京VPCもAWSと接続できるようになります。

これで完成です。

疎通テスト

各VPCからpingで疎通テストをしてみます。

Alibaba (北京) 〜 AWS(バージニア) 

Alibaba (北京) 〜 Alibaba (東京)

AWS(バージニア) 〜 AWS(バージニア) 

AWS(バージニア) 〜 Alibaba(東京) 

AWS(バージニア) 〜 Alibaba(北京) 

全て上手くつながりましたね。

AWS運用自動化サービス「Cloud Automator」