AWSとGCPのVPN接続を複数パターン試してみる(高可用性(HA)VPN編)
はじめに
データアナリティクス事業本部のkobayashiです。
AWSとGCPをセキュアな環境で接続してそれぞれのサービスを相互に利用できないか検証するためそれぞれのVPC間をVPNで接続してみました。
前回はGCPのVPNオプションにはClassic VPNでの接続方法をまとめましたので、今回は高可用性(HA)VPN接続の方法をまとめます。
前回の記事
接続パターン
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接続でも、接続の手順は共通で以下の流れで設定していきます。
- GCPでパブリックIPを作成する
- AWSでGCPのパブリックIPを使ってカスタマーゲートウェイ・VPN接続を作成する
- 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 Configuration
のOutside IP Addresses: Virtual Private Gateway
を入力 - インターフェース1のIPアドレス : 5でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #3: Tunnel Interface Configuration
のOutside IP Addresses: Virtual Private Gateway
を入力
- インターフェース0のIPアドレス : 4でダウンロードしたVPN接続設定ファイルの
手順7).VPNトンネルの作成を行います。
- 高可用性 :
VPNトンネルペアを作成する
を選択 - クラウドルーター : 予め作成しておいたものを選択
手順8).VPNトンネル(未構成)が2つ有るので上を押下してVPNトンネルの設定を行います。4でダウンロードしたVPN接続設定ファイルの情報を使います。
- 関連付けられているCloud VPNゲートウェイインターフェース : 4でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #3: Tunnel Interface Configuration
のOutside IP Addresses: Customer Gateway
を選択 - 関連付けられているピアVPNゲートウェイインターフェース : 4でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #3: Tunnel Interface Configuration
のOutside IP Addresses: Virtual Private Gateway
を入力 - 名前 : わかりやすい名前を入力
- IKEバージョン :
IKEv1
を選択 - IKE事前共有キー : 4でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #1: Internet Key Exchange Configuration
のPre-Shared Key
を入力
ここで特に注意しなければならないのが、関連付けられているCloud VPNゲートウェイインターフェース
と関連付けられているピアVPNゲートウェイインターフェース
の組み合せは手順3,4で作成したものと一致させる事です。この組み合わせを間違えると当然接続は確立しません。
手順9).先程の手順8と同様に残りのVPNトンネル(未構成)の設定を行います。こちらは5でダウンロードしたVPN接続設定ファイルの情報を使います。
- 関連付けられているCloud VPNゲートウェイインターフェース : 5でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #3: Tunnel Interface Configuration
のOutside IP Addresses: Customer Gateway
を選択 - 関連付けられているピアVPNゲートウェイインターフェース : 5でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #3: Tunnel Interface Configuration
のOutside IP Addresses: Virtual Private Gateway
を入力 - 名前 : わかりやすい名前を入力
- IKEバージョン :
IKEv1
を選択 - IKE事前共有キー : 5でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #1: Internet Key Exchange Configuration
のPre-Shared Key
を入力
手順10).次にBGPセッションの設定を行います。構成
押下するとモーダルが表示されるので必要項目を入力します。ここでもVPN接続設定ファイルの情報を使いますが、Cloud VPNトンネル
の名前とCloud VPNゲートウェイインターフェース
に表示されているIPアドレスを確認して手順4、5どちらのVPN接続設定ファイルを使うのかに注意します。
- 名前 : わかりやすい名前を入力
- ピアASN :
IPSec Tunnel #1 > #4: Border Gateway Protocol (BGP) Configuration
のBGP Configuration Options: Virtual Private Gateway ASN
を入力 - Cloud Router のBGP IP :
IPSec Tunnel #1 > #3: Tunnel Interface Configuration
のInside IP Addresses - Customer Gateway
を入力 - BGP ピア IP :
IPSec Tunnel #1 > #3: Tunnel Interface Configuration
のInside 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 Configuration
のOutside IP Addresses: Virtual Private Gateway
を入力 - インターフェース1のIPアドレス : 4でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #2 > #3: Tunnel Interface Configuration
のOutside IP Addresses: Virtual Private Gateway
を入力 - インターフェース2のIPアドレス : 5でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #3: Tunnel Interface Configuration
のOutside IP Addresses: Virtual Private Gateway
を入力 - インターフェース3のIPアドレス : 5でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #2 > #3: Tunnel Interface Configuration
のOutside IP Addresses: Virtual Private Gateway
を入力
- インターフェース0のIPアドレス : 4でダウンロードしたVPN接続設定ファイルの
手順7).VPNトンネルの作成を行います。
- 高可用性 :
4つのVPNトンネルを作成
を選択 - クラウドルーター : 予め作成しておいたものを選択
手順8).VPNトンネル(未構成)が4つ有るので押下してVPNトンネルの設定を行います。4でダウンロードしたVPN接続設定ファイルの情報を使います。
- 関連付けられているCloud VPNゲートウェイインターフェース : 4でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #3: Tunnel Interface Configuration
のOutside IP Addresses: Customer Gateway
を選択 - 関連付けられているピアVPNゲートウェイインターフェース : 4でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #3: Tunnel Interface Configuration
のOutside IP Addresses: Virtual Private Gateway
を入力 - 名前 : わかりやすい名前を入力
- IKEバージョン :
IKEv1
を選択 - IKE事前共有キー : 4でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #1: Internet Key Exchange Configuration
のPre-Shared Key
を入力
ここで特に注意しなければならないのが、関連付けられているCloud VPNゲートウェイインターフェース
と関連付けられているピアVPNゲートウェイインターフェース
の組み合せは手順3,4で作成したものと一致させる事です。この組み合わせを間違えると当然接続は確立しません。
手順9).手順8と同様に、4でダウンロードしたVPN接続設定ファイルの情報を使い2本目のトンネルの設定を行います。
- 関連付けられているCloud VPNゲートウェイインターフェース : 4でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #2 > #3: Tunnel Interface Configuration
のOutside IP Addresses: Customer Gateway
を選択 - 関連付けられているピアVPNゲートウェイインターフェース : 4でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #2 > #3: Tunnel Interface Configuration
のOutside IP Addresses: Virtual Private Gateway
を入力 - 名前 : わかりやすい名前を入力
- IKEバージョン :
IKEv1
を選択 - IKE事前共有キー : 4でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #2 > #1: Internet Key Exchange Configuration
のPre-Shared Key
を入力
手順10).先程の手順8、9と同様に残りのVPNトンネル(未構成)の設定を行います。こちらは5でダウンロードしたVPN接続設定ファイルの情報を使います。
- VPNトンネル(未構成)の3
- 関連付けられているCloud VPNゲートウェイインターフェース : 4でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #3: Tunnel Interface Configuration
のOutside IP Addresses: Customer Gateway
を選択 - 関連付けられているピアVPNゲートウェイインターフェース :
IPSec Tunnel #1 > #3: Tunnel Interface Configuration
のOutside IP Addresses: Virtual Private Gateway
を入力 - 名前 : わかりやすい名前を入力
- IKEバージョン :
IKEv1
を選択 - IKE事前共有キー :
IPSec Tunnel #1 > #1: Internet Key Exchange Configuration
のPre-Shared Key
を入力
- 関連付けられているCloud VPNゲートウェイインターフェース : 4でダウンロードしたVPN接続設定ファイルの
- VPNトンネル(未構成)の4
- 関連付けられているCloud VPNゲートウェイインターフェース : 5でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #2 > #3: Tunnel Interface Configuration
のOutside IP Addresses: Customer Gateway
を選択 - 関連付けられているピアVPNゲートウェイインターフェース :
IPSec Tunnel #2 > #3: Tunnel Interface Configuration
のOutside IP Addresses: Virtual Private Gateway
を入力 - 名前 : わかりやすい名前を入力
- IKEバージョン :
IKEv1
を選択 - IKE事前共有キー :
IPSec Tunnel #2 > #1: Internet Key Exchange Configuration
のPre-Shared Key
を入力
- 関連付けられているCloud VPNゲートウェイインターフェース : 5でダウンロードしたVPN接続設定ファイルの
手順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) Configuration
のBGP Configuration Options: Virtual Private Gateway ASN
を入力 - Cloud Router のBGP IP : 4でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #3: Tunnel Interface Configuration
のInside IP Addresses - Customer Gateway
を入力 - BGP ピア IP : 4でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #3: Tunnel Interface Configuration
のInside IP Addresses - Virtual Private Gateway
を入力
- Cloud VPN トンネル2(手順9で設定したVPNトンネル)
- 名前 : わかりやすい名前を入力
- ピアASN : 4でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #2 > #4: Border Gateway Protocol (BGP) Configuration
のBGP Configuration Options: Virtual Private Gateway ASN
を入力 - Cloud Router のBGP IP : 4でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #2 > #3: Tunnel Interface Configuration
のInside IP Addresses - Customer Gateway
を入力 - BGP ピア IP : 4でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #2 > #3: Tunnel Interface Configuration
のInside IP Addresses - Virtual Private Gateway
を入力
- Cloud VPN トンネル3(手順10で設定した1つ目のVPNトンネル)
- 名前 : わかりやすい名前を入力
- ピアASN : 5でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #4: Border Gateway Protocol (BGP) Configuration
のBGP Configuration Options: Virtual Private Gateway ASN
を入力 - Cloud Router のBGP IP : 5でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #3: Tunnel Interface Configuration
のInside IP Addresses - Customer Gateway
を入力 - BGP ピア IP : 5でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #1 > #3: Tunnel Interface Configuration
のInside IP Addresses - Virtual Private Gateway
を入力
- Cloud VPN トンネル4(手順10で設定した2つ目のVPNトンネル)
- 名前 : わかりやすい名前を入力
- ピアASN : 5でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #2 > #4: Border Gateway Protocol (BGP) Configuration
のBGP Configuration Options: Virtual Private Gateway ASN
を入力 - Cloud Router のBGP IP : 5でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #2 > #3: Tunnel Interface Configuration
のInside IP Addresses - Customer Gateway
を入力 - BGP ピア IP : 5でダウンロードしたVPN接続設定ファイルの
IPSec Tunnel #2 > #3: Tunnel Interface Configuration
のInside 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本という形が現実的だと想定されます。
最後まで読んで頂いてありがとうございました。