コンテンツに移動
ネットワーキング

Google Cloud での IPv6 ネットワークの計画

2023年2月22日
https://storage.googleapis.com/gweb-cloudblog-publish/images/networking_2022_txNlOe6.max-2500x2500.jpg
Google Cloud Japan Team

※この投稿は米国時間 2023 年 2 月 14 日に、Google Cloud blog に投稿されたものの抄訳です。

Google Cloud は幅広い IPv6 機能をサポートしています。Google Cloud で IPv6 アドレス指定を使用する場合、外部接続向けのグローバル ユニキャスト アドレス(GUA)またはプライベート接続向けのユニーク ローカル アドレス(ULA)を選択できます。前回のブログ記事では、Google Cloud でプライベート通信に ULA アドレス指定を使用する状況とその方法をご紹介しました。このブログ記事では、VPC ネットワーク内で Google Cloud の GUA および ULA アドレス空間、そしてVM インスタンスごとに使用できる 40 億の IPv6 アドレスを使って、さまざまな方法でユーザーの環境向けにカスタマイズする方法をご紹介します。

まず、背景情報を少しご説明しましょう。Google Cloud は、fd20::/20 の範囲を ULA アドレス割り当て用に、2600:1900::/28 の範囲を GUA アドレス割り当て用に予約しています(IPv6 アドレスの概要についてはこちらをご覧ください)。各 Google Cloud VPC ネットワークは 1 つ以上のサブネットから構成されており、それらのサブネットはそれぞれ IP アドレス範囲が関連付けられたリージョン リソースです。デュアルスタック サブネットは、IPv4 と IPv6 両方のアドレス範囲が関連付けられたリソースです。IPv6 サブネットのサイズは /64 です(例: fd20:a:b:c::/64)。IPv6 対応の各 VM には、サブネットから /96 アドレス範囲が割り当てられます。これにより、VM インターフェースごとに 40 億の一意の IPv6 アドレスが提供されます。

デュアルスタック サブネットを使用した VPC ネットワークを構成できるのは、サブネット モードがカスタムに設定されている場合だけです。IPv6 アドレス指定は、サブネット モードが自動に設定されている場合は使用できません。カスタムモードの VPC ネットワークは、以下のコマンドで作成できます。

読み込んでいます...

VPC ネットワークで ULA アドレス指定を使用する場合、Google Cloud では以下のどちらかを選択できます。

  • fd20::/20 の範囲から /48 アドレス範囲を VPC に自動的に割り当てる

読み込んでいます...

  • fd20::/20 の範囲から /48 アドレス範囲を選択して割り当てる

読み込んでいます...

/48 アドレス範囲はそれぞれ GCP のすべてのリージョンに自動的に割り当てられますが、/48 は部分的に各リージョン用に予約されています(例: /54 は us-central1 用、/55 は europe-west1 用、/56 は asia-south1 用)。プレフィックスの長さが /64 のサブネットは、これらのリージョン予約それぞれから割り当てられます。これにより、以下を作成できます。

  • /56 が自動的に予約されるリージョンで最大 256 個のサブネット

  • /55 が自動的に予約されるリージョンで最大 512 個のサブネット

  • /54 が自動的に予約されるリージョンで最大 1024 個のサブネット

/48 全体はユーザーのネットワークのみで利用可能で、GCP のその他のネットワークとは一切重複しないことが保証されます。

以下のように、ULA 範囲が関連付けられたサブネットを作成できます。

読み込んでいます...

ULA サブネットと関連付けることで、内部接続用の ULA アドレスを持つ VM を作成できます。/96 は作成時に VM に割り当てられます。

読み込んでいます...

サブネットに GUA アドレス指定を使用する場合は、作成するサブネットごとに /64 が割り当てられます。GUA サブネットは 2600:1900::/28 アドレス範囲から割り当てられます。

読み込んでいます...

GUA サブネットと関連付けることで、外部接続用の GUA アドレスを持つ VM を作成することもできます。/96 は作成時に VM に割り当てられます。

読み込んでいます...

デフォルトでは、Google Cloud は DHCPv6 を使用して最初の /128 アドレスを VM インターフェースに割り当て、この最初の /128 用の自動 DNS AAAA レコードを作成します。ただし、Google Cloud では、デフォルトの設定を変更して、各 VM インターフェースに割り当てられた 40 億の IPv6 アドレスを使用するという柔軟な対応もできます。この機能を使用すると、以下のような処理が可能になります。

  1. コンテナを作成し、一意の 32 ビットのコンテナ ID を VM のアドレス範囲に含める(例: <VM の 96 ビットの IPv6 範囲> <32 ビットのコンテナ ID>)。これにより、トラフィックの受信側はコンテナ ID で送信元を特定できる。

  2. Google Cloud でアプリケーションを構築している場合、ネットワーク レイヤを介して一部のメタデータを不透明な方法で渡すことができる。

  3. 難読化の目的で、割り当てられた /96 アドレス範囲から任意のランダムな /128 IPv6 アドレスを使用する。

  4. 最後の 32 ビットからランダムなビットを使用して、ロケーション ID などのユーザーの環境と関連性の高い情報をエンコードすることもできる。

  5. よく知られたサフィックスを使用して特定のタイプのワークロードを識別することで、サフィックスベースのプログラミングを使用する。

以下に、ネットワークの名前空間を使用して一意の IPv6 アドレスをコンテナに割り当てる場合の例を示します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/IPv6_network.max-2000x2000.jpg

VM で実行されている開発環境と本番環境向けのコンテナがあると想定しましょう。各環境に一意の ID(開発環境に ID=1、本番環境に ID=2 など)が割り当てられている場合、VM の下位の 32 ビットでこれらの ID をエンコードします。その後、下位の 32 ビットが「2」であるアドレスとの接続のみを本番環境データベースが受け入れるように ACL を適用します。これにより、ネットワーク レイヤで環境を分離できるため、セキュリティが強化されます。

読み込んでいます...

以上の説明で、各 VM への /96 アドレス割り当てを独自の方法で利用して、ご利用の環境向けにカスタマイズする方法をご理解いただけましたら幸いです。Google Cloud で IPv6 の使用を開始する方法について詳しくは、ドキュメントをご覧ください。


- プロダクト マネージャー Rohit Dalal
- ソフトウェア エンジニア Ujjwal Jain

投稿先