🤝

Google Cloud エンジニアのための Google Cloud と AWS Transit Gateway の接続ガイド

に公開

はじめに

こんにちは、クラウドエースの高牟礼です。
僕は普段 Google Cloud をメインに使っているのですが、皆さんはこんな課題にぶつかったことはありますか?

「データ分析は BigQuery がある Google Cloud を使いたい、でもサービス本体は AWS 側にある。。。」
「別チームが AWS で立てたシステムと、 Google Cloud の VPC をセキュアに繋げたい」

Google Cloud コンソールは見慣れたものですが、いざ AWS と繋いでと言われると、どのサービスを使えばいいのかと不安になりますよね。
その不安も無理はありません。AWS には複数の VPN 接続の方法があることに気づきます。例えば、 Google Cloud VPN と AWS の VPN サービスを1対1で接続するだけでも、ひとまずは疎通可能です。
しかし、もし接続先の AWS 側が「複数の VPC 」で構成されていたり、「将来的にオンプレミスや他の VPC とも接続するネットワークハブとして機能させたい」という場合はどうでしょうか。
その場しのぎの1対1接続では、将来の拡張に耐えられないかもしれません。

そこで登場するのが、 AWS の「 Transit Gateway 」です。 Transit Gateway は、 AWS 側のネットワークハブとして機能し、複数の VPC や VPN 接続を一元管理できるサービスです。

この記事は「 Google Cloud のことはわかるけど、 AWS のサービスやネットワークは初心者」という視点で、 Google Cloud の HA VPN と AWS の Transit Gateway を使った接続手順を、用語を噛み砕きながら解説していきます。

🎯 本記事のゴールとアーキテクチャ

この記事では、以下の公式ドキュメントに記載されているアーキテクチャの構成を目指します。

Google Cloud と AWS 間で、それぞれの VPN トンネルを張り、お互いのネットワーク情報を交換する構成です。
本記事では、AWS 側で Transit Gateway を採用します。構成図に基づき、 Google Cloud 側の HA VPN と AWS 側でお互いに冗長構成をとることで、片方のトンネルに障害があっても通信が継続できる堅牢な構成を目指します。

構成図のポイントを見ていきます。
👉右側: Google Cloud 側

  • Cloud VPN : Google Cloud 側のネットワークの出入り口です。高可用性のため、Int 0 と Int 1 の2つのインターフェースを持ちます。
  • Cloud Router : AWS 側と経路情報を自動で交換( BGP )するためのルーターです。
  • VPC Routing / Subnet: Google Cloud 側のプライベートネットワークです。 Cloud Router を通じて、 AWS 側と通信できるようになります。

👈左側: AWS 側

  • Transit Gateway : AWS 側のネットワークハブです。複数の VPC や VPN を束ねる役割を持ちます。
  • AWS VPC : AWS 側のプライベートネットワークです。 Transit Gateway を経由して Google Cloud 側と通信します。
  • AWS VPN Connection : Google Cloud の HA VPN(2インターフェース)に対応するため、 AWS 側でも2つの VPN 接続を作成し、 Transit Gateway にアタッチします。

最終的なゴールは、 Google Cloud 側の VPC と、 AWS 側の VPC が、お互いにプライベート IP アドレスで通信できるネットワーク経路を BGP で確立することです。

1-1. Cloud Router の作成

まずは Google Cloud 側から設定していきます。 HA VPN は動的ルーティングを使うので、 Cloud Router と組み合わせる必要があります。

  1. Google Cloud コンソールから[ Cloud Router ]を開き、「ルーターを作成」をクリックします。
  2. 名前、ネットワーク(接続したい VPC )、リージョンを指定します。
  3. Cloud Router の ASN を設定しておきます。これは BGP (動的ルーティング)で使用する Google Cloud 側の識別番号です。 AWS 側と重複しないプライベート ASN (64512~65534など)を推奨します。ここでは仮に65001とします。

1-2. HA VPN ゲートウェイの作成

