AWSとGCPのVPN接続を複数パターン試してみる(Classic VPN編)
はじめに
データアナリティクス事業本部のkobayashiです。
AWSとGCPをセキュアな環境で接続してそれぞれのサービスを相互に利用できないか検証するためそれぞれのVPC間をVPNで接続してみました。
GCPのVPNオプションにはClassic VPNと高可用性(HA)VPNがありそれぞれの接続パターンと、IPSecのトンネルを冗長化する・しないのパターンを組み合わせた合計4パターンで接続を試してみましたのでその方法をまとめます。
接続パターン
Classic VPN接続
AWSでAWS VPN connectionを作成すると2つのIPSec tunnelが利用できます。 上のパターン(以降パターン1)ではそのうちの1本を利用するパターン、下のパターン(以降パターン2)は2本とも利用してフェイルオーバーに対応するパターンになります。
高可用性(HA)VPN接続
HA VPNの接続パターンになります。 上のパターン(以降パターン3)ではAWS、GCPのVPN connectionを冗長化しています。下のパターン(以降パターン4)ではパターン3で冗長化した上でさらにAWS VPN connectionのIPSec tunnelを全て利用しています。パターン4がGCPの推奨する高可用性(HA)VPN接続方法となります。
パターン4が本番運用時の構成となると想定されますが、この場合はAWSでVPN接続を2本、GCP側でVPNトンネルを4本用意する必要があるため非常に高コストになリます。 普段の検証・開発作業ではパターン1のAWSでVPN接続を1本、GCP側でVPNトンネルを1本という形が現実的だと想定されます。
接続方法
接続の手順ですが、全ての方法とも以下の流れで設定していきます。
- GCPでパブリックIPを作成する
- AWSでGCPのパブリックIPを使ってカスタマーゲートウェイ・VPN接続を作成する
- GCPでAWSのVPN接続でダウンロードしてファイルを元にVPNトンネルを作成する
全てのパターンで「AWSでの仮想プライベートゲートウェイの作成」、「GCPでのクラウドルーターの作成」は共通なので予め作成しておきます。
AWSでの仮想プライベートゲートウェイの作成
仮想プライベートゲートウェイの作成でASNをAmazonのデフォルトASNにして作成したあと、仮想プライベートゲートウェイをVPN接続したいVPCにアタッチします。
またBGPを用いてルーティング情報の交換を行うのでVPCのルートテーブル > ルート伝播 > ルート伝播の編集
でアタッチした仮想プライベートゲートウェイのルート伝播をチェックして伝播
がはい
となることを確認します。
GCPでのクラウドルーターの作成
ハイブリッド接続 > クラウドルーター
でルーターを作成を選択します。主な設定は以下です。それ以外は既定値のままです。
- 名前 : わかりやすい名前を入力
- ネットワーク : VPN接続を行いたいネットワークを選択
- リージョン : 同じくVPN接続したいリージョンを選択
- Google ASN : 特に指定がなければ
65000
を入力
以上入力して作成を押下してクラウドルーターを作成します。
Classic VPN接続(パターン1)の接続方法
GCPの作業
手順1).GCPの管理コンソールでハイブリッド接続 > VPN
と進み、VPN作成でClassic VPN
を選択します。
手順2).VPN接続の作成を行います。主な設定は以下です。それ以外は既定値のままです。
- 名前 : わかりやすい名前を入力
- ネットワーク : VPN接続を行いたいネットワークを選択
- リージョン : 同じくVPN接続したいリージョンを選択
- IPアドレス : IPアドレスを作成で新規にパブリックIPを作成
IPアドレスを作成
を押下し必要情報を入力
ここまででIPアドレスが作成され表示されます。
このIPアドレスをメモして一旦GCP側の作業を止めます。
AWSの作業
手順3).サイト間のVPN接続の作成を行います。主な設定は以下です。それ以外は既定値のままです。
- 仮想プライベートゲートウェイ : 事前に作成した仮想プライベートゲートウェイIDを選択
- カスタマーゲートウェイ : 新規に作成
- IPアドレス : 2で作成したパブリックIPを入力
- BGP ASN : 65000を入力(クラウドルーター作成時のGoogle ASN)
- トンネルオプション : 特に指定しない
手順4).作成したVPN接続からVPN接続設定ファイルをベンダーはGenericにしてダウンロードをします。
ここでAWS側の作業は終わりです。
再びGCPの作業
手順5).GCPのVPN接続の作成2から再び進めます。スクロールすると新しいアイテムの項目があるのでここでVPNトンネルの設定を行います。4でダウンロードしたVPN接続設定ファイルの情報を使います。
- リモートピアIP :
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
を入力 - ルーティングオプション :
動的(BGP)
を選択 - クラウドルーター : 予め作成しておいたものを選択
手順6).BGPセッションはペンマークを押下するとモーダルが表示されるので必要項目を入力します。ここでも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
を入力
ここまで入力して作成を押下すればVPNトンネルが作成されます。 接続が確立すると以下の様な状態になります。
AWS側でも接続を確認します。接続が確立していればサイト間のVPN接続
のTunnel Details
でトンネルのステータスがアップ
になります。
試しに、GCPでVMインスタンスを作成してEC2にPingを打ってみるとインスタンス同士で疎通していることが確認できます。
Classic VPN接続(パターン2)の接続方法
パターン1の構成にGCPのVPNトンネルを追加すれば良くパターン1の手順1-6までは同じ作業なので割愛します。
GCPの作業
手順7).VPNゲートウェイの名前
を押下して作成済みのVPNゲートウェイを編集します。
手順8).VPNトンネルを追加を押下してVPNトンネルを追加します。
手順9).VPNトンネル情報を入力します。パート1の手順5同様にダウンロードしたVPN接続設定ファイルの情報を使いますが、IPSec Tunnel2の情報を使います。
- リモートピアIP :
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
を入力 - ルーティングオプション :
動的(BGP)
を選択 - クラウドルーター : 予め作成しておいたものを選択
手順10).BGPセッションはペンマークを押下するとモーダルが表示されるので必要項目を入力します。ここでもVPN接続設定ファイルのIPSec Tunnel2の情報を使います。
- 名前 : わかりやすい名前を入力
- ピアASN :
IPSec Tunnel #2 > #4: Border Gateway Protocol (BGP) Configuration
のBGP Configuration Options: Virtual Private Gateway ASN
を入力 - Cloud Router のBGP IP :
IPSec Tunnel #2 > #3: Tunnel Interface Configuration
のInside IP Addresses - Customer Gateway
を入力 - BGP ピア IP :
IPSec Tunnel #2 > #3: Tunnel Interface Configuration
のInside IP Addresses - Virtual Private Gateway
を入力
これで2本目のVPNトンネルが作成されますので、接続が確立すると以下の様な状態になります。
AWS側でも接続を確認します。接続が確立していればサイト間のVPN接続
のTunnel Details
でトンネルのステータスがパターン1では片方しかアップ
になっていなかった状態が2本ともアップ
になります。
これでパターン2の接続ができました。
まとめ
Classic VPN接続の2パターンを設定してみました。次に高可用性(HA)VPN接続をしてみたいと思いますが、長くなったので高可用性(HA)VPN接続は別エントリーにまとめたいと思います。