AWS Transit Gateway で GCP の VPC と高可用性(HA) VPN 接続

2020.06.30

こんにちは、菊池です。

今回は、AWSのTransit Gatewayを経由して、GCPとのVPN接続を試してみました。以下の記事で、AWSとGCPをVPN接続する構成パターンを紹介されていますが、こちらはTransit Gatewayではなくて仮想プライベートゲートウェイ(VGW)を使っていました。

AWS側の接続にTransit Gateway(TGW)を使うことで変わるのは、TGWでは等コストマルチパス(ECMP)がサポートされるということです。

AWS Transit GatewayとGCPの高可用性VPN接続

構成イメージは以下のようになります。

AWS、GCPのそれぞれの仕様上、両方で冗長性を確保するためには全部で4つのVPNトンネルの接続が必要です。

  • AWS Site to Site VPNの仕様
    • 1つの接続でAWS側は2つの接続用IPアドレスが用意される(冗長化される)
    • 一方で、1つの接続では対向側は1つのIPアドレスにしか設定できない(1つのIPアドレスに対して2つのトンネルを接続)
  • GCP VPN接続の仕様
    • 高可用性(HA)VPNではVPNゲートウェイに2つのインターフェースが作成される
    • 対向側のIPはトンネルごとに指定可能

AWSでVGWを使ったVPN接続では、同じ宛先CIDRに対しては1つのトンネルのみが利用されます。そのため、4つのトンネルを作成すると平常時は無駄が多くなってしまいます。一方で、Transit GatewayではECMPがサポートされるので、4つのトンネル全てを利用した負荷分散が可能になります。

AWS:Transit Gatewayの作成

まずはAWSでTransit Gatewayを作成しておきます。ここで、[VPN ECMP Support] が [Enable] になっていることを確認しましょう。このパラメータはTGW作成時にのみ指定できます。また、BGPで経路交換するために、TGWのASNを指定しておきます。

GCP:VPNゲートウェイの作成

高可用性(HA)VPNのゲートウェイを作成します。

次に進むと、VPNゲートウェイのインターフェースのIPが2つ、0と1で下記のように割り当てられます。このIPを確認して、AWSの操作にも戻ります。

AWS:VPN接続の作成(2つ)

AWS側でサイト間VPNの作成に入ります。

カスタマーゲートウェイは新規作成を選び、先ほどGCPで作成されたVPNゲートウェイのインターフェース0のIPアドレスを入力します。また、BGP ASNはTGWと重複しないものを指定します。

接続が作成できたら、設定をダウンロードしましょう。Genericベンダーのものを選ぶと、内容を確認しやすいです。

同じように、もう一つのVPN接続を作成しておきます。こちらもGCPで作成されたVPNゲートウェイのインターフェース1のIPアドレスを入力します。

設定ファイルも同様にダウンロードしておきます。

2つの接続が作成されました。

GCP:VPNトンネルの作成(4つ)

GCPの設定に戻ります。ここから先は、AWSからダウンロードしたVPNの設定ファイルに記載された情報を元に設定していきます。

新しいピアゲートウェイを作成して、ここに設定ファイルに記載されているAWS側のIPアドレスを入力しましょう。

1つめのトンネルの作成です。IKE事前共有キーも、設定ファイルにあるものを記載します。

続いてBGPの設定。こちらも、設定ファイルに記載されているIPを入力します。

上記のトンネル設定を2回、AWSの1つ目のVPN接続に対して2つのトンネルを作成します。問題なければ、以下のようにすぐアップが確認できるでしょう。

AWSの2つ目のVPN接続に対して、同様の設定を行い、合計で4つのトンネルを作成しました。

AWSのVPN接続とGCPのトンネル設定で、IPの組み合わせなどを間違えないように気をつけましょう。

AWS:受信経路の確認

4つのトンネルが作成・アップできたら、AWS側で受信経路の確認をします。

まずはAWS側の1つ目のVPN接続がアップしていることを確認。経路も受信しているようです。

AWS側の2つ目のVPN接続もアップしています。

TGWのルートテーブルを確認すると、GCPへの宛先経路情報として4つの経路が学習されていることが確認できます。

AWS:VPCのアタッチ

AWSのTGWにVPCをアタッチします。

TGWがAWSのVPCへの経路を持ちました。これでGCPに対して、AWS VPCの経路情報が広報されます。

GCP:受信経路の確認

GCPのVPCでルートテーブルを確認します。AWSに対して4つの経路が同じ優先度で学習されていることが確認できました。

まとめ

AWSのTransit GatewayとGCPのVPN接続を試しました。Transit Gatewayで利用可能なECMPを使うことで、可用性の確保と負荷分散による広帯域が実現可能です。