Alibaba Cloud とAWS をVPNで接続する

Alibaba Cloud とAWS をIPsec で接続する手順を紹介します。 Alibaba もAWS もほぼ既定値の設定で簡単に接続できることが確認できました。

Alibaba Cloud とAWS のIPsec 接続自体は以下のSBクラウドさんのブログでも紹介されていますが、SBクラウドさんのブログではIKEv1 での接続、今回はIKEv2での接続という点で役に立つと思います。

少し補足しますと、上記のSBクラウドさんの記事は2018年7月です。 また、AWS のVPN がIKE v2 に対応したのは2019年2月です。 従って、2018年7月時点ではIKEv1のみが接続可能な構成、2019年2月以降はIKEv2も選択肢になったということになります。

AWS サイト間 VPN が IKEv2 に対応
投稿日: Feb 6, 2019
AWS サイト間 VPN がトンネルセットアップの Internet Key Exchange version 2 (IKEv2) に対応しました。 本日より、新しい VPN 接続は IKEv2 または IKEv1 を使用して、VPN セッションをネゴシエートできるようになりました。これによりお客様は、強力な新しいプロトコルを使用して VPN を確立できます。

この機能を今すぐ活用するには、新しい VPN 接続を作成する必要があります。使用する IKE のバージョンを制御するには、カスタマーゲートウェイデバイスの設定を更新してください。AWS 側のエンドポイントが同一のプロトコルを使用してセッションをネゴシエートします。この機能は AWS Classic VPN では利用できません。既存の AWS VPN 接続向けの IKEv2 のサポートも間もなく追加される予定です。

AWS サイト間 VPN の詳細については、ウェブサイトドキュメントを参照してください。

https://aws.amazon.com/jp/about-aws/whats-new/2019/02/aws-site-to-site-vpn-now-supports-ikev2/

1. テスト環境

今回のテスト環境の構成は以下の通りです。

2. [Alibaba Cloud] VPN Gateway の購入

まずはAlibaba Cloud VPN Gateway のインスタンスを作成します。

東京リージョンに作成します。 10Mbps 対応のインスタンスで10.470円/時間の従量課金で利用可能です。

使用許諾を確認し、有効化します。

数分まつとステータスが”正常”になります。 IPアドレスはのちほどAWS 側のカスタマーゲートウェイの設定で使用します。

Alibaba もAWS もVPN Gateway のインスタンスは短時間で起動します。 Azure は結構時間がかかりますが何故なのでしょうかね???

3. [AWS] 仮想VPN ゲートウェイの作成

次はAWS 側にVPN ゲートウェイを作成します。

名前タグは任意の名称を設定し、他は既定値のまま進めます。 

仮想プライベートゲートウェイのリンクをクリックします。

既存のVPC にアタッチします。

リストボックスからVPC を選択肢、”はい、アタッチします”をクリックします。

4. [AWS] カスタマーゲートウェイの作成

次にカスタマーゲートウェイを作成します。 ここでは接続の対向となるAlibaba Cloud VPN Gateway の情報をカスタマーゲートウェイとして登録します。

名前は任意、IPアドレスにはAlibaba Cloud VPN Gateway のパブリックIPアドレスを指定します。

”閉じる”をクリックします。

作成が正常に成功したことを確認します。

5. [AWS] VPN 接続の作成

ここではIPsec の接続の設定を行います。 なお、この時点では対向のAlibaba Cloud 側の設定は行っていません。 Alibaba Cloud 側の設定が終わるまではIPsec のコネクションは確立されません。

必要な情報を入力または選択します。 ルーティングは静的を選択し、対向のAlibaba Cloud のCIDRを指定します。 また、トンネルオプションでは事前共有キーに任意の文字列を指定します。 このキーはAlibaba Cloud 側でも同じ文字列を指定する必要があります。

リクエストが成功したことを確認し、”閉じる”をクリックします。

状態は”保留中”です。 先述のとおり、対向先のAlibaba Cloud 側の設定は行っていないため、IPsec のトンネルは確立されません。

