AWSとGCPのVPN接続を複数パターン試してみる(高可用性(HA)VPN編)

2020.05.04

はじめに

データアナリティクス事業本部のkobayashiです。

AWSとGCPをセキュアな環境で接続してそれぞれのサービスを相互に利用できないか検証するためそれぞれのVPC間をVPNで接続してみました。

前回はGCPのVPNオプションにはClassic VPNでの接続方法をまとめましたので、今回は高可用性(HA)VPN接続の方法をまとめます。

Cloud VPN の概要  |  Google Cloud

前回の記事

接続パターン

Classic VPN接続

AWSでAWS VPN connectionを作成すると2つのIPSec tunnelが利用できます。 上のパターン(以降パターン1)ではそのうちの1本を利用するパターン、下のパターン(以降パターン2)は2本とも利用してフェイルオーバーに対応するパターンになります。 前回のエントリーではこのパターン1、パターン2の接続方法をまとめました。

高可用性(HA)VPN接続

HA VPNの接続パターンになります。 上のパターン(以降パターン3)ではAWS、GCPのVPN connectionを冗長化しています。下のパターン(以降パターン4)ではパターン3で冗長化した上でさらにAWS VPN connectionのIPSec tunnelを全て利用しています。GCPが推奨する高可用性(HA)VPN接続方法となります。 今回はこのパターン3、パターン4の接続方法をまとめます。

接続方法

前回と同様に高可用性(HA)VPN接続でも、接続の手順は共通で以下の流れで設定していきます。

  1. GCPでパブリックIPを作成する
  2. AWSでGCPのパブリックIPを使ってカスタマーゲートウェイ・VPN接続を作成する
  3. GCPでAWSのVPN接続でダウンロードしてファイルを元にVPNトンネルを作成する

また「AWSでの仮想プライベートゲートウェイの作成」、「GCPでのクラウドルーターの作成」も前回と共通なので今回は省略します。

高可用性(HA)VPN接続(パターン3)の接続方法

GCPの作業

手順1).GCPの管理コンソールでハイブリッド接続 > VPNと進み、VPN作成で高可用性(HA)VPNを選択します。

手順2).Cloud HA VPN ゲートウェイの作成を行います。主な設定は以下です。それ以外は既定値のままです。

  • VPNゲートウェイの名前 : わかりやすい名前を入力
  • ネットワーク : VPN接続を行いたいネットワークを選択
  • リージョン : 同じくVPN接続したいリージョンを選択

ここまででIPアドレスが作成され表示されます。Classic VPNと違いパブリックIPが2つ作成します。

このIPアドレスをメモして一旦GCP側の作業を止めます。

AWSの作業

Classic VPNの場合と違い、GCPで作成したパブリックIPが2つなのでAWSで作成するサイト間のVPN接続も2つ作成する必要があります。

手順3).サイト間のVPN接続の作成を行います。主な設定は以下です。それ以外は既定値のままです。

  • 仮想プライベートゲートウェイ : 事前に作成した仮想プライベートゲートウェイIDを選択
  • カスタマーゲートウェイ : 新規に作成
    • IPアドレス : 2で作成したパブリックIPを入力
    • BGP ASN : 65000を入力(クラウドルーター作成時のGoogle ASN)
    • トンネルオプション : 特に指定しない

手順4).作成したVPN接続からVPN接続設定ファイルをベンダーはGenericにしてダウンロードをします。

手順5).これでサイト間のVPN接続が1つできるので手順3、4を繰り返してGCPで作成した2つ目のパブリックIP用に2つ目のサイト間のVPN接続を作成し、VPN接続設定ファイルをダウンロードします。

ここでAWS側の作業は終わりです。

再びGCPの作業

手順6).GCPのVPN接続の作成2から再び進めます。 ピアVPNゲートウェイの作成を行います。4及び5でダウンロードしたVPN接続設定ファイルの情報を使います。

  • ピアVPNゲートウェイ : オンプレミスまたは非Google Cloudを選択
  • ピアVPNゲートウェイの名前 : 新しいピアVPNゲートウェイを作成するを選択
    • 名前 : わかりやすい名前を入力
    • ピアVPNゲートウェイインターフェース : 2つのインターフェースを選択
      • インターフェース0のIPアドレス : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Virtual Private Gatewayを入力
      • インターフェース1のIPアドレス : 5でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Virtual Private Gatewayを入力

手順7).VPNトンネルの作成を行います。

  • 高可用性 : VPNトンネルペアを作成するを選択
  • クラウドルーター : 予め作成しておいたものを選択

手順8).VPNトンネル(未構成)が2つ有るので上を押下してVPNトンネルの設定を行います。4でダウンロードしたVPN接続設定ファイルの情報を使います。

  • 関連付けられているCloud VPNゲートウェイインターフェース : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Customer Gatewayを選択
  • 関連付けられているピアVPNゲートウェイインターフェース : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Virtual Private Gatewayを入力
  • 名前 : わかりやすい名前を入力
  • IKEバージョン : IKEv1を選択
  • IKE事前共有キー : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #1: Internet Key Exchange ConfigurationPre-Shared Keyを入力

