はじめに
AzureとAWSの両方を利用して、クラウド基盤を構築する機会が増えてきたと思います。そして両者をつなぐネットワークを構築する場合もあります。
以前にも両社をつなぐネットワークを構築する記事を書きました。
-
マネージドサービスだけでAzureとAWSを接続する方法。 - 技術的な何か。
はじめに 2019/2/6 AWSでサイト対サイト VPNでIKEv2に対応したニュースが入ってきました。 AWS Site-to-Site VPN Now Supports IKEv2 https:
level69.net
このときはAWSがIKEv2に対応したことを気に書きました。しかし、このころは冗長構成で構築できませんでした。
そこで、AzureとAWSをマネージドサービスでVPN冗長構成を構築する方法を紹介したい思います。
構成
構築する環境は以下のように単純にAzureとAWSをVPNで冗長構成にします。
フルメッシュで構成したかったのですが仕様上できないようです。
前提条件
Azure
- VNETが構成されている
- 仮想マシン(テスト用)が構築されている
- 仮想マシンはSSHもしくはRDPで接続できる
AWS
- VPCが構成されている
- EC2(テスト用)が構築されている
- EC2はSSHもしくはRDPで接続できる
- SGでICMPをAzure側IPに許可
ネットワーク
- セグメントは被らないこと(超重要)
-
高可用性ゲートウェイ接続を設計する - Azure VPN Gateway | Microsoft Learn
VPN Gateway 用の高可用性構成オプションについて説明します。
docs.microsoft.com
Azure側構成
- 仮想ネットワークゲートウェイ x1
- ローカルネットワークゲートウェイ x2
- 接続 x2
いくつかの制限事項によりローカルネットワークゲートウェイと接続は1対1の構成になります。
- 接続先(AWS側)のVPN接続には2つのパブリックIPが設定され1つのIPに対して1つのセッションのみ確立できる。
- 接続元(Azure側)は1つのパブリックIPでローカルネットワークゲートウェイを利用して複数のセッションを確立できる。
- ローカルネットワークゲートウェイには接続先(AWS側)のパブリックIPを1つしか設定できないため、セッションごとにローカルネットワークゲートウェイを設定する。
AWS側構成
- 仮想プライベートゲートウェイ x1
- カスタマーゲートウェイ x2
- VPN接続 x2
接続はIKEv2となります。
手順
作業はAzure側とAWS側で交互に行います。
- (Azure)仮想ネットワークゲートウェイを作成
- (AWS)カスタマーゲートウェイを作成
- (AWS)仮想プライベートゲートウェイを作成
- (AWS)VPN接続を作成
- (Azure)ローカルネットワークゲートウェイを作成
- (Azure)接続を作成
ここからはあ図を示しながら解説していきます。
(Azure)仮想ネットワークゲートウェイを作成
ポータルでは必要な値を入力して作成します。ここで重要なのはアクティブ/アクティブで作成することです。
- 名前:任意
- 地域:任意
- ゲートウェイの種類:VPN
- VPNの種類:ルートベース(ポリシーベースでは接続できません)
- SKU:VpnGw1以上(Basicでは接続できません)
- 世代:Generation2
- 仮想ネットワーク:(前提条件で作成されているVNETを指定)
- ゲートウェイサブネットのアドレス範囲:任意(GatewaySubnetが無い場合のみ)
- パブリックIPアドレスの種類:Standard
- パブリックIPアドレス:新規作成(作成済みの場合はそれを選択)
- パブリックIPアドレス名:任意
- アクティブ/アクティブモードの有効化:有効(有効にした場合に2つ目のパブリックIP作成が可能)
- 2番目のパブリックIPアドレス:新規作成(作成済みの場合はそれを選択)
- パブリックIPアドレス名:任意
- BGPの構成:無効
(AWS)カスタマーゲートウェイを作成
カスタマーゲートウェイをAzure側に合わせて作成します。
パブリックIPアドレスに合わせて2つ作成します。
- 名前:任意
- ルーティング:静的
- IPアドレス:Azure側のIPアドレス
Azure側のIPアドレスは各パブリックIPアドレスを確認して入力します。
1つ目が完了したら2つ目のパブリックIPアドレスを同様に設定します。
(AWS)仮想プライベートゲートウェイを作成
仮想プライベートゲートウェイを開き、仮想プライベートゲートウェイを作成します。
- 名前タグ:任意
- ASN:Amazon のデフォルトASN
作成後はVPCにアタッチ(関連付け)します。
VPCのルートテーブルにAzure側のセグメントに対して仮想プライベートゲートウェイを追加します。
以上で作成完了です。
(AWS)VPN接続を作成
サイト間のVPN接続を開き、VPC接続を作成します。
カスタマーゲートウェイ毎にVPN接続を作成する必要があります。
- 名前タグ:任意
- Target Gateway Type:Virtual Private Gateway
- 仮想プライベートゲートウェイ:上記で作成した仮想プライベートゲートウェイ
- カスタマーゲートウェイ:既存
- カスタマーゲートウェイID:上記で作成したカスタマーゲートウェイ
- ルーティングオプション:静的
- 静的IPプレフィックス:Azure側のサブネット
- (以降、変更なし。)
続けて2つ目のカスタマーゲートウェイと紐づけてVPN接続を作成します。
(Azure)ローカルネットワークゲートウェイを作成
ローカルネットワークゲートウェイを作成します。
これは各VPN接続毎に作成します。
- 名前:任意
- エンドポイント:IPアドレス
- IPアドレス:VPN接続で表示されるされているIP
- アドレス空間:AWS側のサブネットを入力
VPN接続でトンネル詳細を開くと外部IPアドレスを確認できます。
2つ目も作成します。
(Azure)接続を作成
接続を作成します。
VPN接続毎に作成する必要があります。
- 接続の種類:サイト対サイト(IPSec)
- 名前:任意
- 仮想プライベートゲートウェイ:上記で作成した仮想プライベートゲートウェイ
- ローカルネットワークゲートウェイ:上記で作成したローカルネットワークゲートウェイ
- 共有キー(PSK):キーはVPN接続から設定ファイルをダウンロードして確認します。
- IKEプロトコル:IKEv2
- (以降、変更なし)
共有キーの確認はAWS側のVPN接続から設定ファイルをダウンロードして確認します。
Genericを選択すると見やすいと思います。IKEv2を選択してダウンロードします。
設定ファイル内のTunnel1のPre-Shared Keyを参照します。これを接続の共有キーに入力します。
同様に2つ目の接続も作成します。設定ファイルは2つ目のVPN接続からダウンロードして設定します。
以上ですべての設定が完了です。
接続確認
AWS側で各VPN接続でTunnel1のステータスがアップになっていることを確認します。
Azure側では仮想ネットワークゲートウェイの接続で確認できます。
さらに詳細を確認したい場合は各接続のセキュアアソシエーションをダウンロードして確認します。
Json (整形済み)でLocalEndpointとRemoteEndpointを確認すると接続元と接続先を確認できます。
コンソールおよびポータルからの接続確認が以上です。
疎通確認
Azure側、AWS側のテスト用の仮想マシンに入って疎通確認を行います。
それぞれに対してPingで確認して疎通できていること確認します。
以上ですべての工程は完了ですが、障害時のテストとしてAzure側の接続をそれぞれ削除して問題なく疎通できるか確認するのも良いと思います。
(実際には障害を起こすことができないため)
まとめ
AzureとAWSを結ぶ方法のひとつとして、簡単に行えるため緊急時などに役立つと思います。また、専用線を導入するほどでもないなど移行時などにも利用できるかと思います。
冗長構成で安定して接続できることでマルチクラウドで利用することもできます。
利用方法は様々なあると思うので試してみてはいかがでしょうか。