VPN トンネルの Google Cloud 側窓口を作成します。

  1. コンソールから、[ VPN ]を開き、「 VPN 接続を作成」をクリックします。
  2. 高可用性( HA ) VPN を選択します。
  3. VPN ゲートウェイ名、ネットワーク、リージョンを指定します。
  4. 「作成して続行」をクリックします。Cloud VPN トンネルなどは後ほど設定するので、ひとまず元のコンソール画面に戻ります。
  5. VPN ゲートウェイの作成が完了すると、2つの IP アドレスが払い出されています。
    2つの IP アドレスは AWS 側の設定で接続相手の IP として入力する必要があるので、控えておいてください。

一旦 Google Cloud 側の設定はここまでです。続いて、 AWS 側の設定を行っていきます。

2-1. Transit Gateway の作成

AWS の「 Transit Gateway 」とは?
複数の VPC や VPN 接続を束ねるハブのようなものです。

  1. コンソール画面から[ Transit Gateway アタッチメント] を開き、「 Transit Gateway を作成」をクリックします。
  2. 名前タグを指定して、 ASN を設定します。 Google Cloud 側の ASN と重複しない番号を指定してください。ここでは仮に64512とします。
  3. 「 VPN ECMP サポート」には必ずチェックが入っていることを確認してください。 ECMP は HA VPN が作るトンネルに通信をうまく分散させるために必要な機能です。高可用性接続のキモになります。
  4. その他のオプションはデフォルトのままで良いと思います。「 Transit Gateway を作成」をクリックします。

2-2. カスタマーゲートウェイの作成

AWS の「カスタマーゲートウェイ」とは?
AWS 側から見たお客様( Customer )側= Google Cloud 側の VPN 装置の情報のことです。
Google Cloud でいう「ピア VPN ゲートウェイ」を作成する感覚に近いです。

  1. コンソール画面から[カスタマーゲートウェイ]を開き、「カスタマーゲートウェイを作成」をクリックします。
  2. 名前タグを指定して、 BGP ASN には Google Cloud 側で設定した ASN を入力します。
  3. IP アドレスに、先ほど控えておいた Google Cloud VPN ゲートウェイの IP アドレスを入力します。
  4. 「カスタマーゲートウェイを作成」をクリックし、 Google Cloud 側は IP を2つ持っているので、もう一つの VPN ゲートウェイの IP アドレスでカスタマーゲートウェイを作成します。

2-3. Transit Gateway アタッチメントの作成

Transit Gateway アタッチメントは、Transit Gateway ハブに、 VPN 接続用のポートを取り付けるイメージです。
まずは、Transit Gateway と AWS の VPC を接続します。

  1. コンソール画面から[ Transit Gateway アタッチメント]を開き、「 Transit Gateway アタッチメントを作成」をクリックします。
  2. 名前タグを指定し、Transit Gateway ID には先ほど作成した Transit Gateway を選択します。アタッチメントタイプは「 VPC 」を選択します。
  3. VPC ID には Google Cloud 側と重複しない IPv4 CIDR で作成された VPC を選択します。
  4. 「 Transit Gateway アタッチメントを作成」をクリックします。

続いて、Transit Gateway と Google Cloud を接続するための設定を行っていきます。

  1. 同様に名前タグを指定し、 Transit Gateway ID を選択します。アタッチメントタイプは「 VPN 」を選択します。
  2. 既存のカスタマーゲートウェイを選択し、ルーティングオプションは「動的」であることを確認します。
  3. その他の項目はデフォルトで良いと思います。「 Transit Gateway アタッチメントを作成」をクリックします。
  4. もう一つのカスタマーゲートウェイ ID で 2個目の VPN Transit Gateway アタッチメントを作成します。

VPN Transit Gateway アタッチメントを作成すると、自動的に Site-to-Site VPN 接続のリソースも作成されています。

VPN ID の詳細を確認すると、 AWS VPN 接続の「設定のダウンロード」が行えます。

