Azure と AWS を BGP で冗長な S2S VPN 接続してみる

Azure と AWS を BGP で冗長な S2S VPN 接続してみる

今回は Azure と AWS で Site-to-Site VPN を構築します。BGP を使って冗長性を持たせた(複数の IPsec トンネルを持った)構成を実現します。

今回の構成

今回の構成は次のようなになります。AWS と BGP で接続するには APIPA が必要ですが、Azure 側の APIPA 仕様によって利用できない IPsec トンネルが発生します。利用可能なトンネルは最大でも2本までです。

構築手順

Azure:仮想ネットワークの展開

Azure ポータルにて、[リソースの作成] から「仮想ネットワーク」と検索し、[仮想ネットワーク][作成] をクリックします。

[基本] タブにて、次のように設定して [次] をクリックします。

  • [サブスクリプション]:リソースを作成するサブスクリプションを選択
  • [リソースグループ]:リソースを作成するリソースグループを選択
  • [名前]:リソースの名前を指定(VPN-LAB-1-VNET
  • [地域][東日本]

[IP アドレス] タブで次のように入力し、[次] をクリックします。

  • [IPv4 アドレス空間]:仮想ネットワークのプライベートアドレスを指定(172.17.1.0/24
  • [サブネット]
    • [サブネット名]:サブネットの名前を指定(PrivateSubnet
    • [サブネットアドレス範囲]:サブネットのアドレス範囲を指定(172.17.1.0/25

[セキュリティ] タブで次のように設定して [次] をクリックします。

[タグ] タブでそのまま [次] をクリックします。

[確認および作成] タブで [作成] をクリックします。

仮想ネットワークの作成が完了するのを確認します。

Azure:仮想ネットワークゲートウェイの展開

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

[基本] タブで次のように入力して [次] をクリックします。

  • [プロジェクトの詳細]
    • [サブスクリプション]:リソースを作成するサブスクリプションを選択
    • [リソースグループ]:仮想ネットワークに応じて自動選択
  • [インスタンスの詳細]
    • [名前]:リソースの名前を指定(VPN-LAB-1-VGW
    • [地域][東日本]
    • [ゲートウェイの種類][VPN]
    • [VPN の種類][ルート ベース]
    • [SKU][VpnGw1]
    • [世代][Generation1]
    • [仮想ネットワーク][VPN-LAB-1-VNET]
    • [ゲートウェイ サブネットのアドレス範囲]:GatewaySubnet のアドレス範囲を指定(172.17.1.128/28
  • [パブリック IP アドレス]
    • [パブリック IP アドレス名]:パブリック IP アドレスリソースの名前(VPN-LAB-1-VGW-PIP-1
  • [2番目のパブリック IP アドレス]
    • [2番目のパブリック IP アドレス名]:パブリック IP アドレスリソースの名前(VPN-LAB-1-VGW-PIP-2
  • [BGP の構成][有効]
  • [自律システム番号 (ASN)]:仮想ネットワークの AS 番号を指定(645171
  • [カスタムの Azure APIPA BGP IP アドレス]:BGP ピアリングに使う IP アドレスを指定(169.254.21.2
  • [2番目のカスタムの Azure APIPA BGP IP アドレス]:BGP ピアリングに使う IP アドレスを指定(169.254.21.10

[タグ] タブでそのまま [次] をクリックします。

[確認および作成] タブで [作成] をクリックします。

仮想ネットワークゲートウェイの作成が完了するのを待ちます(30〜40分かかります)。完了したら仮想ネットワークゲートウェイのパブリック IP アドレスを [構成] から確認します。

AWS:VPC の作成

AWS の VPC = 仮想ネットワークです。どちらも同じくサブネットを定義します。

AWS のマネージメントコンソールから [VPC] をクリックします。ナビゲーションバーから [VPC] を選択し、[VPC を作成] をクリックします。

[VPC を作成] にて、次のように入力して [VPC を作成] をクリックします。

  • [名前タグ]:VPC の名前を指定(VPN-LAB-1-VPC
  • [IPv4 CIDR ブロック]:VPC のアドレス空間を指定(172.18.1.0/24
  • [IPv6 CIDR ブロック][IPv6 CIDR ブロックなし]
  • [テナンシー][デフォルト]

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

ナビゲーションバーにて [サブネット] を選択し、[サブネットを作成] をクリックします。[サブネットを作成] にて、次のように入力し [サブネットを作成] をクリックします。

  • [VPC]
    • [VPC ID]:作成した VPC を選択(VPN-LAB-1-VPC
  • [サブネットの設定]
    • [サブネット名]:サブネットの名前を指定(private-subnet
    • [アベイラビリティゾーン]:サブネットのアベイラビリティゾーンを指定(ap-northeast-1a
    • [IPv4 CIDR ブロック]:サブネットのアドレス範囲を指定(172.18.1.0/25

サブネットの作成が完了することを確認します。

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

カスタマーゲートウェイ=ローカルゲートウェイに相当するものです。接続先の IP アドレスごとに定義します。

ナビゲーションバーから [カスタマーゲートウェイ] を選択し、[カスタマーゲートウェイの作成] をクリックします。[カスタマーゲートウェイの作成] にて、次のように入力して [カスタマーゲートウェイの作成] をクリックします。

  • [名前]:カスタマーゲートウェイの名前を指定(VPN-LAB-1-Azure-1
  • [ルーティング][動的]
  • [BGP ASN]:Azure 側の AS 番号を指定(64171
  • [IP アドレス]:接続先のグローバル IP アドレスを指定(Azure 仮想ネットワークゲートウェイのパブリック IP アドレス)
  • [Certificate ARN]:空欄のまま
  • [Device]:接続先を識別しやすい情報を入力

同様に Azure 仮想ネットワークゲートウェイの2番目のパブリック IP アドレス向けのカスタマーゲートウェイ(VPN-LAB-1-Azure-2)も作成します。

2つのカスタマーゲートウェイが作成されたことを確認します。

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

ナビゲーションバーで [仮想プライベートゲートウェイ] を選択し、[仮想プライベートゲートウェイの作成] をクリックします。

  • [名前タグ]:仮想プライベートゲートウェイの名前を指定(VPN-LAB-1-VGW
  • [ASN][カスタム ASN]
    • AWS 側の AS 番号を指定(65181

仮想プライベートゲートウェイの作成が完了することを確認します。作成した仮想プライベートゲートウェイを選択し、[アクション]>[VPC にアタッチ] をクリックします。

[VPC にアタッチ] にて、[VPC] で作成した VPC を選択して [はい、アタッチします] をクリックします。

 

作成した仮想プライベートゲートウェイの [状態][attached] になったことを確認します。

AWS:VPN 接続の作成

ナビゲーションバーから [サイト間の VPN 接続] を選択し、 [VPN 接続の作成] をクリックします。[VPN 接続の作成] にて、次のように入力し [VPN 接続の作成] をクリックします。

  • [名前タグ]:VPN 接続の名前を指定(VPN-LAB-1-VGW-to-Azure-1
  • [ターゲットゲートウェイタイプ][仮想プラベートゲートウェイ]
  • [仮想プライベートゲートウェイ]:作成した仮想プライベートゲートウェイを指定(VPN-LAB-1-VGW
  • [カスタマーゲートウェイ][既存]
  • [カスタマーゲートウェイ ID]:作成した最初のカスタマーゲートウェイを指定(VPN-LAB-1-Azure-1
  • [ルーティングオプション][動的 BGP が必要]
  • [トンネル内部 IP バージョン][IPv4]
  • [ローカル IPv4 ネットワーク Cidr]:空欄
  • [リモート IPv4 ネットワーク Cidr]:空欄
  • [トンネルオプション]
    • [トンネル 1 の内部 IPv4 CIDR]:Azure 仮想ネットワークゲートウェイの1番目のカスタム BGP IP アドレスサブネットを指定(169.254.21.0/30
    • [トンネル 1 の事前共有キー]:Azure 仮想ネットワークゲートウェイの1番目の事前共有キーを指定
    • [トンネル 1 の詳細オプション]:空欄
    • [トンネル 2 の事前共有キー]:空欄
    • [トンネル 1 の詳細オプション][デフォルトオプションを使用]
    • [トンネル 2 の詳細オプション][デフォルトオプションを使用]

同様に2番目のカスタマーゲートウェイの情報でも VPN 接続を作成します。

2本の VPN 接続が作成されたことを確認します。[アクション] から、 VPN の構成情報をダウンロードする事ができます。

AWS:ルートテーブルのルート伝搬設定

ナビゲーションバーから [ルートテーブル] をクリックし、作成した VPC に関連づけられているルートテーブルを選択します。[ルート伝播] タブを選択し、 [ルート伝達の編集] をクリックします。

[ルート伝達の編集] にて、[ルート伝播] で作成した仮想プライベートゲートウェイの [伝播] を有効化して [保存] します。

Azure:ローカルネットワークゲートウェイの展開

Azure ポータルに戻り、[リソースの作成] から「ローカル ネットワーク ゲートウェイ」を検索し、[ローカル ネットワーク ゲートウェイ][作成] をクリックします。

[ローカル ネットワーク ゲートウェイの作成] にて、次のように入力して [作成] をクリックします。

  • [名前]:ローカルネットワークゲートウェイの名前を指定(VPN-LAB-1-AWS-1
  • [エンドポイント][IP アドレス]
  • [IP アドレス]:AWS の VPN 接続ののグローバル IP アドレスを指定
  • [アドレス空間]:空欄
  • [BGP 設定の構成][有効]
  • [自律システム番号 (ASN)]:AWS の AS 番号を指定(65171
  • [BGP ピアの IP アドレス]:AWS の BGP ピアアドレスを指定(169.254.21.1
  • [サブスクリプション]:ローカルネットワークゲートウェイを展開するサブスクリプションを指定
  • [リソース グループ]:ローカルネットワークゲートウェイを展開するリソースグループを指定
  • [場所]:ローカルネットワークゲートウェイを展開するリージョンを指定

1 番目のローカルネットワークゲートウェイには 1 番目の AWS の VPN 接続(VPN-LAB-1-VGW-to-Azure-1)の中の1本目の接続情報を入力します。

同様に 2 番目のローカルネットワークゲートウェイも同様に作成します。2 番目のローカルネットワークゲートウェイには 2 番目の AWS の VPN 接続(VPN-LAB-1-VGW-to-Azure-2)の中の1本目の接続情報を入力します。

ローカルネットワークゲートウェイが作成されたことを確認します。

Azure:サイト間接続の展開

[すべてのリソース]>[仮想ネットワーク ゲートウェイ] を選択し、作成した仮想ネットワークゲートウェイ(VPN-LAB-1-VGW)をクリックします。

左メニューから、[接続] をクリックします。上部メニューの [追加] をクリックします。[接続の追加] にて、次のように入力して [OK] をクリックします。

  • [名前]:接続の名前を指定(VPN-LAB-1-VGW-to-AWS-1
  • [接続の種類][サイト対サイト (IPsec)]
  • [仮想ネットワーク ゲートウェイ][VPN-LAB-1-VGW]
  • [ローカル ネットワーク ゲートウェイ][VPN-LAB-1-AWS-1]
  • [共有キー (PSK)]VPN-LAB-1-VGW-to-Azure-1 で指定した事前共有キー
  • [Azure プライベート IP アドレスを使用する][無効] (未チェック)
  • [BGP を有効にする][有効] (チェック)
  • [IKE プロトコル][IKEv2]

2番目の接続も同様に作成します。

2つの接続が作成されたことを確認します。

動作確認

接続状態

Azure の仮想ネットワークゲートウェイで接続の [状態] が両方とも [接続済み] になることを確認します。

AWS の VPN 接続は2つずつあるトンネルのうち一つだけ [ステータス][アップ] になります。

ルート広報

Azure では仮想マシンのネットワークインターフェースを選択し、 [有効なルート] から BGP で広報されたルートを確認できます。広報されたルートは次ホップが [仮想ネットワーク ゲートウェイ] になっています。

AWS ではルートテーブルから [ルート] タブを選択することで広報されたルートを確認できます。広報されたルートは [ターゲット] が仮想プライベートゲートウェイになっています。

以上で BGP による Azure と AWS の S2S VPN 接続は完了です。