はじめに
2025/8/18 に国立研究開発法人理化学研究所様における Google Cloud の専用線接続及び VPN 接続の導入事例が公開されました。
専用線接続および VPN 接続でセキュアな通信を実現! オンプレミス×マルチクラウドのハイブリッド構成による医科学研究向けデータ通信基盤構築
アイレットはインフラ構築について支援させていただきました。 当該記事はインフラ構築の裏側について解説する記事となります。
今回は、パブリッククラウドと Google Cloud 間のVPN接続および相互の名前解決やセキュアな API 通信の実現に関する内容となります。
事例に関連する記事はこちら:
概要
理化学研究所様が Google Cloud 上の各種 API を利用する際の環境として、他パブリッククラウドに構築した仮想デスクトップサービスを採用することとなりました。
以下はパブリッククラウドおよび Google Cloud の全体構成図です。
本記事では、Google Cloud へのVPN接続及び名前解決について解説します。
各 VPN サービスの概要と接続パターン
本構成では、パブリッククラウドと Google Cloud 間を接続するために Cloud VPN を使用しています。両クラウド間で安全かつ可用性の高いネットワーク接続を確立し、仮想デスクトップから Google Cloud の各種 APIをセキュアに利用できるようにしています。
Cloud VPN の概要
Google Cloud の Cloud VPN は、IPSecトンネルを使用して、オンプレミスや他クラウド、Google Cloud 間のネットワークをセキュアに接続できるVPNサービスです。
Cloud VPN では、2種類が提供されています。(本記事では HA VPN について記載します。)
以下は、Google Cloud における HA VPN と Classic VPN の主な違いをまとめた比較表です。
項目 | HA VPN | Classic VPN |
インターフェース | 2つ | 1つ |
インターフェースあたりの外部IPアドレス | 1つ | 1つ |
構成可能なトンネル | 2本 | 1本 |
ルーティング | BGP (動的ルーティング) | 静的ルーティング (2025年8月1日から BGP での利用は非推奨) |
SLA | 99.99%または99.9% (構成によって可変、HA VPN トポロジを参照) |
99.9% |
今回の構成上の主要リソースは以下のとおりです。
- Cloud VPNゲートウェイ (HA VPN)
- Google Cloud 側のVPN通信の出入り口となるリソースで、VPC にアタッチする。
- ピアVPNゲートウェイ
- 対向の IP と ASN を登録するためのリソース。
- VPNトンネル
- Cloud VPN ゲートウェイと対向を結ぶVPN接続。
- 対向の ASN を登録する。
- IPSec で使用する暗号化プロトコルとして、IKEv1 と IKEv2 の両方をサポート。
- Cloud Router
- BGP のスピーカーとレスポンダーの機能を持つフルマネージドサービス。
- Google Cloud 側の ASN を登録する。
- Cloud VPN と連携して BGP で受信したルートを VPC の動的ルートに登録する。
冗長構成の接続パターン
Google Cloud でのVPN接続においては、冗長性と高可用性を確保するために、複数のトンネルを使用する構成を取ることができます。
HA VPN の構成で冗長化する場合、次の2種類のパターンが存在します。
- トンネル2本構成
- HA VPNゲートウェイ:1つ作成。(インターフェース1つ使用)
- ピアVPNゲートウェイ: 対向のパブリックIPを2つ登録。
- トンネル4本構成
- HA VPNゲートウェイ:1つ作成。(インターフェース2つ使用)
- ピアVPNゲートウェイ:対向のパブリックIPを4つ登録。
VPN 構築
パブリッククラウドと Google Cloud 間にVPN接続を構築するには、両クラウド上で VPN 関連リソースの作成と適切な設定が必要です。
本記事では、HA VPN を用いた構成を前提に、Google Cloud 側での構成要素や設計上の考慮点についてご紹介します。
Google Cloud側での VPN 構築
Google Cloud 側では、以下リソースを構成します。
本構成における VPN 接続の観点から、特に設計時に考慮した一部の設定項目についても併せてご紹介します。
リソース | 設定項目 | 設定内容、考慮事項 |
VPC (サブネット) |
|
|
Cloud Router |
|
|
Cloud VPN ゲートウェイ |
|
|
ピアVPNゲートウェイ |
|
|
VPNトンネル |
|
|
BGP セッション |
|
|
VPN 経由での API 利用
上記の Google Cloud 側での VPN 設定に加え、対向側でも VPN 設定を行うことで、パブリッククラウドと Google Cloud 間の VPN接続が確立され、相互通信が可能な状態となりました。
本構成では、仮想デスクトップ からの外部通信について、以下の要件に基づいて通信制御を行っています。
- *.googleapis.com への通信 → VPN 経由で Google Cloud に接続
- *.${cluster-id}.cloudworkstations.dev への通信 → VPN 経由で Google Cloud に接続
- それ以外の通信 → インターネットに接続
- Google Cloud からの API 実行はプライベートネットワーク経由で接続
これにより、特定ドメインに対する通信のみをセキュアなネットワーク経路に分離することが可能となり、API 呼び出しを安全かつ閉域で実行できるようになります。
上記の要件を実現するために パブリッククラウドと Google Cloud 側で実施した設定についてご紹介します。
プライベートネットワーク経由での API アクセス
ここでは、プライベートネットワーク経由で API を実行するため、Private Service Connect の作成、Cloud Router への設定追加、VPC の Firewall のポリシー追加を行います。
Private Service Connect の概要
Private Service Connect (PSC) は、Google Cloud API や公開サービスへのアクセスをプライベートIP経由で提供する機能です。
VPC 内に作成したエンドポイントから PSC 経由で Google API や VPCでホストされている公開サービス(所有者は Google、サードパーティ、組織内の3種がある)にアクセスすることが可能です。
Private Service Connect の作成
本構成では、以下の2種類のアクセスに対応するため、用途ごとに PSC を作成する必要があります。
- Google API 向け PSC:*.googleapis.com ドメインのサービスにアクセス
- 公開サービス向け PSC:*.${cluster-id}.cloudworkstations.dev (Cloud Workstations) にアクセス
それぞれの PSC 作成にあたっては、エンドポイントが使用する静的IPを指定する必要がありますが、指定できるIP範囲が異なる点に注意が必要です。
Google API 向けの PSC エンドポイントの IP は 自身が使用しているサブネットの範囲内にすることはできません。
公開サービス向けの PSC エンドポイントの IP は 自身が使用しているサブネットの範囲内のIPを指定します。
Cloud Router の設定追加
Google API 向け PSC エンドポイントの IP アドレスは、Google Cloud 側の VPC CIDR 範囲外に設定されるため、パブリッククラウド側からのアクセスを可能にするには、この IP を明示的に広報する必要があります。
このため、Cloud Router に対してカスタムルートとして PSC エンドポイントの IP (/32) を追加します。
この設定により、Google Cloud 側からパブリッククラウド側へ BGP を通じてルートが広報され、パブリッククラウド側に対して、PSC エンドポイントへのルートが自動的に作成されます。
(公開サービス向け PSC については本対応は不要です。)
Firewall ポリシー追加
パブリッククラウドの CIDR から Google Cloud の VPC への通信を許可するためには、VPC にアタッチしている Firewall ポリシーに設定を追加する必要があります。※下りのルールは Cloud Workstations を利用する場合に必要になります。
トラフィックの方向 | ターゲット | ソース | 送信先 | プロトコルとポート | アクション |
上り (内向き) | すべてに適用 | パブリッククラウドの CIDR |
|
tcp:443 | 許可 |
下り (外向き) | すべてに適用 | – |
|
tcp:443、80、22 | 許可 |
DNS 名前解決
Private Service Connect (PSC) 経由で Google Cloud の各種サービスを利用するためには、対象のドメイン名 (FQDN) を PSC エンドポイントの IP アドレスに名前解決できるように構成する必要があります。
本構成では、仮想デスクトップから以下のドメイン名が PSC エンドポイントに名前解決されるよう、Google Cloud とパブリッククラウド双方で DNS の設定を行いました。
Cloud DNS (Google Cloud)
- DNSゾーン作成
- PSC エンドポイントごとに個別の DNS ゾーンを作成し、それぞれ PSC の静的 IP に対応する A レコードを登録する。
- *.googleapis.com. → Google API 向け PSC エンドポイントの IP に名前解決する。
- *.${cluster-id}.cloudworkstations.dev. → 公開サービス向け PSC エンドポイントの IP に名前解決する。
- PSC エンドポイントごとに個別の DNS ゾーンを作成し、それぞれ PSC の静的 IP に対応する A レコードを登録する。
- DNSポリシー作成
- パブリッククラウド側からの名前解決要求 (DNS クエリ) を Google Cloud 側で受信できるよう、DNS ポリシーを作成する。
- ポリシー作成後、紐づけた Google Cloud の VPC CIDR 範囲の静的IPが生成される(受信転送クエリIP)
パブリッククラウドのDNSリゾルバ
- ルール作成
- Google Cloud 側に名前解決をさせたいドメインごとに転送設定を作成する。
- ドメインが googleapis.com. の場合に受信転送クエリIPに転送する。
- ドメインが${cluster-id}.cloudworkstations.dev.の場合に受信転送クエリIPに転送する。
- Google Cloud 側に名前解決をさせたいドメインごとに転送設定を作成する。
これにより、仮想デスクトップから特定ドメインへの名前解決クエリのみを Cloud DNS に転送することが可能となります。
Cloud DNS は該当ドメインに対応する PSC エンドポイントの IP を返却し、その IP に対して VPN 経由で通信が実行される、という流れになります。
まとめ
本記事では、他パブリッククラウドの仮想デスクトップから Google Cloud の API を利用する構成について、VPN や DNS 周辺の環境構築に焦点を当ててご紹介しました。
Google Cloud 側での Cloud DNS と Private Service Connect (PSC) の設定、パブリッククラウド側での DNS転送によって、Google API や Cloud Workstations への名前解決やVPN経由でのプライベートアクセスを行えるように構成しました。
これにより、API をセキュアに実行することができるため、VPN を利用する際は本記事で紹介したような構成が有力な選択肢のひとつになると考えられます。