ダウンロードファイルには、 Google Cloud 側に設定する以下の情報がすべて記載されています。

  • AWS 側の VPN エンドポイント IP
  • 事前共有キー( PSK )
  • BGP の設定情報

一旦 AWS 側の設定はここまでです。 Google Cloud 側に設定を反映させていきます。

3-1. ピア VPN ゲートウェイの作成

AWS から設定ファイルをもらったので、Google Cloud に戻って設定を完成させていきましょう。

  1. コンソール画面の[ VPN ] の [ピア VPN ゲートウェイ] タブを開き、[ピア VPN ゲートウェイを作成] をクリックします。
  2. 名前を入力し、「4つのインターフェース」を選択し、 AWS の設定ファイルに記載されている、 AWS 側の IP アドレスを4つのインターフェースに設定します。

3-2. VPN トンネルの作成と BGP セッションの確立

Google Cloud の HA VPN と AWS のピアゲートウェイを接続するトンネルを4本作成します。
この作業の中で BGP セッションも一緒に設定します。

  1. [ VPN ] > [ VPN トンネル] タブを開き、[ VPN トンネルを作成] をクリックします。
  2. 作成した VPN ゲートウェイを選択します。
  3. 「 VPN トンネルを4つ作成する」を選択し、作成した Cloud Router を選択します。
  4. 設定ファイルを確認し、関連付けられているピア VPN ゲートウェイインターフェースの IP に注意しながら、 PSK を入力していきます。VPN トンネル4つ分の PSK を入力してください。
  5. 「作成して続行」をクリックし、続いて BGP セッションを構成していきます。トンネル4つ分の BGP セッションを設定します。
  6. 名前を入力し、「ピア ASN 」には AWS 側の ASN を入力し、「 BGP IPv4 アドレスを割り振る」は「手動」を選択してください。設定ファイルを確認して Cloud Router の BGP IPv4 アドレスと、BGP ピア IPv4 アドレスを入力します。

すべてのトンネルと BGP セッションを作成し終えたら、[ VPN トンネル] リスト画面に戻ります。
4本すべてのトンネルの [ VPN トンネル ステータス] が緑色のチェックマーク [確立済み] になり、[ BGP セッション ステータス] も「確立されました」と表示されていれば、 Google Cloud と AWS 間の HA VPN 接続は完了です🎉

AWS 側でも接続がうまくいっているのか確認してみます。
[ VPC ] > [ Site-to-Site VPN 接続] を開いて、対象の VPN 接続を選択し、「トンネルの詳細」タブを見ます。ステータスが「 UP 」になっていれば成功です!

これで、 Google Cloud と AWS 間で暗号化された VPN トンネルが確立し、 BGP によってお互いの VPC /サブネットの経路情報が自動的に交換されているはずです。

まとめ

今回は、Google Cloud HA VPN と AWS の Transit Gateway を接続する手順を解説しました。
今回の構築プロセスを振り返ります。

  1. Google Cloud 側: HA VPNゲートウェイ(2つのインターフェース)と、 BGP の終端となる Cloud Router を作成。
  2. AWS 側: ネットワークハブとなるTransit Gateway を作成し、 AWS 側に「接続相手」として定義するリソースであるカスタマーゲートウェイを作成。
  3. AWS 側: Transit Gateway に対して、作成した VPC をアタッチし、 Google Cloud 接続用のアタッチメントを作成。
  4. Google Cloud 側: AWSの設定ファイルを使って、ピア VPN ゲートウェイと、 VPN トンネル、 BGP セッションを設定。

結果として、設定項目は多岐にわたりましたが、Google Cloud と AWS 間で4本の IPsec トンネルが確立され、 BGP によってお互いの VPC 経路が自動的に交換される、安定したマルチクラウドネットワークが完成しました。
この記事が、 Google Cloud と AWS 間のセキュアなネットワーク接続を検討している方の一助となれば幸いです。

Discussion