ここで特に注意しなければならないのが、関連付けられているCloud VPNゲートウェイインターフェース関連付けられているピアVPNゲートウェイインターフェースの組み合せは手順3,4で作成したものと一致させる事です。この組み合わせを間違えると当然接続は確立しません。

手順9).先程の手順8と同様に残りのVPNトンネル(未構成)の設定を行います。こちらは5でダウンロードしたVPN接続設定ファイルの情報を使います。

  • 関連付けられているCloud VPNゲートウェイインターフェース : 5でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Customer Gatewayを選択
  • 関連付けられているピアVPNゲートウェイインターフェース : 5でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Virtual Private Gatewayを入力
  • 名前 : わかりやすい名前を入力
  • IKEバージョン : IKEv1を選択
  • IKE事前共有キー : 5でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #1: Internet Key Exchange ConfigurationPre-Shared Keyを入力

手順10).次にBGPセッションの設定を行います。構成押下するとモーダルが表示されるので必要項目を入力します。ここでもVPN接続設定ファイルの情報を使いますが、Cloud VPNトンネルの名前とCloud VPNゲートウェイインターフェースに表示されているIPアドレスを確認して手順4、5どちらのVPN接続設定ファイルを使うのかに注意します。

  • 名前 : わかりやすい名前を入力
  • ピアASN : IPSec Tunnel #1 > #4: Border Gateway Protocol (BGP) ConfigurationBGP Configuration Options: Virtual Private Gateway ASNを入力
  • Cloud Router のBGP IP : IPSec Tunnel #1 > #3: Tunnel Interface ConfigurationInside IP Addresses - Customer Gatewayを入力
  • BGP ピア IP : IPSec Tunnel #1 > #3: Tunnel Interface ConfigurationInside IP Addresses - Virtual Private Gateway を入力

ここまで入力してBGP構成を保存を押下すればVPNトンネルが作成されます。 接続が確立すると以下の様な状態になります。

AWS側でも接続を確認します。接続が確立していればサイト間のVPN接続Tunnel Detailsでトンネルがアップになります。

高可用性(HA)VPN接続(パターン4)の接続方法

パターン4はパターン3の構成のCloud VPN ゲートウェイと同じものを使えばよく、パターン3の手順1-5までは同じ作業なので割愛します。

GCPの作業

手順6).GCPのVPN接続の作成2から再び進めます。 ピアVPNゲートウェイの作成を行います。4及び5でダウンロードしたVPN接続設定ファイルの情報を使います。

  • ピアVPNゲートウェイ : オンプレミスまたは非Google Cloudを選択
  • ピアVPNゲートウェイの名前 : 新しいピアVPNゲートウェイを作成するを選択
    • 名前 : わかりやすい名前を入力
    • ピアVPNゲートウェイインターフェース : 4つのインターフェースを選択
      • インターフェース0のIPアドレス : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Virtual Private Gatewayを入力
      • インターフェース1のIPアドレス : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #2 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Virtual Private Gatewayを入力
      • インターフェース2のIPアドレス : 5でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Virtual Private Gatewayを入力
      • インターフェース3のIPアドレス : 5でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #2 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Virtual Private Gatewayを入力

手順7).VPNトンネルの作成を行います。

  • 高可用性 : 4つのVPNトンネルを作成を選択
  • クラウドルーター : 予め作成しておいたものを選択

手順8).VPNトンネル(未構成)が4つ有るので押下してVPNトンネルの設定を行います。4でダウンロードしたVPN接続設定ファイルの情報を使います。

  • 関連付けられているCloud VPNゲートウェイインターフェース : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Customer Gatewayを選択
  • 関連付けられているピアVPNゲートウェイインターフェース : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Virtual Private Gatewayを入力
  • 名前 : わかりやすい名前を入力
  • IKEバージョン : IKEv1を選択
  • IKE事前共有キー : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #1: Internet Key Exchange ConfigurationPre-Shared Keyを入力

ここで特に注意しなければならないのが、関連付けられているCloud VPNゲートウェイインターフェース関連付けられているピアVPNゲートウェイインターフェースの組み合せは手順3,4で作成したものと一致させる事です。この組み合わせを間違えると当然接続は確立しません。

手順9).手順8と同様に、4でダウンロードしたVPN接続設定ファイルの情報を使い2本目のトンネルの設定を行います。

  • 関連付けられているCloud VPNゲートウェイインターフェース : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #2 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Customer Gatewayを選択
  • 関連付けられているピアVPNゲートウェイインターフェース : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #2 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Virtual Private Gatewayを入力
  • 名前 : わかりやすい名前を入力
  • IKEバージョン : IKEv1を選択
  • IKE事前共有キー : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #2 > #1: Internet Key Exchange ConfigurationPre-Shared Keyを入力

