AWS と Azure 間インターネットVPN接続

記事タイトルとURLをコピーする

こんにちは、クラウドインテグレーション部 技術1課 宮形 です。

AWS の VPC と、Microsoft Azure の VNET をインターネットVPNで接続する検証を行いましたので本BLOGにて紹介します。

構成図としては下記のようになります。今回は BGP などの冗長構成は無しで、1対1のシンプルな接続を検証しました。 リージョンは AWS:東京、Azure:東日本 です。

f:id:swx-miyagata:20220107174156p:plain

IPSec での接続となります。下記のパラメーターを双方で情報交換することで VPN 接続することができました。

  • AWS と Azure 双方VPNルーターのグローバルIPアドレス
  • AWS と Azure 双方で同じ値とする プリシェアードキー
  • AWS と Azure 双方プライベートネットワークのCIDR

オンプレミスの場合、異種メーカー同士のVPNルーターで IPSec をする場合は、IKEのバージョン、暗号化アルゴリズム、DHグループなどなどと色々なパラメーターのすり合わせが必要でした。AWS と Azure 間のVPNの場合はこれらは全てデフォルトでOK、拍子抜けする位シンプルでびっくりします。

ただ、実際にやってみると AWS と Azure では VPNルーターを作るときのクセや仕様差異がありました。 一度経験しておくと安心かと思います。ではやってみます。

すでに AWS 側は VPC、サブネット、EC2 が作成されている状態です。Azure 側も同様に、VNET、サブネット、VM が作成されている状態とします。 下記の順番で進めるとやりやすいと思われます。

  1. Azure ゲートウェイサブネットの作成
  2. Azure 仮想ネットワークゲートウェイの作成
  3. Azure 側のグローバルIPアドレス確認
  4. AWS カスタマーゲートウェイの作成
  5. AWS 仮想プライベートゲートウェイの作成
  6. AWS 仮想プライベートゲートウェイのVPCアタッチ
  7. AWS ルートテーブルの修正
  8. AWS VPN接続の作成
  9. AWS 側のグローバルIPアドレスとプリシェアードキーの確認
  10. Azure ローカルネットワークゲートウェイの作成
  11. Azure 接続の作成
  12. AWS VPC と Azure VNET 双方の疎通確認

検証手順

1. Azure ゲートウェイサブネットの作成

最初は Azure 側から作業します。Azureポータルで操作します。 Azure ではVPNルーター相当のVPNゲートウェイを配置するための専用サブネット「ゲートウェイサブネット」を事前に作成する必要があります。 対象 VNET のサブネットの管理画面より作成します。

f:id:swx-miyagata:20220107174749p:plain

名前は固定です。サブネットアドレス範囲は、大きいCIDRブロックは不要ですが 27ビットより広くしておくと 後々とエラーや警告が出ません。検証では27ビットとしました。

f:id:swx-miyagata:20220107174812p:plain

2. Azure 仮想ネットワークゲートウェイの作成

仮想ネットワークゲートウェイを作成します。 「ゲートウェイの種類:VPN」とします。「VPNの種類:ルートベース」とします。 「ポリシーベース」を選ぶと SKU(スペック)がBASICのみとなってしまうので、通常は選択しないと思います。 SKU(スペック)は安価な「VpnGw1」としました。パブリックIPアドレスをこの画面で新規作成できます。 「アクティブ/アクティブモード」「BGP」は今回は無効とします。

f:id:swx-miyagata:20220107213532p:plain f:id:swx-miyagata:20220107174930p:plain

3. Azure 側のグローバルIPアドレス確認

仮想ネットワークゲートウェイが作成されるまで、約40分ほど要しました。 「概要」のページから、グローバルIPアドレスを確認して控えておきます。 まだ Azure 側での作業は残っていますが、ここでいったんAzureポータルとはお別れします。

f:id:swx-miyagata:20220113100248p:plain

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

ここからは AWSマネージメントコンソール側の操作となります。 「カスタマーゲートウェイの作成」を始めます。

