AWSとGCPのVPN接続を複数パターン試してみる(Classic VPN編)

2020.04.30

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

はじめに

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

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

GCPのVPNオプションにはClassic VPNと高可用性(HA)VPNがありそれぞれの接続パターンと、IPSecのトンネルを冗長化する・しないのパターンを組み合わせた合計4パターンで接続を試してみましたのでその方法をまとめます。

Cloud VPN の概要  |  Google Cloud

接続パターン

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本という形が現実的だと想定されます。

接続方法

接続の手順ですが、全ての方法とも以下の流れで設定していきます。

  1. GCPでパブリックIPを作成する
  2. AWSでGCPのパブリックIPを使ってカスタマーゲートウェイ・VPN接続を作成する
  3. 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 ConfigurationOutside IP Addresses: Virtual Private Gatewayを入力
  • IKEバージョン : IKEv1を選択
  • IKE事前共有キー : IPSec Tunnel #1 > #1: Internet Key Exchange ConfigurationPre-Shared Keyを入力
  • ルーティングオプション : 動的(BGP)を選択
  • クラウドルーター : 予め作成しておいたものを選択

手順6).BGPセッションはペンマークを押下するとモーダルが表示されるので必要項目を入力します。ここでも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 を入力

ここまで入力して作成を押下すれば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 ConfigurationOutside IP Addresses: Virtual Private Gatewayを入力
  • IKEバージョン : IKEv1を選択
  • IKE事前共有キー : IPSec Tunnel #2 > #1: Internet Key Exchange ConfigurationPre-Shared Keyを入力
  • ルーティングオプション : 動的(BGP)を選択
  • クラウドルーター : 予め作成しておいたものを選択

手順10).BGPセッションはペンマークを押下するとモーダルが表示されるので必要項目を入力します。ここでもVPN接続設定ファイルのIPSec Tunnel2の情報を使います。

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

これで2本目のVPNトンネルが作成されますので、接続が確立すると以下の様な状態になります。

AWS側でも接続を確認します。接続が確立していればサイト間のVPN接続Tunnel Detailsでトンネルのステータスがパターン1では片方しかアップになっていなかった状態が2本ともアップになります。

これでパターン2の接続ができました。

まとめ

Classic VPN接続の2パターンを設定してみました。次に高可用性(HA)VPN接続をしてみたいと思いますが、長くなったので高可用性(HA)VPN接続は別エントリーにまとめたいと思います。