手順10).先程の手順8、9と同様に残りのVPNトンネル(未構成)の設定を行います。こちらは5でダウンロードしたVPN接続設定ファイルの情報を使います。

  • VPNトンネル(未構成)の3
    • 関連付けられているCloud VPNゲートウェイインターフェース : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Customer Gatewayを選択
    • 関連付けられているピアVPNゲートウェイインターフェース : IPSec Tunnel #1 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Virtual Private Gatewayを入力
    • 名前 : わかりやすい名前を入力
    • IKEバージョン : IKEv1を選択
    • IKE事前共有キー : IPSec Tunnel #1 > #1: Internet Key Exchange ConfigurationPre-Shared Keyを入力
  • VPNトンネル(未構成)の4
    • 関連付けられているCloud VPNゲートウェイインターフェース : 5でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #2 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Customer Gatewayを選択
    • 関連付けられているピアVPNゲートウェイインターフェース : IPSec Tunnel #2 > #3: Tunnel Interface ConfigurationOutside IP Addresses: Virtual Private Gatewayを入力
    • 名前 : わかりやすい名前を入力
    • IKEバージョン : IKEv1を選択
    • IKE事前共有キー : IPSec Tunnel #2 > #1: Internet Key Exchange ConfigurationPre-Shared Keyを入力

手順11).次にBGPセッションの設定を行いますがこちらも4本のトンネル分を設定します。構成押下するとモーダルが表示されるので必要項目を入力します。ここでもVPN接続設定ファイルの情報を使いますが、先程設定したCloud VPNトンネルの名前とCloud VPNゲートウェイインターフェースに表示されているIPアドレスを確認して手順4、5どちらのVPN接続設定ファイルを使うのかに注意します。

  • Cloud VPN トンネル1(手順8で設定したVPNトンネル)
    • 名前 : わかりやすい名前を入力
    • ピアASN : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #4: Border Gateway Protocol (BGP) ConfigurationBGP Configuration Options: Virtual Private Gateway ASNを入力
    • Cloud Router のBGP IP : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #3: Tunnel Interface ConfigurationInside IP Addresses - Customer Gatewayを入力
    • BGP ピア IP : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #3: Tunnel Interface ConfigurationInside IP Addresses - Virtual Private Gateway を入力
  • Cloud VPN トンネル2(手順9で設定したVPNトンネル)
    • 名前 : わかりやすい名前を入力
    • ピアASN : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #2 > #4: Border Gateway Protocol (BGP) ConfigurationBGP Configuration Options: Virtual Private Gateway ASNを入力
    • Cloud Router のBGP IP : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #2 > #3: Tunnel Interface ConfigurationInside IP Addresses - Customer Gatewayを入力
    • BGP ピア IP : 4でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #2 > #3: Tunnel Interface ConfigurationInside IP Addresses - Virtual Private Gateway を入力
  • Cloud VPN トンネル3(手順10で設定した1つ目のVPNトンネル)
    • 名前 : わかりやすい名前を入力
    • ピアASN : 5でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #4: Border Gateway Protocol (BGP) ConfigurationBGP Configuration Options: Virtual Private Gateway ASNを入力
    • Cloud Router のBGP IP : 5でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #3: Tunnel Interface ConfigurationInside IP Addresses - Customer Gatewayを入力
    • BGP ピア IP : 5でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #1 > #3: Tunnel Interface ConfigurationInside IP Addresses - Virtual Private Gateway を入力
  • Cloud VPN トンネル4(手順10で設定した2つ目のVPNトンネル)
    • 名前 : わかりやすい名前を入力
    • ピアASN : 5でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #2 > #4: Border Gateway Protocol (BGP) ConfigurationBGP Configuration Options: Virtual Private Gateway ASNを入力
    • Cloud Router のBGP IP : 5でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #2 > #3: Tunnel Interface ConfigurationInside IP Addresses - Customer Gatewayを入力
    • BGP ピア IP : 5でダウンロードしたVPN接続設定ファイルのIPSec Tunnel #2 > #3: Tunnel Interface ConfigurationInside IP Addresses - Virtual Private Gateway を入力

ここまで入力してBGP構成を保存を押下すればVPNトンネルが作成されます。 接続が確立すると以下の様な状態になります。

AWS側でも接続を確認します。接続が確立していればサイト間のVPN接続Tunnel Detailsでトンネルがアップになります。

  • 1つ目のサイト間のVPN接続 > Tunnel Details

  • 2つ目のサイト間のVPN接続 > Tunnel Details

まとめ

パターン4が本番運用時の構成となると想定されますが、この場合はAWSでVPN接続を2本、GCP側でVPNトンネルを4本用意する必要があるため非常に高コストになリます。

普段の検証・開発作業ではパターン1のAWSでVPN接続を1本、GCP側でVPNトンネルを1本という形が現実的だと想定されます。

最後まで読んで頂いてありがとうございました。