Public NAT
Public NAT を使用すると、 Google Cloud 仮想マシン(VM)インスタンスが、Public NAT を使用してインターネットへのアウトバウンド接続を作成する各 VM に共有外部 IPv4 アドレスと送信元ポートのセットを割り当てることで、インターネットと通信できます。
Public NAT を使用すると、外部 IPv4 アドレスのない VM インスタンスは、インターネット上の IPv4 宛先と通信できます。Public NAT を使用すると、外部または内部の IPv6 アドレスを持つ VM インスタンスは、インターネット上の IPv4 宛先に接続できます(プレビュー)。
仕様
Public NAT は、次のネットワーク アドレス変換(NAT)をサポートしています。
IPv4 から IPv4、すなわち NAT44。詳細については、Public NAT の NAT44 をご覧ください。
IPv6 から IPv4、すなわち NAT64(プレビュー)。Public NAT は、Compute Engine VM インスタンスの NAT64 をサポートしています。GKE ノード、サーバーレス トラフィック、リージョン インターネット NEG の場合、Public NAT は IPv4 トラフィックのみを変換します。詳細については、Public NAT の NAT64 をご覧ください。
全般的な仕様
IPv4 送信元パケットの場合、以下から送信されるパケットに NAT を実行するように Public NAT を構成できます。
Compute Engine VM のネットワーク インターフェースのプライマリ内部 IP アドレス(ネットワーク インターフェースに外部 IP アドレスが割り振られていない場合)。ネットワーク インターフェースに外部 IP アドレスが割り当てられている場合、 Google Cloud は、送信元がネットワーク インターフェースのプライマリ内部 IP アドレスに一致するパケットに対して 1 対 1 の NAT を自動的に実行します。これは、ネットワーク インターフェースが Google Cloud インターネット アクセス要件を満たしているためです。外部 IP アドレスを持つインターフェースがある場合は、常にそれが優先され、Public NAT を使用せずに常に 1 対 1 の NAT が実行されます。
VM のネットワーク インターフェースに割り当てられたエイリアス IP 範囲。ネットワーク インターフェースに外部 IP アドレスが割り当てられている場合でも、インターフェースのエイリアス IP 範囲から送信されるパケットに NAT を実行するように、Public NAT の Cloud NAT ゲートウェイを構成できます。インターフェースの外部 IP アドレスでは、エイリアス IP アドレスに対して 1 対 1 の NAT は実行されません。
Google Kubernetes Engine(GKE)クラスタの場合、特定の状況でクラスタに外部 IP アドレスがある場合でも、Public NAT でサービスを提供できます。詳細については、GKE の相互作用をご覧ください。
IPv6 送信元パケットの場合、VM の IPv6 のみのネットワーク インターフェース(プレビュー)の外部または内部の /96
アドレス範囲から送信されたパケットに NAT を実行するように Public NAT を構成できます。
Public NAT により、アウトバウンド接続とそれに対するインバウンド レスポンスを可能にしています。Public NAT の各 Cloud NAT ゲートウェイは、外向きに送信元 NAT を実行し、確立済みのレスポンス パケットに宛先 NAT を実行します。
インターネットからの未承認のインバウンド リクエストは、たとえファイアウォール ルールによって許可されても、Public NAT によってブロックされます。詳細については、該当する RFC をご覧ください。
Public NAT の各 Cloud NAT ゲートウェイは、1 つの VPC ネットワーク、リージョン、Cloud Router に関連付けられます。Cloud NAT ゲートウェイと Cloud Router は、データプレーンに関与していないコントロール プレーンを提供するため、パケットは Cloud NAT ゲートウェイまたは Cloud Router を通過しません。
ルートとファイアウォール ルール
Public NAT は、ネクストホップがデフォルトのインターネット ゲートウェイであるルートに依存します。デフォルト ルートは通常、次の要件を満たす必要があります。詳細については、ルートの相互作用をご覧ください。
Public NAT には Cloud NGFW ルールの要件はありません。ファイアウォール ルールは、Public NAT の Cloud NAT ゲートウェイではなく、Compute Engine VM のネットワーク インターフェースに直接適用されます。
NAT IP アドレスとの間の接続を許可する特別なファイアウォール ルールを作成する必要はありません。Public NAT 用の Cloud NAT ゲートウェイが VM のネットワーク インターフェースに NAT を提供する場合、NAT の前に、ネットワーク インターフェースのパケットに対して該当する下り(外向き)ファイアウォール ルールが評価されます。また、NAT によって処理された後に、上り(内向き)ファイアウォール ルールが評価されます。
サブネット IP アドレス範囲の適用範囲
Public NAT 用に Cloud NAT ゲートウェイを構成して、IPv4 サブネット アドレス範囲、IPv6 サブネット アドレス範囲、またはその両方に NAT を実行できます。IPv4 サブネット アドレス範囲の場合、ゲートウェイは VM ネットワーク インターフェースのプライマリ内部 IP アドレス、エイリアス IP 範囲、またはその両方からのトラフィックを変換します。IPv6 サブネット アドレス範囲の場合、ゲートウェイはネットワーク インターフェースの外部または内部 /96
IPv6 アドレス範囲からのトラフィックを変換します(プレビュー)。
IPv4 サブネット アドレス範囲の場合、以下に対して NAT を実行するように Cloud NAT ゲートウェイを構成できます。
-
リージョン内のすべてのサブネットのプライマリおよびセカンダリ IPv4 アドレス範囲。ネットワーク インターフェースがリージョンの IPv4 サブネットを使用している対象 VM のプライマリ内部 IP アドレスとすべてのエイリアス IP 範囲に対して、単一の Cloud NAT ゲートウェイが NAT を実行します。
-
リージョン内のすべてのサブネットのプライマリ IPv4 アドレス範囲。ネットワーク インターフェースがリージョンの IPv4 サブネットを使用している対象 VM のプライマリ内部 IP アドレスとエイリアス IP 範囲に対して、単一の Cloud NAT ゲートウェイが NAT を実行します。リージョン内に追加の Public NAT 用 Cloud NAT ゲートウェイを作成して、対象 VM のサブネットのセカンダリ IP アドレス範囲からエイリアス IP 範囲に対して NAT を実行できます。
-
カスタム サブネット リスト。ネットワーク インターフェースが指定の IPv4 サブネットのリストからサブネットを使用する対象 VM のプライマリ内部 IP アドレスとすべてのエイリアス IP 範囲に対して、単一の Cloud NAT ゲートウェイが NAT を提供します。
-
カスタム サブネット IPv4 アドレス範囲。Public NAT の割り当てと上限に従い、必要な数の Public NAT 用 Cloud NAT ゲートウェイを作成できます。各ゲートウェアで処理するサブネットのプライマリ IP アドレスまたはセカンダリ IP アドレス範囲を選択します。
IPv6 サブネット アドレス範囲の場合、以下に対して NAT を実行するように Cloud NAT ゲートウェイを構成できます(プレビュー)。
- リージョン内のすべてのサブネットの外部および内部の IPv6 アドレス範囲。単一の Cloud NAT ゲートウェイは、リージョン内のすべての外部 IPv6 アドレス範囲と内部 IPv6 アドレス範囲に対して NAT を実行します。
- カスタム サブネット リスト。単一の Cloud NAT ゲートウェイは、指定したサブネットの外部 IPv6 アドレス範囲と内部 IPv6 アドレス範囲に対して NAT を実行します。
複数の Cloud NAT ゲートウェイ
次の条件のいずれかに該当する場合、VPC ネットワークの同じリージョンに Public NAT 用の複数の Cloud NAT ゲートウェイを設定できます。
各ゲートウェイは異なるサブネット用に構成されている。
1 つのサブネット内で、各ゲートウェイが異なる IP アドレス範囲に構成されている。カスタム Cloud NAT マッピングを使用して、Public NAT 用 Cloud NAT ゲートウェイを特定のサブネットまたは IP アドレス範囲にマッピングできます。
マッピングされた NAT ゲートウェイが重複しない限り、Public NAT の割り当てと上限に従って、Public NAT に必要な数の Cloud NAT ゲートウェイを作成できます。詳細については、Cloud NAT ゲートウェイの制限事項をご覧ください。
帯域幅
Public NAT に Cloud NAT ゲートウェイを使用しても、VM が使用できるアウトバウンドまたはインバウンドの帯域幅の総量は変わりません。帯域幅の仕様はマシンタイプによって異なります。詳しくは、Compute Engine のドキュメントでのネットワーク帯域幅をご覧ください。
複数のネットワーク インターフェースを持つ VM
VM に複数のネットワーク インターフェースを持つように構成する場合、各インターフェースは別々の VPC ネットワークに属している必要があります。その結果、次のようになります。
- Public NAT 用の Cloud NAT ゲートウェイは、VM の単一のネットワーク インターフェースにのみ適用できます。Public NAT 用の個別の Cloud NAT ゲートウェイは、同じ VM に NAT を提供できます。この場合、各ゲートウェイが個々の別個のインターフェースに適用されます。
- 複数のネットワーク インターフェースを持つ VM の場合、外部 IPv4 アドレスが割り振られているインターフェースは Public NAT の対象外となります。適切なサブネット IP アドレス範囲に適用されるように Public NAT 用の Cloud NAT ゲートウェイを構成している場合、外部 IPv4 アドレスを持たないインターフェースは NAT の対象にできます。IPv6 の場合、外部 IPv6 アドレスと内部 IPv6 アドレスの両方がサポートされています(プレビュー)。
NAT IP アドレスとポート
Public NAT 用の Cloud NAT ゲートウェイを作成するときに、ゲートウェイがリージョン外部 IP アドレスを自動的に割り振ることを選択できます。また、ゲートウェイに一定数のリージョン外部 IP アドレスを手動で割り当てることもできます。
NAT IP アドレスが自動的に割り振られる Public NAT 用 Cloud NAT ゲートウェイについては、次の点を考慮してください。
- Cloud NAT ゲートウェイが IP アドレスを割り振る Network Service Tiers(プレミアム ティアまたはスタンダード ティア)を選択できます。
NAT IP アドレスが自動的に割り振られる Public NAT 用の Cloud NAT ゲートウェイのティアを変更すると、 Google Cloud はそのゲートウェイに割り当てられたすべての IP アドレスを解放し、すべてのポート割り当てを廃棄します。
新しく選択された階層から新しい IP アドレスセットが自動的に割り振られ、すべてのエンドポイントに新しいポート割り当てが実施されます。
特定の Public NAT 用 Cloud NAT ゲートウェイについて、特定の条件に従ってプレミアム ティアまたはスタンダード ティアのいずれか、または両方から IP アドレスを手動で割り当てることもできます。
NAT IP アドレスの割り当ての詳細については、Public NAT IP アドレスをご覧ください。
Public NAT 用の各 Cloud NAT ゲートウェイが NAT サービスの提供先となる各 VM で予約する送信元ポートの数を構成できます。静的ポートの割り当てを構成できます。この場合、各 VM に同じ数のポートが予約されます。あるいは、動的ポートの割り当てを構成できます。この場合、予約済みポートの数は、指定した上限と下限の間で変更できます。
NAT を実施する VM は、ゲートウェイが提供するように構成されているサブネット IP アドレス範囲によって決まります。
ポートの詳細については、ポートをご覧ください。
適用される RFC
Public NAT は、RFC 5128 で定義されているエンドポイントに依存しないマッピングとエンドポイントに依存するフィルタリングをサポートしています。エンドポイントに依存しないマッピングを有効または無効にすることができます。NAT ゲートウェイを作成すると、エンドポイントに依存しないマッピングはデフォルトで無効になっています。
エンドポイントに依存しないマッピングでは、VM が特定の内部 IP アドレスとポートのペアから複数の異なる宛先にパケットを送信すると、ゲートウェイはパケットの宛先に関係なくそれらすべてのパケットを同じ NAT IP アドレスとポートのペアにマッピングします。エンドポイントに依存しないマッピングの詳細と影響については、同時ポートの再利用とエンドポイントに依存しないマッピングをご覧ください。
エンドポイント依存のフィルタリングでは、インターネットからのレスポンス パケットは、VM がパケットを送信した IP アドレスとポートから受信した場合にのみ許可されます。フィルタリングは、エンドポイントのマッピングの種類に関係なく、エンドポイントに依存します。この機能は常にオンになっており、ユーザーが構成することはできません。
ポートと接続の関係の詳細については、ポートと接続と NAT フローの例をご覧ください。
Public NAT は、RFC 3489 で定義されているポート制限付きコーン NAT です。
NAT トラバーサル
エンドポイントに依存しないマッピングが有効で、独自の STUN サーバーまたは TURN サーバーをデプロイしている場合、Public NAT は STUN や TURN などの一般的な NAT 走査プロトコルと互換性があります。
- STUN(NAT のセッション走査ユーティリティ、RFC 5389)は、通信チャネルが確立された NAT の背後にある VM 間の直接通信を可能にします。
- TURN(NAT 周辺のリレーを使用する走査、RFC 5766)は、サーバーが外部 IP アドレスを持つ 3 番目のサーバーを経由して NAT の背後にある VM 間の通信を許可します。各 VM はサーバーの外部 IP アドレスに接続し、そのサーバーが 2 つの VM 間の通信をリレーします。TURN はより堅牢ですが、より多くの帯域幅とリソースを消費します。
NAT タイムアウト
Public NAT は、プロトコル接続のタイムアウトを設定します。これらのタイムアウトとそのデフォルト値については、NAT タイムアウトをご覧ください。
Public NAT の NAT44
次の図は、IPv4 トラフィック用の基本的な Public NAT 構成を示しています。
この例では、次のようになります。
nat-gw-us-east
ゲートウェイは、us-east1
リージョンのsubnet-1
のプライマリ IP アドレス範囲に適用するために構成されています。外部 IP アドレスを持たないネットワーク インターフェースの VM は、プライマリ内部 IP アドレスを使用するか、subnet-1
、10.240.0.0/16
のプライマリ IP アドレス範囲からエイリアス IP 範囲を使用して、インターネットにトラフィックを送信できます。ネットワーク インターフェースが外部 IP アドレスを持たず、プライマリ内部 IP アドレスが
subnet-2
に置かれている VM は、Cloud NAT ゲートウェイがそのサブネットの IP アドレス範囲に適用されないため、インターネットにアクセスできません。nat-gw-eu
ゲートウェイは、europe-west1
リージョンのsubnet-3
のプライマリ IP アドレス範囲に適用するために構成されています。外部 IP アドレスを持たないネットワーク インターフェースの VM は、プライマリ内部 IP アドレスを使用するか、subnet-3
、192.168.1.0/24
のプライマリ IP アドレス範囲からエイリアス IP 範囲を使用して、インターネットにトラフィックを送信できます。
ワークフローの例
上の図では、プライマリ内部 IP アドレス 10.240.0.4
を持ち、外部 IP アドレスを持たない VM は、外部 IP アドレス 203.0.113.1
から更新をダウンロードする必要があります。この図では、nat-gw-us-east
ゲートウェイは次のように構成されています。
- インスタンスあたりの最小ポート数:
64
- 手動で割り当てた 2 つの NAT IP アドレス:
192.0.2.50
と192.0.2.60
subnet-1
のプライマリ IP アドレス範囲が NAT に設定されています。
Public NAT は、ポート予約手順に沿って、ネットワーク内の各 VM に NAT の送信元 IP アドレスと送信元ポートのタプルを予約します。たとえば、Public NAT 用の Cloud NAT ゲートウェイは、内部 IP アドレス 10.240.0.4
を持つ VM 用に 64 の送信元ポートを予約します。NAT IP アドレス 192.0.2.50
には、64 の予約されていないポートがあるため、ゲートウェイは、その VM に 64 の NAT 送信元アドレスと送信元ポートのタプルのセットを次のように予約します。
192.0.2.50
:34000
から192.0.2.50
:34063
VM が TCP プロトコルを使用して宛先ポート 80
の更新サーバー 203.0.113.1
にパケットを送信すると、次のようになります。
VM が次の属性のリクエスト パケットを送信します。
- 送信元 IP アドレス:
10.240.0.4
、VM のプライマリ内部 IP アドレス - 送信元ポート:
24000
、VM のオペレーティング システムによって選択されたエフェメラル送信元ポート - 宛先アドレス:
203.0.113.1
、更新サーバーの外部 IP アドレス - 宛先ポート:
80
、更新サーバーへの HTTP トラフィックの宛先ポート - プロトコル:
TCP
- 送信元 IP アドレス:
nat-gw-us-east
ゲートウェイは、下り(外向き)で送信元ネットワーク アドレス変換(SNAT)を実行し、リクエスト パケットの NAT 送信元 IP アドレスと送信元ポートを書き換えます。ネクストホップがデフォルトのインターネット ゲートウェイである203.0.113.1
宛のルートが Virtual Private Cloud(VPC)ネットワークにある場合、変更されたパケットがインターネットに送信されます。デフォルト ルートは通常、次の要件を満たす必要があります。- NAT 送信元 IP アドレス:
192.0.2.50
、VM の予約済み NAT 送信元 IP アドレスと送信元ポートのタプルの 1 つ - 送信元ポート:
34022
、VM の予約済み送信元ポートタプルの未使用の送信元ポート - 宛先アドレス:
203.0.113.1
、変更なし - 宛先ポート:
80
、変更なし - プロトコル:
TCP
、変更なし
- NAT 送信元 IP アドレス:
更新サーバーがレスポンス パケットを送信すると、そのパケットは次の属性の
nat-gw-us-east
ゲートウェイに到達します。- 送信元 IP アドレス:
203.0.113.1
、更新サーバーの外部 IP アドレス - 送信元ポート:
80
、更新サーバーからの HTTP レスポンス - 宛先アドレス:
192.0.2.50
、リクエスト パケットの元の NAT 送信元 IP アドレスと一致 - 宛先ポート:
34022
、リクエスト パケットの送信元ポートと一致 - プロトコル:
TCP
、変更なし
- 送信元 IP アドレス:
nat-gw-us-east
ゲートウェイは、レスポンス パケットに宛先ネットワーク アドレス変換(DNAT)を実行し、パケットが VM に配信されるようにレスポンス パケットの宛先アドレスと宛先ポートを書き換えます。- 送信元 IP アドレス:
203.0.113.1
、変更なし - 送信元ポート:
80
、変更なし - 宛先アドレス:
10.240.0.4
、VM のプライマリ内部 IP アドレス - 宛先ポート:
24000
、リクエスト パケットの元のエフェメラル送信元ポートと一致 - プロトコル:
TCP
、変更なし
- 送信元 IP アドレス:
Public NAT の NAT64
NAT64 を使用すると、IPv6 専用 VM インスタンスはインターネット上の IPv4 宛先と通信できます。Public NAT は、外部 IPv6 アドレスと内部 IPv6 アドレスの両方の NAT64 をサポートしています。NAT64 を構成する場合は、DNS64 も構成する必要があります。
Cloud DNS で DNS64 を構成すると、次の動作が可能になります。
- IPv6 専用 VM インスタンスがインターネットにリクエストを送信すると、Cloud DNS はリクエストの宛先に
AAAA
レコードが存在するかどうかを確認します。レコードが存在する場合は IPv6 アドレスが返され、IPv6 専用 VM インスタンスは IPv6 宛先に接続できます。 DNS64 が有効で、
AAAA
レコードが見つからない場合は、DNS64 サーバーは代わりにA
レコードを検索します。A
レコードが見つかった後、DNS64 サーバーは、A
レコードから取得した IPv4 アドレスに64:ff9b::/96
接頭辞を追加して IPv6 アドレスを合成します。たとえば、宛先 IPv4 アドレスが
203.0.113.1
の場合、サーバーは64:ff9b::cb00:7101
を返します。ここで、cb00:7101
は203.0.113.1
の 16 進数表現です。
NAT64 が有効になっている Cloud NAT ゲートウェイにリクエストが到達すると、ゲートウェイは次の操作により SNAT を実行します。
- 送信元の IPv6 アドレスとポートを、ゲートウェイに割り振られている外部 IPv4 アドレスとポートのいずれかに置き換えます。
合成された宛先 IPv6 アドレス(たとえば
64:ff9b::cb00:7101
)を、合成されたアドレスの最後の 32 ビットを使用して元の IPv4 アドレスに変換します。Cloud NAT ゲートウェイは、合成された IPv6 アドレスの最後の 32 ビットを使用して、リクエスト パケットがインターネットにルーティングされる方法を決定します。IPv6 専用 VM インスタンスが
64:ff9b::/96
接頭辞で始まる宛先にパケットを送信すると、ゲートウェイは VPC ネットワークの IPv4 ルーティング テーブルを宛先 IPv4 アドレスに適用します。IPv4 ルーティング テーブルに、ネクストホップがデフォルトのインターネット ゲートウェイである宛先 IPv4 アドレス向けのルートが存在する場合、変更されたパケットはインターネットに送信されます。
レスポンスが受信されると、Cloud NAT ゲートウェイは次の操作を行うことで、DNAT を実行します。
- レスポンス パケットの送信元 IP アドレスに
64:ff9b::/96
接頭辞を追加します。 - レスポンス パケットが VM に配信されるように、レスポンス パケットの宛先アドレスと宛先ポートを書き換えます。
次のステップ
- Cloud NAT プロダクトの相互作用について学習する。
- Cloud NAT アドレスとポートについて学ぶ。
- Public NAT を設定する。
- Cloud NAT ルールについて学習する。
- サンプルの Compute Engine の設定を作成する。
- サンプルの Google Kubernetes Engine の設定を作成する。
- 一般的な問題のトラブルシューティングを行う。