Azure ⇔ AWS間のサイト間VPNを試してみる

Azure -- AWS間のサイト間VPN接続を試してみます。 - 手順1: Azure VPN Gateway 作成まで - 手順2: AWS VPN Gateway 作成まで - 手順3: VPN接続設定 - 手順4: 確認
2019.06.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

コンサルティング部の川原です。

業務で Azure ⇔ AWS間のVPN接続の検証をする必要が出てきました。 今回は下記のような サイト間 VPN接続環境(BGP無し) を構築して、実際にVPN通信ができることを確認しました。

構築の流れは下記のとおりです。

  • 手順1: Azure VPN Gateway 作成まで
  • 手順2: AWS VPN Gateway 作成まで
  • 手順3: VPN接続設定
  • 手順4: 確認

なお、本環境を構築するにあたって下記ブログを大いに参考にさせていただきましたm(_ _)m

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

手順1:Azure VPN Gateway 作成まで

無料試用版 サブスクリプションの testResourceGroup リソースグループ配下にリソースを配置していきます。 ※サブスクリプション?リソースグループ?という方向けに 入門記事 も書いております。

  1. 仮想ネットワーク、サブネット作成
  2. ゲートウェイサブネット作成
  3. 仮想ネットワークゲートウェイ作成

仮想ネットワーク、サブネット作成

仮想ネットワークのアドレス範囲を 10.0.0.0/16、 サブネットのアドレス範囲を 10.0.0.0/24 としました。

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

仮想ネットワーク ゲートウェイを構成するには、 VNet のゲートウェイ サブネットを作成する必要があります。

microsoft: VPN Gateway に関する FAQ より

とのことなので、 作成した仮想ネットワークのサブネット一覧から +ゲートウェイサブネット を選択します。

ゲートウェイサブネットのアドレス範囲は 10.0.254.0/24 としました。

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

仮想ネットワークゲートウェイが Azure側のVPNルータに当たります。

リソースの作成 から「仮想ネットワーク」などと検索して、 仮想ネットワーク ゲートウェイ を選択します。

下記設定で作成します。 ※デプロイに少し時間がかかります。(私は 20分かかりました)

最後に 作成した仮想ネットワーク ゲートウェイへ関連付けされている グローバルIPの値をメモしておきます。 (AWS VPN Gateway 作成で使用します)

手順2:AWS VPN Gateway 作成まで

次はAWS側の作業です。

  1. VPC、サブネット作成
  2. カスタマーゲートウェイ作成
  3. 仮想プライベートゲートウェイ作成

VPC、サブネット作成

下記 アドレス範囲で作成します。

  • VPC CIDR: 10.1.0.0/16
  • サブネット CIDR: 10.1.0.0/24

カスタマーゲートウェイ作成

カスタマーゲートウェイは対向側のゲートウェイです。 今回は さきほど作成した Azure VPN Gateway に当たります。

IPアドレス には、 さきほどメモした Azure側 仮想ネットワークゲートウェイのグローバルIPを入れます。

仮想プライベートゲートウェイ作成

AWS側のVPNルータに当たります。

作成後、 VPCにアタッチ します。

また、サブネットのルーティング設定を下記のように変更します。

  • 送信先:Azure側ローカル (10.0.0.0/24) → ターゲット:作成した仮想プライベートゲートウェイ
  • (インターネットゲートウェイへのデフォルトルート追加は任意)

手順3:VPN接続設定

それぞれ VPN Gatewayを作成しました。 次は VPN接続設定を行います。

  1. AWS側作業:VPN接続設定
  2. Azure側作業:VPN接続設定

AWS側作業:VPN接続設定

VPN > サイト間のVPN接続 から VPN接続の作成 を選択します。

  • 仮想プライベートゲートウェイ: 手順2で作成したものを選択
  • カスタマーゲートウェイ: 手順2で作成したものを選択
  • 静的IPプレフィックス: 対向(Azure) 側のアドレス範囲 (10.0.0.0/24) を指定

AWSのサイト間 VPN接続はデフォルトで冗長化されており、 2つのトンネル (2つのVPNルータ) が作成されます。

