プロトコル転送は、リージョン転送ルールを使用して、特定のプロトコルのパケットを単一の仮想マシン(VM)インスタンスに送信します。転送ルールには、内部 IP アドレスまたは外部 IP アドレスを指定できます。プロトコル転送は、転送ルールの宛先 IP アドレスを保持しながらパケットを配信します。転送ルールは、ターゲット インスタンスと呼ばれるオブジェクトを参照します。オブジェクトは単一の VM インスタンスを参照します。
プロトコル転送を使用すると、次のことができます。
- ターゲット インスタンス オブジェクトが参照する VM を変更するか、転送ルールで参照されるターゲット インスタンスを変更することで、インスタンス間で移動できる IP アドレスを指定する。
- プロトコルとポートに基づいてパケットを異なる VM に転送する。ポートとプロトコルの情報が一意である限り、2 つの転送ルールは同じ IP アドレスを共有できます。
- (外部プロトコル転送のみ)特定のネットワーク インターフェースに追加の外部 IP アドレスを定義する。プロトコル転送は、外部 IPv4 アドレスに 1:1 NAT 構成を使用するネットワーク インターフェースとは異なり、転送ルールの宛先 IP アドレスを保持します。
- 送信元 IP アドレスが転送ルールの IP アドレスと一致するパケットを送信する。
プロトコル転送は、次の点でパススルー ロードバランサと異なります。
- ロード バランシングがない。ターゲット インスタンスは単一の VM にのみパケットを分散します。
- ヘルスチェックがない。バックエンド サービスとは異なり、ターゲット インスタンスはヘルスチェックをサポートしていません。ターゲット インスタンスが参照する VM で、必要なソフトウェアが実行中で動作していることを確認するには、他の手段を使用する必要があります。
アーキテクチャ
プロトコル転送では、リージョン外部またはリージョン内部の転送ルールとゾーン ターゲット インスタンス オブジェクトを使用します。ターゲット インスタンスとそれが参照する VM は、転送ルールのリージョンのゾーンに配置する必要があります。
外部プロトコル転送。1 つのターゲット インスタンスを参照する複数の転送ルールを設定すると、1 つの VM インスタンスで複数の外部 IP アドレスを使用できます。これは、1 つの VM インスタンスから複数の外部 IP アドレスや、異なるプロトコルとポートを介してデータを提供する場合に便利です。SSL 仮想ホスティングを設定する場合に特に便利です。外部プロトコル転送は、IPv6 クライアントからの接続を処理できます。
外部プロトコル転送では、AH、ESP、GRE、ICMP、ICMPv6、SCTP、TCP、UDP のプロトコルがサポートされています。
次の図は、外部プロトコル転送アーキテクチャの例を示しています。この設定方法については、外部プロトコル転送を設定するをご覧ください。
外部プロトコル転送アーキテクチャ 内部プロトコル転送。内部プロトコル転送では、リージョン内部 IPv4 アドレス(サブネットのプライマリ IPv4 アドレス範囲から)またはリージョン内部 IPv6 アドレス(サブネットの IPv6 アドレス範囲から)を使用します。
内部プロトコル転送は、TCP と UDP のプロトコルをサポートしています。
次の図は、内部プロトコル転送アーキテクチャの例を示しています。この設定方法については、内部プロトコル転送を設定するをご覧ください。
内部プロトコル転送アーキテクチャ 内部プロトコル転送では、転送ルールのターゲットを変更して、パススルー ロードバランサのターゲット インスタンスとバックエンド サービスを切り替えることができます。詳細については、ターゲット インスタンスとバックエンド サービスを切り替えるをご覧ください。
転送ルール
各転送ルールは、IP アドレス、プロトコル、ポート情報(指定された場合とプロトコルがポートをサポートする場合)を照合します。転送ルールがターゲット インスタンスを参照したときに、 Google Cloud は、ターゲット インスタンスによって参照される VM に、転送ルールのアドレス、プロトコル、ポートの指定に一致するパケットを転送します。
内部プロトコル転送:
IPv4 アドレスのサポート: サブネットのプライマリ IPv4 範囲のリージョン内部 IPv4 アドレス(予約済み(静的)またはエフェメラル)。
IPv6 アドレスのサポート: 転送ルールは、サブネットの
/64
の内部 IPv6 アドレス範囲から/96
範囲の IP アドレスを参照します。サブネットは次のいずれかである必要があります。- デュアルスタック(IPv4 と IPv6)サブネット
- シングルスタック(IPv6 のみ)サブネット
サブネットの
ipv6-access-type
設定はINTERNAL
に設定する必要があります。内部 IPv6 アドレスは、プレミアム ティアでのみ使用できます。IPv6 アドレス範囲には、予約済み静的アドレスまたはエフェメラル アドレスを使用できます。
プロトコル オプション:
TCP
(デフォルト)、UDP
。ポート指定オプション: 最大 5 つまでの連続または非連続のポートのリスト。
外部プロトコル転送:
IPv4 アドレスのサポート: 転送ルールは、1 つのリージョン外部 IPv4 アドレスを参照します。リージョン外部 IPv4 アドレスは、各 Google Cloud リージョンに固有のプールから取得されます。IP アドレスには、予約済みの静的アドレスまたはエフェメラル アドレスを使用できます。
IPv6 アドレスのサポート: 転送ルールは、サブネットの
/64
の外部 IPv6 アドレス範囲から/96
範囲の IP アドレスを参照します。サブネットは次のいずれかである必要があります。- デュアルスタック(IPv4 と IPv6)サブネット
- シングルスタック(IPv6 のみ)サブネット
サブネット
ipv6-access-type
はEXTERNAL
に設定する必要があります。外部 IPv6 アドレスは、プレミアム ティアでのみ使用できます。IPv6 アドレス範囲には、予約済み静的アドレスまたはエフェメラル アドレスを使用できます。
プロトコル オプション:
AH
、ESP
、ICMP
、SCTP
、TCP
(デフォルト)、UDP
、L3_DEFAULT
:L3_DEFAULT
転送ルールのプロトコル オプションは、すべての AH、ESP、GRE、ICMP、ICMPv6、SCTP、TCP、UDP トラフィックを転送します。TCP、UDP、SCTP プロトコルの場合、L3_DEFAULT
もすべてのポートを転送します。- ICMP プロトコルは IPv4 アドレスのみをサポートしているため、IPv6 転送ルールは
ICMP
プロトコル設定をサポートしていません。ICMPv6 と GRE のトラフィックを送信するには、転送ルール プロトコルをL3_DEFAULT
に設定します。
ポート指定オプション: 連続したポート範囲またはすべてのポート
転送ルールを使用する場合は、次の点に注意してください。
プロトコル転送では、転送ルールが参照できるターゲット インスタンスは 1 つだけです。
内部パススルー ネットワーク ロードバランサとバックエンド サービスベースの外部パススルー ネットワーク ロードバランサの場合、転送ルールは単一のバックエンド サービスのみを参照できます。
内部プロトコル転送と内部パススルー ネットワーク ロードバランサを切り替えるときに、転送ルールを削除して再作成する必要はありません。外部プロトコル転送とバックエンド サービスベースの内部パススルー ネットワーク ロードバランサを切り替えるには、転送ルールを削除して再作成する必要があります。詳細については、ターゲット インスタンスとバックエンド サービスを切り替えるをご覧ください。
ポート情報は、ポートのコンセプトを持つプロトコル(
TCP
、UDP
、SCTP
)でのみ指定できます。断片化された UDP パケットが想定される場合は、次のいずれかの手順に沿って、すべてのフラグメント(ポート情報を含まないフラグメントを含む)がインスタンスに配信されるようにします。
- 単一の
L3_DEFAULT
転送ルールを使用する。 - すべてのポートを転送するように構成された単一の
UDP
転送ルールを使用する。
- 単一の
ターゲット インスタンス
ターゲット インスタンスは、同じゾーン内の 1 つの VM インスタンスを参照するゾーンリソースです。ターゲット インスタンスを参照する転送ルールは、ターゲット インスタンスのゾーンを含むリージョン内に存在する必要があります。ターゲット インスタンスには Cloud NAT ポリシーが適用されていないため、NAT を通過できない IPsec トラフィックに使用できます。
マルチ NIC のサポート
ターゲット インスタンスを使用したプロトコル転送は、ターゲット インスタンスを作成するときに --network
フラグを使用して、複数のネットワーク インターフェース(NIC)を持つ VM インスタンスをサポートします。
- ターゲット インスタンスの作成時に
--network
フラグを省略すると、Google Cloud は参照先の VM のnic0
インターフェースにパケットを配信します。 - ターゲット インスタンスの作成時に
--network
フラグを指定すると、Google Cloud は、--network
フラグで指定された VPC ネットワーク内の参照先 VM の NIC にパケットを配信します。したがって、参照先 VM には、--network
フラグで指定された VPC ネットワーク内に NIC が必要です。 - 内部プロトコル転送と IPv6 外部プロトコル転送では、転送ルールでサブネットが使用されるため、次の追加要件があります。ターゲット インスタンスを参照するように転送ルールを構成する場合、転送ルールはターゲット インスタンスの VPC ネットワークのサブネットを使用する必要があります。ネットワークがなんらかの方法で接続されている場合でも、転送ルールとターゲット インスタンスが異なる VPC ネットワークを使用することはできません。
VM インスタンスの IPv6 サポート
プロトコル転送デプロイで IPv6 トラフィックをサポートする場合は、IPv6 転送ルールと同じリージョンにあるデュアルスタックまたはシングルスタック IPv6 専用サブネットで VM インスタンスを構成する必要があります。
IPv6 専用インスタンスはデュアルスタック サブネットと IPv6 専用サブネットの両方で作成できますが、デュアルスタック VM は IPv6 専用サブネットで作成できません。
VM インスタンスは、ipv6-access-type
が EXTERNAL
または INTERNAL
に設定されたサブネットに作成できます。VM は、サブネットから ipv6-access-type
設定(EXTERNAL
または INTERNAL
)を継承します。
手順については、IPv6 アドレスを使用するインスタンスを作成するをご覧ください。既存の VM を使用する場合は、gcloud compute instances network-interfaces update
コマンドを使用して VM をデュアルスタックに更新します。既存の VM を IPv6 専用に更新することはできません。
リクエスト パケットと返信パケットの IP アドレス
ターゲット インスタンスがクライアントからパケットを受信すると、リクエスト パケットの送信元 IP アドレスと宛先 IP アドレスは次の表のようになります。
プロトコル転送タイプ | 送信元 IP アドレス | 宛先 IP アドレス |
---|---|---|
外部プロトコル転送 | Google Cloud VM に関連付けられている外部 IP アドレス、またはインターネット上のクライアントの外部 IP アドレス。 | 転送ルールの IP アドレス。 |
内部プロトコル転送 | クライアントの内部 IP アドレス。 Google Cloud クライアントの場合、プライマリ内部 IPv4 アドレスか、VM のネットワーク インターフェースのエイリアス IP 範囲の IPv6 アドレスまたは IPv4 アドレス。 | 転送ルールの IP アドレス。 |
ターゲット インスタンス VM で実行されているソフトウェアは、次のように構成する必要があります。
- 転送ルールの IP アドレスまたは任意の IP アドレス(
0.0.0.0
または::
)をリッスン(バインド)する。 - 転送ルールのプロトコルがポートをサポートしている場合は、転送ルールに含まれるポートをリッスン(バインド)する。
戻りパケットは、ターゲット インスタンスからクライアントに直接送信されます。レスポンス パケットの送信元アドレスと宛先 IP アドレスはプロトコルによって異なります。
- TCP は接続指向です。ターゲット インスタンスは、転送ルールの IP アドレスと一致する送信元 IP アドレスを持つパケットで応答する必要があります。これにより、クライアントはレスポンス パケットを適切な TCP 接続に関連付けることができます。
- AH、ESP、GRE、ICMP、ICMPv6、UDP はコネクションレスです。ターゲット インスタンスは、送信元 IP アドレスが転送ルールの IP アドレスと一致するか、転送ルールと同じ VPC ネットワーク内の VM の NIC に割り振られた IP アドレスを含むレスポンス パケットを送信できます。ほとんどのクライアントは、パケットの送信元と同じ IP アドレスからのレスポンスを想定しています。
次の表は、戻りパケットの送信元と宛先をまとめたものです。
トラフィックの種類 | 送信元 IP アドレス | 宛先 IP アドレス |
---|---|---|
TCP | 転送ルールの IP アドレス。 | リクエスト パケットの送信元 IP アドレス。 |
AH、ESP、GRE、ICMP、ICMPv6、UDP* | ほとんどの場合、転送ルールの IP アドレス。† | リクエスト パケットの送信元 IP アドレス。 |
* AH、ESP、GRE、ICMP、ICMPv6 は、外部プロトコル転送でのみサポートされます。
† 内部プロトコル転送を使用すると、レスポンス パケットの送信元を VM NIC のプライマリ内部 IPv4 アドレスまたは IPv6 アドレスまたはエイリアス IP アドレス範囲に設定できます。VM で IP 転送が有効になっている場合は、任意の IP アドレスの送信元を使用できます。クライアントは、リクエスト パケットの宛先 IP アドレスと一致しない内部 IP アドレスからレスポンス パケットを受信します。このため、転送ルールの IP アドレスを送信元として使用しないのは高度なシナリオです。
移行先インスタンスからのアウトバウンド インターネット接続
ターゲット インスタンスによって参照される VM インスタンスは、関連付けられた転送ルールの IP アドレスをアウトバウンド接続の送信元 IP アドレスとして使用して、インターネットへの接続を開始できます。
通常、VM インスタンスは常に独自の外部 IP アドレスまたは Cloud NAT を使用して接続を開始します。転送ルールの IP アドレスを使用してターゲット インスタンスからの接続を開始するのは、VM インスタンスが同じ外部 IP アドレスで接続を開始して受信する必要がある場合などの特別なシナリオに限られます。
ターゲット インスタンス VM からインターネットに直接送信されるアウトバウンド パケットには、トラフィック プロトコルとポートの制限はありません。アウトバウンド パケットが転送ルールの IP アドレスを送信元として使用している場合でも、パケットのプロトコルと送信元ポートが、転送ルールのプロトコルとポートの仕様に一致する必要はありません。ただし、インバウンド レスポンス パケットは、転送ルールの転送ルール IP アドレス、プロトコル、宛先ポートと一致する必要があります。詳細については、外部パススルー ネットワーク ロードバランサと外部プロトコル転送のためのパスをご覧ください。
ターゲット インスタンス VM からインターネット接続へのこのパスは、 Google Cloudの暗黙的なファイアウォール ルールに従って、デフォルトの動作となります。ただし、このパスを開いたままにしておくことによるセキュリティ上の懸念がある場合は、ターゲットを絞った下り(外向き)ファイアウォール ルールを使用して、インターネットへの不要なアウトバウンド トラフィックをブロックできます。
制限事項
- 転送ルールで複数のターゲット インスタンスを参照することはできません。
- ヘルスチェックはターゲット インスタンスではサポートされていません。ターゲット インスタンスが参照する VM で、必要なソフトウェアが実行中で動作していることを確認する必要があります。
- IPv6 トラフィックの内部プロトコル転送は、
L3_DEFAULT
プロトコルをサポートしていません。TCP
またはUDP
を使用します。
API と gcloud のリファレンス
転送ルールについては、以下をご覧ください。
ターゲット インスタンスについては、以下をご覧ください。
料金
プロトコル転送は、ロード バランシングと同じレートで課金されます。転送ルールと、ターゲット インスタンスによって処理された受信データに対して料金が発生します。
料金の詳細については、料金をご覧ください。
割り当てと上限
プロトコル転送の転送ルールの割り当てについては、割り当てと上限: 転送ルールをご覧ください。