f:id:swx-miyagata:20220107213719p:plain

カスタマーゲートウェイの作成画面では「ルーティング:静的」とし、「IPアドレス」では、先ほど 手順.3 で控えた Azure 側のグローバルIPアドレスを設定します。

f:id:swx-miyagata:20220107213825p:plain

5. AWS 仮想プライベートゲートウェイの作成

次に「仮想プライベートゲートウェイの作成」を始めます。

f:id:swx-miyagata:20220107213902p:plain

「名前タグ」は任意の値とします。「ASN」は「Amazon のデフォルトASN」としました。 冗長構成とする場合、ASNは注意を払う必要があります。当社先輩の過去ブログをご参照ください。

Transit GatewayやDirect ConnectのAS番号について - サーバーワークスエンジニアブログ

f:id:swx-miyagata:20220107175242p:plain

6. AWS 仮想プライベートゲートウェイのVPCアタッチ

作成された仮想プライベートゲートウェイをVPNにアタッチします。Azure で存在した ゲートウェイサブネットという概念はありません。

f:id:swx-miyagata:20220107175343p:plain

f:id:swx-miyagata:20220107175401p:plain

7. AWS ルートテーブルの修正

アタッチした VPC およびサブネットのルーティングに、Azure VNET 向けのネクストホップを登録します。 ルートテーブルの編集画面で追加します。「ターゲット」を先ほど作成した仮想プライベートゲートウェイとします。

f:id:swx-miyagata:20220107175433p:plain

8. AWS VPN接続の作成

次に「VPN接続の作成」を始めます。

f:id:swx-miyagata:20220107175459p:plain

この画面では 手順.4 で作成したカスタマーゲートウェイと 手順.5 で作成した仮想プライベートゲートウェイを 紐づけるような操作を行います。設定箇所がたくさんありますが、今回検証では必要最低限の設定としました。 「ルーティングオプション:静的」「静的IPプレフィックス:192.168.0.0/16 (Azure VNET のCIDRブロック)」 「トンネル内部IPバージョン:IPv4」とします。

f:id:swx-miyagata:20220107214127p:plain

9. AWS 側のグローバルIPアドレスとプリシェアードキーの確認

作成されたVPN接続の画面より「トンネル詳細」タブをクリックします。「トンネルの状態」の画面に 2つのVPNトンネルが作成され、グローバルIPアドレスも2つ割り当てされていることが確認できます。 今回は冗長構成ではないので、Tunnel1の「外部 IPアドレス」を控えておきます。

f:id:swx-miyagata:20220107192707p:plain

VPNに必要となるプリシェアードキーを確認します。「設定のダウンロード」をクリックします。 「設定のダウンロード」というウインドウより、通信機器ベンダー毎の Config サンプルが入手できます。 (これはAWS親切!と思いました) 今回は「ベンダー:Generic」「プラットフォーム:Generic」他デフォルトのまま「ダウンロード」としました。

f:id:swx-miyagata:20220107192738p:plain f:id:swx-miyagata:20220107214307p:plain

ダウンロードした Config ファイルを開くと、Tunnel1の「プリシェアードキー」を確認することができます。値を控えておきます。 Tunnel1 と Tunnel2 で値が違いますので注意します。

f:id:swx-miyagata:20220107214342p:plain

AWS 側の作業はここでおしまいです。Azure ポータルに移ります。 (補足:プリシェアードキーは自分で設定することも可能です)

10. Azure ローカルネットワークゲートウェイの作成

Azureポータルの操作に戻ります。「ローカルネットワークゲートウェイの作成」を行います。 「IPアドレス」に、手順.9 で確認した AWS 側のグローバルIPアドレスを設定します。 「アドレス空間」には「172.17.0.0/16 (AWS VPC のCIDRブロック)」」を設定します。

f:id:swx-miyagata:20220107214502p:plain

「BGP設定の構成」は「いいえ」とします。

f:id:swx-miyagata:20220107193032p:plain

11. Azure 接続の作成

