プロトコル転送は、リージョン転送ルールを使用して、特定のプロトコルのパケットを単一の仮想マシン(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 アドレスを参照します。サブネットは、ipv6-access-type
がINTERNAL
に設定されたデュアルスタックのサブネットである必要があります。内部 IPv6 アドレスは、プレミアム ティアでのみ使用できます。リージョン内部 IPv6 アドレスの予約は、インスタンスでのみサポートされているため、転送ルールにはエフェメラル IPv6 アドレスを使用する必要があります。プロトコル オプション:
TCP
(デフォルト)、UDP
。ポート指定オプション: 最大 5 つまでの連続または非連続のポートのリスト。
外部プロトコル転送:
IPv4 アドレスのサポート: 転送ルールは、1 つのリージョン外部 IPv4 アドレスを参照します。リージョン外部 IPv4 アドレスは、各 Google Cloud リージョンに固有のプールから取得されます。IP アドレスには、予約済みの静的アドレスまたはエフェメラル アドレスを使用できます。
IPv6 アドレスのサポート: 転送ルールは、サブネットの
/64
の外部 IPv6 アドレス範囲から/96
範囲の IP アドレスを参照します。サブネットは、ipv6-access-type
がEXTERNAL
に設定されたデュアルスタックのサブネットである必要があります。外部 IPv6 アドレスは、プレミアム ティアでのみ使用できます。IPv6 アドレス範囲には、予約済み静的アドレスまたはエフェメラル アドレスを使用できます。プロトコル オプション:
AH
、ESP
、ICMP
、SCTP
、TCP
(デフォルト)、UDP
、L3_DEFAULT
:L3_DEFAULT
転送ルール プロトコル設定によって、すべての IP プロトコル トラフィックを送信できます。- ICMP プロトコルは IPv4 アドレスのみをサポートしているため、IPv6 転送ルールは
ICMP
プロトコル設定をサポートしていません。ICMPv6 と GRE のトラフィックを送信するには、転送ルール プロトコルをL3_DEFAULT
に設定します。
ポート指定オプション: 連続したポート範囲またはすべてのポート
転送ルールを使用する場合は、次の点に注意してください。
プロトコル転送では、転送ルールが参照できるターゲット インスタンスは 1 つだけです。
内部パススルー ネットワーク ロードバランサとバックエンド サービスベースの外部パススルー ネットワーク ロードバランサの場合、転送ルールは単一のバックエンド サービスのみを参照できます。
内部プロトコル転送と内部パススルー ネットワーク ロードバランサを切り替えるときに、転送ルールを削除して再作成する必要はありません。外部プロトコル転送とバックエンド サービスベースの内部パススルー ネットワーク ロードバランサを切り替えるには、転送ルールを削除して再作成する必要があります。詳細については、ターゲット インスタンスとバックエンド サービスを切り替えるをご覧ください。
ポート情報は、ポートのコンセプトを持つプロトコル(
TCP
、UDP
、SCTP
)でのみ指定できます。L3_DEFAULT
プロトコル オプションは、すべての AH、ESP、GRE、ICMP、ICMPv6、SCTP、TCP、UDP プロトコルを転送します。TCP、UDP、SCTP プロトコルの場合、L3_DEFAULT
はすべてのポートを転送します。断片化された UDP パケットが想定される場合は、次のいずれかの手順に沿って、すべてのフラグメント(ポート情報を含まないフラグメントを含む)がインスタンスに配信されるようにします。
- 単一の
L3_DEFAULT
転送ルールを使用する。 - すべてのポートを転送するように構成された単一の
UDP
転送ルールを使用する。
- 単一の
ターゲット インスタンス
ターゲット インスタンスは、同じゾーン内の 1 つの VM インスタンスを参照するゾーンリソースです。ターゲット インスタンスを参照する転送ルールは、ターゲット インスタンスのゾーンを含むリージョン内に存在する必要があります。ターゲット インスタンスには Cloud NAT ポリシーが適用されていないため、NAT を通過できない IPsec トラフィックに使用できます。
マルチ NIC のサポート
ターゲット インスタンスは、参照先の VM インスタンスのネットワーク インターフェース(NIC)を指定できます。参照される VM に NIC のある VPC ネットワークの名前を指定するには、--network
フラグを使用します。
--network
フラグを省略した場合、ターゲット インスタンスは、参照する VM のnic0
インターフェースにパケットを配信します。--network
フラグを使用する場合、ターゲット インスタンスが参照する VM に、その VPC ネットワークの NIC が必要です。- 内部プロトコル転送の場合、転送ルールで使用されるサブネットは、ターゲット インスタンスのネットワーク インターフェースで使用される VPC ネットワークに配置する必要があります。
IPv6 サポート
外部プロトコル転送デプロイで IPv6 トラフィックをサポートする場合は、IPv6 転送ルールと同じリージョンにあるデュアル スタック サブネットで VM インスタンスを構成する必要があります。VM インスタンスの ipv6-access-type
が EXTERNAL
または INTERNAL
に設定されているサブネットを使用できます。ipv6-access-type
が INTERNAL
に設定されたサブネットを使用するには、外部転送ルールに、ipv6-access-type
が EXTERNAL
に設定された個別のデュアルスタック サブネットを使用する必要があります。手順については、デュアルスタックのサブネットを追加するをご覧ください。
また、VM インスタンス自体がデュアル スタック インスタンスである必要があります。VM の stack-type
を IPv4_IPv6
に設定します。VM は、サブネットから ipv6-access-type
設定(EXTERNAL
または INTERNAL
)を継承します。手順については、VM を作成して IPv6 を有効にするをご覧ください。既存の VM を使用する場合は、gcloud compute instances network-interfaces
update
コマンドを使用して VM をデュアルスタックに更新します。
リクエスト パケットと戻りパケットの 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
を使用します。- マルチ NIC はサポートされていません。
API と gcloud のリファレンス
転送ルールについては、以下をご覧ください。
ターゲット インスタンスについては、以下をご覧ください。
料金
プロトコル転送は、ロード バランシングと同じレートで課金されます。転送ルールと、ターゲット インスタンスによって処理された受信データに対して料金が発生します。
料金の詳細については、料金をご覧ください。
割り当てと上限
プロトコル転送の転送ルールの割り当てについては、割り当てと上限: 転送ルールをご覧ください。