AWS Azure

マネージドサービスだけでAzureとAWSを接続する方法。

はじめに

2019/2/6 AWSでサイト対サイト VPNでIKEv2に対応したニュースが入ってきました。
AWS Site-to-Site VPN Now Supports IKEv2
https://aws.amazon.com/about-aws/whats-new/2019/02/aws-site-to-site-vpn-now-supports-ikev2/

AzureとAWSを接続する際の壁になっていたのがAWSがIKEv1のみにしか対応していなかった点です。
今回、IKEv2に対応したことで双方向での接続が実現可能となりました。

ただし、注意事項があります。
BGPが利用できません(設定によってはできるかもしれません)。

接続構成図は以下になります。

手順は以下になります。
Azure側
1、仮想ネットワークの作成
2、ゲートウェイサブネットの作成
3、パブリックIPの作成
4、仮想ネットワークゲートウェイの作成

AWS側
5、VPCの作成
6、サブネットの作成
7、インターネットゲートウェイの作成(省略可)
8、カスタマーゲートウェイを静的で作成
9、バーチャルプライベートゲートウェイの作成
10、VPNコネクションを静的で作成
11、コンフィグレーションファイルをダウンロード

Azure側
12、ローカルネットワークゲートウェイの作成
13、接続の作成

AWS側
14、ルーティングテーブルにバーチャルプライベートゲートウェイを追加

オプション
Azure側
15、2つの接続を設定する

以下、Step by Stepで説明していきます。

1、仮想ネットワークの作成

仮想ネットワークを作成します。
Azure側のセグメントを10.0.0.0/16としています。

2、ゲートウェイサブネットの作成

ゲートウェイサブネットを作成します。
仮想ネットワークの画面からサブネットを開き、ゲートウェイ サブネットをクリックし作成します。

1で作成したサブネットは別のCIDRで作成します。

作成されたことを確認します。

3、パブリックIPの作成

パブリックIPを作成します。

4、仮想ネットワークゲートウェイの作成

仮想ネットワークゲートウェイを作成します。

5、VPCの作成

VPCの作成します。
AWS側のセグメントを192.168.0.0/16としています。

6、サブネットの作成

サブネットを作成します。

7、インターネットゲートウェイの作成(省略可)

インターネットゲートウェイの作成(省略可)します。

インターネットゲートウェイをVPCにアタッチします。

ルートテーブルに0.0.0.0/0でインターネットゲートウェイを指定します。

8、カスタマーゲートウェイを静的で作成

Azureの仮想ネットワークゲートウェイからIPアドレスを確認します。

カスタマーゲートウェイを静的で作成します。IPアドレスに前項で確認したIPアドレスを入力します。

9、バーチャルプライベートゲートウェイの作成

バーチャルプライベートゲートウェイの作成します。

10、VPNコネクションを静的で作成

VPNコネクションを静的で作成します。プレフィックスにはAzure側のサブネット追加します。

11、コンフィグレーションファイルをダウンロード

コンフィグレーションファイルをダウンロードします。選択するのはGenericです。

以下を確認します。
IPSec Tunnel #1の
Pre-Shared Key
Outside IP Addresses:
-Virtual Private Gateway

12、ローカルネットワークゲートウェイの作成

ローカルネットワークゲートウェイの作成します。
IPアドレスには上記で確認したIPアドレス(Virtual Private Gateway)を設定しあす。
アドレススペースにはAWS側のVPCセグメントを入力します。

13、接続の作成

仮想ネットワークゲートウェイの接続から追加します。

確認した共通キー(Pre-Shared Key)を入力します。

接続済みになることを確認します。

14、ルーティングテーブルにバーチャルプライベートゲートウェイを追加

ルーティングテーブルにバーチャルプライベートゲートウェイを追加します。

15、2つの接続を設定する

ローカルネットワークゲートウェイを別途作成します。
この時、ダウンロードしたファイルのIPSec Tunnel #2を確認し入力します。
作成後、作成したローカルネットワークゲートウェイを指定し接続を作成します。

2つの接続を設定することで、片方のコネクションが何かの拍子に切れた場合でも通信が継続されます。

疎通確認

Azure、AWSにそれぞれ仮想マシンを起動し疎通が行えることを確認します。

以上で、すべての作業は完了です。

追記 スループット

iperfを利用してスループットをざっくり測定しました。
Azure:Standard D2s v3 (2 vcpu 数、8 GB メモリ)
AWS:m5.large (2 vcpu 数、8 GB メモリ)

Azure→AWS

------------------------------------------------------------
Client connecting to 192.168.0.5, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[  3] local 10.0.0.4 port 51160 connected with 192.168.0.5 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   659 MBytes   553 Mbits/sec

AWS→Azure

------------------------------------------------------------
Client connecting to 10.0.0.4, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.5 port 50116 connected with 10.0.0.4 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   759 MBytes   636 Mbits/sec

普通に専用線サービスより早いのではなかろうか。

まとめ

AWSがIKEv2対応したことでAzureと直接接続が行えることを確認できました。
これまで、AzureとAWSをVPNするにはWindowsサーバーなどを用意する必要がありました。
マネージドサービスのみでVPNを張れることで仮想マシンを立てる必要性がないことや、
管理する必要性が減り運用をほぼ気にすることがなくなりました。
AzureとAWSが相互にマネージドな環境で接続できることで今後様々な用途で利用できると思います。
Azureが得意な部分はAzureで、AWSが得意な部分はAWSで利用したり、DRで利用したり多くの利用価値があると思います。
さらにマルチクラウドがすすむでしょう!!

何年か前から欲しくてたまらない機能だったのでとてもうれしいです!

-AWS, Azure
-, , ,