次に「接続」を設定します。AWS と似ていて、手順.2で作成した仮想ネットワークゲートウェイと 手順 10. で作成したローカルネットワークゲートウェイを紐づけるような操作となります。

「接続の種類:サイト対サイト」とします。「共有キー(PSK)」では 手順.9 で確認したプリシェアードキーの値を設定します。他の設定は今回はデフォルトのままとします。

f:id:swx-miyagata:20220107193116p:plain

Azure 側の設定もここでおしまいです。では VPN の疎通確認を行います。

12. AWS VPC と Azure VNET 双方の疎通確認

AWSマネージメントコンソールの「VPN接続」の画面より、VPN のステータスが確認できます。 「ステータス:アップ」となればOKです。Azureポータルでは「接続」の画面より「状態:接続済み」となればOKです。 設定したあと画面が反映されるまで時間がかかる場合があるので、エラーになっていても焦らず待ちます。 この検証の時は10分ほど待ちました。

  • AWS側の接続状態 f:id:swx-miyagata:20220107215456p:plain

  • Azure側の接続状態 f:id:swx-miyagata:20220107215518p:plain

今回検証では AWS と Azure 両方に仮想マシンを用意しておいたので、双方から ping が飛ぶことを確認します。 検証時は10ms以下で応答が返ってきました。本検証では触れませんが、セキュリティグループや Windowsパーソナルファイアウォールを適切に設定しておきます。 (ここでトラブって30分ほど茫然としたのはヒミツです。。。)

f:id:swx-miyagata:20220107215629p:plain

ネットワークの転送速度を図ってみました。サイズの大きいファイルをWindowsファイル共有(SMB)で エクスプローラーからコピーしたところ、650Mbps~700Mbps で転送できました。想像以上に速くて驚きです。

f:id:swx-miyagata:20220107193511p:plain

Azure の 仮想ネットワークゲートウェイのSKU VpnGw1 帯域幅 が 650Mbs となっているので、だいたい同じ数値です。 スペックを上げると、もっと速くなるかもしれません。

VPN Gateway の価格 | Microsoft Azure

まとめ

今回、AWS と Azure をVPN接続する検証を行ってみて、感じた点を列記します。

  • 先に Azure 側から設定を進めてグローバルIPアドレスが確定した時点から AWS 側を設定した方がよさそうです。 AWS ではグローバルIPアドレスが確定するのが設定作業の終盤です。 AWS カスタマーゲートウェイのIPアドレスは後で変更することが出来ないので、無理にAWS側から進めてしまうと手戻りになります。 (あらかじめAzure側でパブリックIPアドレスを作成して確定しておけば回避できます)
  • Azure 側はルートテーブルを意識する必要がなく自動的に VPN 対向先へルーティングされます。 AWS とは考え方が違うことを理解しておくと、Azure メンテナンス担当者との会話がスムーズかと思います。
  • AWS 側の VPNトンネル 2つ作成される仕様に合わせる場合、Azure側の仮想ネットワークゲートウェイで アクティブ/アクティブモード を有効化する必要があります。ただし、 Azure の仮想ネットワークゲートウェイはデフォルトでもアクティブ/スタンバイで冗長化はされているので、 万一障害でも長時間ダウンする可能性は低いとは予想されます。下記サイトには切り替わり復旧には 1~3分と記載されています。 https://docs.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-highlyavailable どのレベルまでのダウンタイムを許容するかによって、適切に設計を行いたいところです。
  • 想像以上に速い応答速度、転送スピードが出たので、十分業務では使えると思いました。

1対1接続でもある程度は冗長化がされており、実測した速度も高速でしたので、 例えばデータベースのレプリケーションや、バックアップ災害対策などにも十分使えると思いました。 皆様のクラウド導入計画の参考になれば幸いです。

最後までご覧いただきありがとうございました。

宮形純平(執筆記事の一覧)

エンタープライズクラウド部 ソリューションアーキテクト1課

好きなお酒は缶チューハイと本格焼酎