6. [AWS] ルートテーブルの追加

AWS 側の静的ルートを追加します。ルートテーブル>ルート>ルートの編集をクリックします。

接続先にAlibaba Cloud 側のCIDR (10.10.10.0/24)を指定します。 ターゲットにはAWS のVPN を指定し、”ルートの保存”をクリックします。

正常に完了したことを確認し、”閉じる”をクリックします。

追加したルートエントリが反映されます。

7. [Alibaba Cloud] カスタマーゲートウェイの作成

Alibaba Cloud 側でカスタマーゲートウェイを作成します。 今度は、AWSのVPNゲートウェイの情報をカスタマーゲートウェイとして設定します。

名前は任意、IPアドレスにAWS 側のパブリックIPアドレスを指定します。

正常に登録されたことを確認します。

8. [Alibaba Cloud] VPN 接続の作成

Alibaba Cloud 側でIPsec の設定を実施します。名前は任意、ローカルネットワークにはAlibaba Cloud 側のCIDRを、リモートネットワークにはAWS 側のCIDRを指定します。

”高度な設定”を展開します。

高度な設定では事前共有鍵を指定します 先にAWS側で指定したものと同じ文字列を指定します。

また、今回はIKEv2 でIPsec を構成します。

接続完了のポップアップでは、”OK”をクリックし、ルーティングの設定に進みます。

”ポリシーベースルーティング”タブをクリックします。

”公開”をクリックします。 ルーティング情報(Destinationなど)は自動的に定義されるのですが、この公開は手動で行う必要があります。

”OK”をクリックします。

ルートエントリが追加されたことを確認します。

9.IPsec 接続状態の確認

これまでの手順でAlibaba CloudおよびAWSの双方でVPN に関する設定は完了です。 正常にIPsec トンネルが確立されているかを確認します。

9.1. [Alibaba Cloud] IPsec 接続状態の確認

Alibaba Cloud 側は”IPsec Connections”の画面で確認可能です。 接続ステータスを確認します。

9.2. [AWS] IPsec 接続状態の確認

AWS側は”サイト間のVPN接続”で状態を確認します。

Alibaba CloudもAWSも正常にIPsec トンネルが確立されたことが確認出来ました。

10. 疎通確認

Alibaba Cloud 上の仮想マシンとAWS 上の仮想マシンの疎通を確認します。今回はAWS EC2上のUbuntuからAlibaba Cloud ECS のUbuntuへPingを実行します。 

正常に応答されることが確認出来ました。 Latency は6msと速くはないですね。 別にAlibaba とAzure をIPsec で接続した場合は3ms 程度でした。

11. まとめ

Alibaba Cloud VPN Gateway とAWS VPN の接続性が確認出来ました。 AlibabaおよびAWSともIPsec のパラメータは既定値から変更する必要は特にありませんでした。

最後に接続がうまくいかない場合のトラブルシューティングのポイントを何点か列挙します。

  1. IPsec トンネルが確立出来ない場合
    • 事前共有鍵が双方で同じものを指定しているか確認しましょう
    • IKEのバージョンが同じ(v1 or v2)か確認しましょう
    • その他ネゴシエーションモード、認証アルゴリズム、DHモードなども合わせる必要がありますが、今回のテストではIKEv2で接続する場合はAlibabaもAWSも既定値のままで接続出来ているので、上記の鍵かバージョンの整合性が接続失敗の原因になると思います。
  2. トンネルは確立しているが仮想マシン間で通信できない
    • Alibaba Cloud とAWS の双方でルーティングの宛先CIDRに誤りがないか確認しましょう
    • Alibaba Cloud 側で指定するローカルネットワークとリモートネットワークのCIDRに誤りがないか確認しましょう
    • VPN Gateway のインスタンスと仮想マシンが想定しているVPCに属していることを確認しましょう
    • 仮想マシン側でICMP を応答できる状態(Firewallでブロックしていない)であることを確認しましょう