はじめに
Azure とAWSをVPNで接続する方法として、VNetとVPCをVPNで接続することができますが、これでは1:1でのネットワークセグメントしか接続が行えません。これでは、拠点同士で結んだにすぎません。そこでAzure Virtual WANとAWS Transit Gatewayを接続する方法を検討することができます。両者をつなぐことで複数のリージョン、仮想ネットワーク、VPCをまたいで通信が行えるようになります。今回はその構築手順を解説していきます。
構成
AzureとAWSで構成されます。
今回の構築範囲として、ネットワークの部分を中心に解説してます。
そのため、前提条件として以下が立ち上がっていることが必要です。
Azure
- VNETが構成されている
- 仮想マシン(テスト用)が構築されている
- 仮想マシンはSSHもしくはRDPで接続できる
AWS
- VPCが構成されている
- EC2(テスト用)が構築されている
- EC2はSSHもしくはRDPで接続できる
- SGでICMPをAzure側IPに許可
ネットワーク
- セグメントは被らないこと(超重要)
構築手順
構築には以下の手順で作成していきます。
また、構築にはAzure、AWSともに経験者向けの解説になっており端折っているところもあります。
Azure側作業
- Virtual WANの作成
- 仮想ハブを作成 x2
- 仮想ネットワークのリージョン毎に作成
- 仮想ネットワークを各仮想ハブに追加
- 仮想ハブにVPNゲートウェイの作成
- VPNサイトの作成
- リンクの作成
- VNPサイトの接続
AWS側作業
- Transit Gatewayの作成
- Transit Gatewayのアタッチメントを作成
- 事前に作成してるVPCをアタッチする x2
- カスタマーゲートウェイの作成
- サイト間のVPN接続を作成
- ルートテーブルの設定
作業フロー
作業のフローを可視化しました。少々、作業は複雑です。Azure、AWSを交互に作業を進めていきます。
構築
構築は手順のフローに沿った形で進めます。
Virtual WANの作成
必要事項の入力してVirtual WANを作成します。
- 名前:任意
- 種類:Standard
仮想ハブの作成
Virtual WANのハブを開き、新しいハブを作成します。
仮想ハブは仮想ネットワークと同じリージョン毎に用意するのが良いと思います。ハブが異なるリージョンの場合は高レイテンシーになる可能性があります。
必要事項を入力します。
- 地域:東日本(これは仮想ネットワークのリージョンと同じ)
- 名前:任意
- ハブ プライベート アドレス空間:192.168.0.0/24(任意のIPアドレス、他のセグメントと被らないこと)
その他のゲートウェイは作成しません。サイト対サイトのゲートウェイについては後で作成します。
北米東部(環境に合わせて)を同様に作成します。
仮想ネットワーク(VNet)を接続
Virtual WANの仮想ネットワーク接続を開き、接続を追加します。
必要事項を入力します。
- 接続名:任意
- ハブ:上記で作成したハブを選択(接続する仮想ネットワークのリージョンのハブを選択)
- 仮想ネットワーク:接続する仮想ネットワークを選択
- [なし]に伝達:いいえ
- ルートテーブルの関連付け:Default
基本的にルートテーブルは初期設定のままで問題ないです。複雑なネットワーク構成の場合は設定が必要な箇所です。
仮想ハブを作成直後の場合は下記のようなエラーが出る場合があります。作成後、30分程度待つ必要があります。
リージョン毎に仮想ネットワークを接続します。
VPNゲートウェイの作成
AWSと接続するためのVPNゲートウェイを作成します。ここでAWS側に設定するパブリックIPアドレスが付与されます。
今回は東日本の仮想ハブをメインとして使います。
VPNゲートウェイを作成する仮想ハブを開きます。VPN(サイトからサイトへ)を開きVPNゲートウェイを作成します。
必要事項を選択します。
- ゲートウェイ スケールユニット:1スケールユニット - 500Mbps x 2(AWS側のトンネルは最大 1.25 Gbpsまで対応するようなので最大3スケールユニット)
- ルーティングの優先順位:Microsoftネットワーク
ゲートウェイの作成には30分程度かかります。
作成後にVPNゲートウェイの作成後に基本からVPNゲートウェイの構成を確認します。
VPN Gateway インスタンス0のパブリックIPアドレスを確認します。これはAWS側のカスタマーゲートウェイに設定するIPアドレスになります。
次にAWS側の作業に移ります。
カスタマーゲートウェイの作成
AWSのコンソールよりカスタマーゲートウェイを作成します。
必要事項を入力します。
- 名前:任意
- ルーティング:静的
- IPアドレス:上記で確認したVPNゲートウェイのパブリックIPアドレス
その他は空白
Transit Gatewayの作成
Transit Gatewayを作成します。
必要事項を入力します。
- 名前タグ:任意
他は空白で問題ないです。設定はそのままです。
アタッチメントの作成
Transit Gatewayのアタッチメントを作成します。
事前に作成済みのVPCx2のアタッチメントを作成します。
必要事項を入力します。
- 名前タグ:任意(オプション)
- Transit Gateway ID:上記で作成したTransit Gatewayを選択
- アタッチメントタイプ:VPC
- VPC ID:事前に作成済みのVPCを1つ選択します。
1つ作成後は同様に、残りのVPCのアタッチメントを作成します。
設定は変更しません。
VPN接続の作成
サイト間のVPN接続を作成します。ここでAzure側に設定するパブリックIPアドレスが付与されます。
また、Pre-Shared Keyも付与されます。
必要事項を入力します。
- 名前タグ:任意
- Target Gateway Type:Transit Gateway
- Transit Gateway:上記で作成したTransit Gatewayを選択
- カスタマーゲートウェイID:上記で作成したカスタマーゲートウェイを選択
- ルーティングオプション:静的(BGPでは動作しません)
これ以外は設定は変更しません。
作成後は設定のダウンロードを行います。
以下を確認します。
- IPSec Tunnel #1のPre-Shared Key
- IPSec Tunnel #1のOutside IP Addresses : - Virtual Private Gateway
この2つをAzure側で設定します。
Azure側の作業に移ります
VPNサイトの作成
Azure側のポータルでVPNサイトの作成を行います。
作成した東日本の仮想ハブにあるVPNゲートウェイを開きます。
右下よりVPNサイトを作成します。
必要事項を入力します。
- 地域:仮想ハブと同じリージョンを選択します(異なる場合にはレイテンシーの問が発生します)
- 名前:任意
- デバイスベンダー:任意(文字列は接続には関係ありませんが必須)
- プライベートアドレス空間:AWS側のVPCのサブネットをそれぞれ追加
次にリンクを作成します。
必要事項を入力します。
- リンク名:任意
- リンク速度:任意
- リンクプロバイダー名:任意
- リンクIPアドレスまたはFQDN:AWS側でVPN接続を作成時に付与されたパブリックIPアドレス
その他は空欄です。前画面でプライベートアドレス空間を入力しない場合は必須になります。
ここで動的(BGP)なのか静的ルーティングなのか決まります。
VPNサイトの接続
作成したVPNサイトを接続します。
フィルターをいったん解除して作成したVPNサイトを選択し、VPNサイトの接続を行います。
接続する設定画面で、上記で確認したPre-Shared Keyを入力します。
ルートテーブルの設定
VPCのルートテーブルの設定を行います。
Azure側のサブネット、AWS(自分以外)のサブネットのターゲットとしてTransit Gatewayを選択します。
Transit Gateway ルートテーブルを設定します。
Azure側のサブネットをアタッチメントVPNを追加します。
サブネットをすべて追加します。
接続確認
最後にAzureとAWSが接続されているか確認します。
ステータスがアップになっていれば接続されていることを示します。
これで全ての設定は完了です。
疎通確認
疎通確認のため確認用にたてた仮想マシン、EC2にログインしてPingを打ちます。
EC2側は事前にSGでICMPを許可する必要があります。
同様に北米東部からも疎通確認を行ってみます。
これでグローバルなネットワークが構築できました。
疎通が行えない場合はルートテーブルの設定に問題がる可能があります。確認してみてください。
余談
Transit Gatewayを複数のリージョンで運用する場合、Transit Gateway Peeringを利用し接続します。
この場合にはAzure、AWSともにルートテーブルの設定の追加が必要ですが通信可能です。
まとめ
Azure Virtual WANとAWS Transit Gatewayを接続してグローバにマルチクラウド環境を構築しました。VNetとVPCを1:1で繋げるのではなくAzureとAWSを繋げるといってもよいと思います。これは専用線ではなくAzure、AWSのVPN機能を用いた接続方法になり、簡単に用意できリードタイムも大幅に節約できます。AzureとAWS、リージョンがシームレスに繋がることで幅広い利用方法ができるのではないでしょうか。このような、使い方も増えてくれると個人的には嬉しいです。