それぞれの VPNルータの設定を取得し、後述のAzure側作業で使用します。 設定のダウンロード から適当なConfigファイルをダウンロードします。

Configファイルの下記項目をメモしておきます。

  • IPsec Tunnel #1 のPreShared Key
  • IPsec Tunnel #1 のAWS側グローバルIP
  • IPsec Tunnel #2 のPreShared Key
  • IPsec Tunnel #2 のAWS側グローバルIP

▼以下 「ベンダー: Generic」 の例

IPSec Tunnel #1
================================================================================
#1: Internet Key Exchange Configuration
.
.
  - Pre-Shared Key           : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX <---
.
.
Outside IP Addresses:
  - Customer Gateway                    : x.x.x.x
  - Virtual Private Gateway             : A.B.C.D <---
.
.
IPSec Tunnel #2
================================================================================
#1: Internet Key Exchange Configuration
.
.
  - Pre-Shared Key           : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX <---
.
.
Outside IP Addresses:
  - Customer Gateway                    : x.x.x.x
  - Virtual Private Gateway             : A.B.C.D <---

Azure側作業:VPN接続設定

まず AWS側で作成した IPsec Tunnel #1 の接続を確立させるための設定をしてきます。

ローカルネットワークゲートウェイ リソースを作成します。

ローカルネットワークゲートウェイは対向側のゲートウェイです (AWSでいうカスタマーゲートウェイ)。

  • IPアドレス: IPsec Tunnel #1 のAWS側グローバルIP を記入
  • アドレス範囲: 対向 (AWS)側ローカル (10.1.0.0/24) を記入

次に 手順1で作成した仮想ネットワークゲートウェイから 接続 &gt; +追加 を選択します。

  • 接続の種類: サイト対サイト (IPsec) を選択
  • 共有キー(PSK): IPsec Tunnel #1 のPreShared Key を記入

以上で IPsec Tunnel#1 の設定は完了です。

同じ手順で IPsec Tunnel#2 版 ローカルネットワークゲートウェイ・接続も作成します。

手順4:確認

VPN接続が確立しているか確認します。

各コンソールから確認

Azure で 2つ作成した 接続 リソースをそれぞれ見てみます。 それぞれ状態が 接続済み となっていれば OK です。

AWS で作成した サイト間のVPN接続 のトンネル詳細を見てみます。 ステータスが アップ となっていれば OKです。

仮想マシンから確認

各ローカルに仮想マシンをたてて疎通確認をしてみます。 Azure側に Windows Server 2016, AWS側に Amazon Linux 2 をたてます (OSチョイス … 特に理由はありません)。

▼Azure –> AWS:疎通確認

▼AWS –> Azure:疎通確認

  • Azureの仮想マシンから AWSの仮想マシンに Ping が飛ぶことを確認しました
  • AWSの仮想マシンから Azureの仮想マシンに RDPポート接続ができることを確認しました

※Azure では ICMP通信のみを許可する、といった設定ができないため、 curlコマンドを使った疎通確認を行いました。 (参考: microsoft: セキュリティグループDevelopersIO: TCP通信チェックコマンド)

さいごに

以上、Azure⇔AWS間のサイト間VPN 環境構築でした。

オンプレで同じようなサイト間VPNを実装しようとすると VPNルータのConfigが段々と煩雑になってきて、管理が大変になることが多いです。 そういった面で、マネージドサービスだけでVPN接続ができるのはとても便利に感じました。

補足:Azureのルーティングについて

Azure側の構築をしていて、 ルーティングの設定してないけど、要望通りのルーティングになってるな・・・ と思ったので調べました。

microsoft: 仮想ネットワーク トラフィックのルーティング に情報がありました。 3行でまとめると下記の通りです。

  • システムルート が自動的に作成され。各サブネットの既定のルーティングになる
  • 仮想ネットワークゲートウェイの追加時などに、 ルートを追加してくれる
  • カスタムルート を作成することで システムルートをオーバーライドできる

とのことで、よしなにルーティングを設定してくれる便利な機能のおかげでした。