このドキュメントでは、プロキシ ロードバランサで IPv6 トラフィックが処理される方法について説明します。このドキュメントでは、IPv4 のみ(シングルスタック)は IPv4 アドレスのみを使用するリソースを指し、IPv4 と IPv6(デュアルスタック)は IPv4 アドレスと IPv6 アドレスの両方を使用するリソースを指します。
Google Cloud は、バックエンド サービスベースのパススルー ネットワーク ロードバランサの IPv6 トラフィックをサポートしています。詳細については、バックエンド サービスベースの外部パススルー ネットワーク ロードバランサとバックエンド サービスベースの内部パススルー ネットワーク ロードバランサの概要をご覧ください。
グローバル外部アプリケーション ロードバランサとグローバル外部プロキシ ネットワーク ロードバランサは、上り(内向き)IPv6 トラフィックを終端し、IPv4 または IPv6 接続を介してこのトラフィックを IPv4 と IPv6(デュアルスタック)のバックエンドにプロキシします。
次の表に、IPv6 フロントエンドと IPv4 と IPv6(デュアルスタック)のバックエンドをサポートするロードバランサを示します。
機能 | アプリケーション ロードバランサ | プロキシ ネットワーク ロードバランサ | ||
---|---|---|---|---|
内部 | 外部 | 内部 | 外部 | |
IPv6 フロントエンド |
グローバル 従来+ |
グローバル 従来+ |
||
IPv4 と IPv6(デュアルスタック)バックエンド |
クロスリージョン* リージョン* |
グローバル* リージョン* |
クロスリージョン* リージョン* |
グローバル* リージョン* |
* IPv4 と IPv6(デュアルスタック)のインスタンス グループとゾーン NEG バックエンドをサポートします。ゾーン NEG は、GCE_VM_IP_PORT
タイプのエンドポイントでのみデュアルスタックをサポートします。
+ プレミアム ティアでサポート
このドキュメントの以降のセクションでは、グローバル外部アプリケーション ロードバランサとグローバル外部プロキシ ネットワーク ロードバランサによる IPv6 トラフィックの処理方法について説明します。
次の例は、グローバル IPv6 クライアントでロード バランシングがどのように機能するかを示しています。
IPv6 終端を使用すると、ユーザーからの IPv6 リクエストを処理し、IPv4 または IPv6 経由でバックエンドに中継できます。IPv6 を使用すると、次のことができます。
マルチリージョン デプロイでは、単一のエニーキャスト IPv6 アドレスを使用します。マルチリージョン間で稼働しているアプリケーション インスタンスでも必要になるロードバランサの IPv6 アドレスは 1 つのみです。このため、DNS サーバーに存在する AAAA レコードは 1 つであり、複数の IPv6 アドレス間での負荷分散が不要になります。キャッシュ対象のアドレスは 1 つのみであるため、クライアントによる AAAA レコードのキャッシュが問題になることはありません。IPv6 アドレスに対するユーザー リクエストは、使用可能な容量を持つ、最も近い正常なバックエンドに自動的に負荷分散されます。
HTTP、HTTPS、HTTP/2、TCP、および SSL/TLS の各 IPv6 クライアント トラフィックが負荷分散されます。
同一の IPv6 ロードバランサ アドレスを使用するリージョン間でのオーバーフロー。いずれか 1 つのリージョン内のバックエンドでリソースが不足するか異常が生じると、グローバル ロードバランサによって、ユーザーからのリクエストは使用可能なリソースがある 2 番目に近いリージョンに自動的に転送されます。最も近いリージョンでリソースが使用可能になると、グローバル ロード バランシングによって、そのリージョンを介した処理に戻されます。グローバル ロード バランシングでは、Network Service Tiers のうちプレミアム ティアを使用する必要があります。
デュアルスタック デプロイを実行します。IPv6 と IPv4 の両方のクライアントに対応するには、IPv6 用に 1 つと、IPv4 用に 1 つの、計 2 つのロードバランサ IP リソースを作成し、両方を同じアプリケーション インスタンスに関連付けます。IPv4 クライアントは IPv4 アドレスに接続され、IPv6 クライアントは IPv6 アドレスに接続されます。次に、これらのクライアントは、使用可能な容量がある最も近い正常な IPv4 または IPv6 デュアルスタック バックエンドに自動的にロードバランスされます。デュアルスタック バックエンドをサポートするロードバランサを確認するには、表: バックエンド サービスとサポートされているバックエンド タイプをご覧ください。IPv6 転送ルールは無料で提供されているため、料金が発生するのは IPv4 転送ルールについてのみです。
IPv6 終端とプロキシ
ロードバランサに IPv6 終端を構成すると、次の図に示すように、IPv6 クライアントに IPv6 アプリケーションとして表示されます。
ユーザーが IPv6 経由でロードバランサに接続すると、次のように処理されます。
- IPv6 アドレスと転送ルールに従って、ロードバランサはユーザー接続を待機します。
- IPv6 クライアントは、IPv6 でロードバランサに接続します。
- ロードバランサはリバース プロキシとして機能し、IPv6 クライアントの接続を終端します。バックエンド サービスの IP アドレス選択ポリシーに基づいて、リクエストをバックエンドへの IPv4 または IPv6 接続に渡します。
- 逆の経路では、ロードバランサはバックエンドからレスポンスを受け取り、これを IPv6 接続に渡して元のクライアントに送り返します。
制限事項
従来のプロキシ ネットワーク ロードバランサと従来のアプリケーション ロードバランサはデュアルスタック バックエンドをサポートしていません。IPv6 トラフィックはロードバランサによって終端され、IPv4 接続を介してバックエンドにプロキシされます。
リージョン外部アプリケーション ロードバランサ、クロスリージョン内部アプリケーション ロードバランサ、リージョン内部アプリケーション ロードバランサ、リージョン内部プロキシ ネットワーク ロードバランサ、クロスリージョン内部プロキシ ネットワーク ロードバランサ、リージョン外部プロキシ ネットワーク ロードバランサは、IPv6 フロントエンドをサポートしていません。上り(内向き)IPv4 トラフィックは、IPv4 または IPv6 接続を介して IPv4 と IPv6(デュアル スタック)バックエンドにプロキシされます。
IPv4 と IPv6(デュアルスタック)をサポートするのは、
GCE_VM_IP_PORT
エンドポイントを使用する VM インスタンス グループ バックエンドとゾーン ネットワーク エンドポイント グループ(NEG)のみです。
ロードバランサ転送ルールに IPv6 アドレスを割り振る
外部ロードバランサを構成する場合は、1 つ以上のグローバル転送ルールを指定します。それぞれのルールには、外部に一般公開され、ルーティングされている IPv4 IP アドレスまたは IPv6 IP アドレス(あるいはその両方)を使用します。自分のサイトの DNS レコードでこの IP アドレスを使用できます。
転送ルールを作成するときは、プロジェクト用に予約されている静的 IP アドレスを使用するか、ルールを作成するときに転送ルールによって自動的に取得されるエフェメラル IP アドレスを使用します。静的 IP アドレスはプロジェクト用に予約され、意図的にリリースされるまで保持されます。転送ルールが存在している限り、エフェメラル アドレスはこの転送ルールに属します。転送ルールを削除すると、エフェメラル アドレスが解放され、Google Cloud のプールに戻されます。
ロードバランサに IPv4 アドレスと IPv6 アドレスの両方が必要な場合、IPv4 アドレスに関連付けられている転送ルールと、IPv6 アドレスに関連付けられている転送ルールの 2 つを作成できます。次に、両方の転送ルールを同じロードバランサに関連付けます。
IPv6 アドレス形式
Google Cloud は /64 IPv6 アドレス範囲を IPv6 転送ルールに割り当てます。Google Cloud CLI は IPv6 アドレスの下位 64 ビットを 0 に設定してリストしますが、ロードバランサは全範囲でトラフィックを受け入れます。そのため、クライアントが接続する IPv6 サーバーの IP アドレスによっては、X-Forwarded-For
ヘッダー内の割り当て範囲に、他のロードバランサの IPv6 アドレスが表示されることもあります。
IPv6 アドレスの形式を設定する場合、Google Cloud は RFC 5952 のセクション 4 の推奨事項を遵守します。
外部アプリケーション ロードバランサの IPv6 終端のクライアント IP ヘッダー
ロードバランサがクライアントからの IPv6 接続を中継し、IPv4 接続でバックエンドに送信すると、元のソース IP アドレスは、ロードバランサの IP アドレスに置き換えられます。ただし、ロギング、意思決定などの目的で、バックエンドは多くの場合、元のソース IP アドレスを把握しておく必要があります。Google Cloud では、元の IPv6 クライアントの IP アドレスを含む HTTP ヘッダーをバックエンドに伝播します。
IPv6 の HTTP ヘッダーは IPv4 の HTTP ヘッダーに類似しています。リクエストの形式は次のとおりです。
X-Forwarded-For: CLIENT_IP_ADDRESS, GLOBAL_FORWARDING_RULE_EXTERNAL_IP_ADDRESSES
最後の要素は、ロードバランサの IP アドレスを示します。2 番目と最後の要素は、ロードバランサから見たクライアント IP アドレスを示します。X-Forwarded-For
ヘッダーにその他の要素が存在する場合や、ロードバランサにリクエストが送信される前に、クライアントや介在するプロキシにより、その他の X-Forwarded-For
ヘッダーが追加される場合があります。
次は、X-Forwarded-For
ヘッダーの例です。
X-Forwarded-For: 2001:db8:abcd:1::1234, 2607:f8b0:4005:801::200e
2001:db8:abcd:1::1234
は、クライアントの IPv6 アドレスです。2607:f8b0:4005:801::200e
は、外部アプリケーション ロードバランサの IPv6 アドレスです。
シングルスタックからデュアルスタックに変換する
IPv4 のみ(シングルスタック)を使用するロードバランサ リソースを、IPv4 と IPv6(デュアルスタック)に変換できます。ロードバランサ リソースを更新すると、IPv6 トラフィックをバックエンドに自動的に転送できます。
ロードバランサのリソースとバックエンドをデュアルスタックに変換する手順については、次のドキュメントをご覧ください。
ロードバランサ | ドキュメント |
---|---|
グローバル外部アプリケーション ロードバランサ クロスリージョン内部アプリケーション ロードバランサ リージョン外部アプリケーション ロードバランサ リージョン内部アプリケーション ロードバランサ |
アプリケーション ロードバランサを IPv6 に変換する |
SSL プロキシと TCP プロキシのグローバル外部プロキシ ネットワーク ロードバランサ クロスリージョン内部プロキシ ネットワーク ロードバランサ リージョン外部プロキシ ネットワーク ロードバランサ リージョン内部プロキシ ネットワーク ロードバランサ |
プロキシ ネットワーク ロードバランサを IPv6 に変換する |
料金
IPv6 終端の転送ルールに追加料金はかかりません。一時的な IPv6 アドレスについては、課金されません。予約済みの IPv6 アドレスは、それらが使用されているかどうかに関係なく、既存のレートで課金されます。それ以外の場合、IPv6 ロード バランシングの料金は IPv4 ロード バランシングの料金と同じです。ロード バランシング料金の詳細については、ネットワーク料金をご覧ください。