Cloud NAT の概要

Cloud NAT(ネットワーク アドレス変換)により、外部 IP アドレスのない Google Cloud 仮想マシン(VM)インスタンスと、限定公開の Google Kubernetes Engine(GKE)クラスタはインターネットにパケットを送信し、対応するレスポンス パケットを受信できます。

アーキテクチャ

Cloud NAT はソフトウェア定義の分散マネージド サービスです。プロキシ VM やアプライアンスをベースにしていません。Cloud NAT は、Virtual Private Cloud(VPC)ネットワークを強化する Andromeda ソフトウェアを構成します。これにより、外部 IP アドレスを持たない VM に送信元ネットワーク アドレス変換(SNAT)を提供します。また、Cloud NAT は、確立された受信レスポンス パケットに宛先ネットワーク アドレス変換(DNAT)を提供します。

従来の NAT と Cloud NAT の比較(クリックして拡大)
従来の NAT と Cloud NAT の比較(クリックして拡大)

Cloud NAT により、ネクストホップがデフォルトのインターネット ゲートウェイである VPC の静的ルートとともに送信 NAT が実装されます。基本的な構成では、VPC ネットワークのデフォルト ルートがこの要件を満たしています。

Cloud NAT では、インターネットからの未承諾の受信接続は実装されません。DNAT は、送信パケットへの応答として受信するパケットに対してのみ実行されます。

利点

Cloud NAT には次の利点があります。

  • セキュリティ

    個々の VM に外部 IP アドレスを割り振る必要がなくなります。下り(外向き)ファイアウォール ルールに従い、外部 IP アドレスを持たない VM はインターネット上の宛先にアクセスできます。たとえば、更新のダウンロードやプロビジョニングを完了するためだけに VM にインターネット アクセスが必要な場合です。

    手動 NAT IP アドレス割り当てで Cloud NAT ゲートウェイを構成すると、共通する外部の送信元 IP アドレスのセットを宛先と安全に共有して Google Cloud Storage とやり取りできます。たとえば、宛先のサービスが既知の外部 IP アドレスからの接続のみを許可できます。

  • 可用性サービス提供状況

    Cloud NAT はソフトウェア定義の分散マネージド サービスです。プロジェクト内の VM や単一の物理ゲートウェイ デバイスには依存しません。Cloud Router に NAT ゲートウェイを構成します。これにより、指定した構成パラメータを保持する、NAT のコントロール プレーンが提供されます。Google Cloud は、Google Cloud VM を実行する物理マシンでプロセスを実行して維持します。

  • スケーラビリティ

    Cloud NAT は、使用する NAT IP アドレスの数を自動的にスケーリングするように構成できます。Cloud NAT は、自動スケーリングが有効になっている VM など、マネージド インスタンス グループに属する VM をサポートします。

  • パフォーマンス

    Cloud NAT は VM ごとのネットワーク帯域幅を縮小しません。Cloud NAT は、Google の Andromeda ソフトウェア定義ネットワーキングによって実装されています。詳細については、Compute Engine のドキュメントのネットワーク帯域幅をご覧ください。

仕様

Cloud NAT は、次の送信元からのインターネットに送信されるパケットに NAT を実行するようにインターネットを構成できます。

  • VM のネットワーク インターフェースのプライマリ内部 IP アドレス(ネットワーク インターフェースに外部 IP アドレスが割り当てられていない場合)。ネットワーク インターフェースに外部 IP アドレスが割り当てられている場合、Google Cloud は、送信元がネットワーク インターフェースのプライマリ内部 IP アドレスに一致するパケットに対して 1 対 1 の NAT を自動的に実行します。これは、ネットワーク インターフェースが Google Cloud のインターネット アクセス要件を満たしているためです。外部 IP アドレスを持つインターフェースがある場合は、常にそれが優先され、Cloud NAT を使用せずに常に 1 対 1 の NAT が実行されます。

  • VM のネットワーク インターフェースに割り当てられたエイリアス IP 範囲。ネットワーク インターフェースに外部 IP アドレスが割り当てられている場合でも、インターフェースのエイリアス IP 範囲から送信されるパケットに NAT を実行するように、Cloud NAT ゲートウェイを構成できます。インターフェースの外部 IP アドレスでは、エイリアス IP アドレスに対して 1 対 1 の NAT は実行されません。

Cloud NAT により、こうした接続への送信とそれに対するレスポンスの受信が可能になります。各 Cloud NAT ゲートウェイは、下り(外向き)に送信元ネットワーク アドレス変換(SNAT)を実行し、確立済みのレスポンス パケットに宛先ネットワーク アドレス変換(DNAT)を実行します。

Cloud NAT では、ファイアウォール ルールで許可されている場合でも、インターネットからの未承諾の受信リクエストは許可されません。詳細については、該当する RFC をご覧ください。

各 Cloud NAT ゲートウェイは、1 つの VPC ネットワーク、リージョン、Cloud Router に関連付けられます。Cloud NAT ゲートウェイと Cloud Router は、データプレーンに関与していないコントロール プレーンを提供するため、パケットは Cloud NAT ゲートウェイまたは Cloud Router を通過しません。

ルートとファイアウォール ルール

Cloud NAT は、ネクストホップがデフォルトのインターネット ゲートウェイであるカスタム静的ルートに依存します。Cloud NAT ゲートウェイを完全に使用するには、VPC には、ネクストホップがデフォルトのインターネット ゲートウェイであるデフォルト ルートが必要です。詳細については、ルートの相互作用をご覧ください。

Cloud NAT には Google Cloud のファイアウォール ルールの要件はありません。ファイアウォール ルールは、Cloud NAT ゲートウェイではなく、Compute Engine VM のネットワーク インターフェースに直接適用されます。

NAT IP アドレスとの間の接続を許可する特別なファイアウォール ルールを作成する必要はありません。Cloud NAT ゲートウェイが VM のネットワーク インターフェースに NAT を提供する場合、NAT の前に、ネットワーク インターフェースのパケットに対して該当する下り(外向き)ファイアウォール ルールが評価されます。また、NAT によって処理された後に、上り(内向き)ファイアウォール ルールが評価されます。

サブネット IP アドレス範囲の適用範囲

Cloud NAT ゲートウェイは、VM のネットワーク インターフェースに外部 IP アドレスが割り当てられていない限り、そのネットワーク インターフェースから送信されたパケットに NAT サービスを提供できます。Cloud NAT ゲートウェイは、VM ネットワーク インターフェースのプライマリ内部 IP アドレス、エイリアス IP 範囲、またはその両方に NAT を実施するように構成できます。この構成を行うには、ゲートウェイが適用されるサブネット IP アドレス範囲を選択します。

次のものに対して NAT を実施提供するように Cloud NAT ゲートウェイを構成できます。

  • リージョン内のすべてのサブネットのプライマリおよびセカンダリ IP アドレス範囲。ネットワーク インターフェースがリージョンのサブネットを使用している対象 VM のプライマリ内部 IP アドレスとすべてのエイリアス IP 範囲に対して、単一の Cloud NAT ゲートウェイが NAT を実施します。このオプションは、リージョンごとに、正確に 1 つの NAT ゲートウェイを使用します。

  • リージョン内のすべてのサブネットのプライマリ IP アドレス範囲。ネットワーク インターフェースがリージョンのサブネットを使用している対象 VM のプライマリ内部 IP アドレスとエイリアス IP 範囲に対して、単一の Cloud NAT ゲートウェイが NAT を提供します。リージョン内に追加の Cloud NAT ゲートウェイを作成して、対象 VM のサブネットのセカンダリ IP アドレス範囲からエイリアス IP 範囲に NAT を実施できます。

  • カスタム サブネット IP アドレス範囲。Cloud NAT の割り当てと上限に従い、必要な数の Cloud NAT ゲートウェイを作成できます。各ゲートウェアで処理するサブネットのプライマリ IP アドレスまたはセカンダリ IP アドレス範囲を選択します。

帯域幅

Cloud NAT ゲートウェイを使用しても、VM が使用できる送信または受信帯域幅の総量は変わりません。帯域幅の仕様はマシンタイプによって異なります。詳しくは、Compute Engine のドキュメントでのネットワーク帯域幅をご覧ください。

複数のネットワーク インターフェースを持つ VM

VM に複数のネットワーク インターフェースを構成する場合、各インターフェースは別々の VPC ネットワークに属している必要があります。その結果、次のようになります。

  • Cloud NAT ゲートウェイは、VM の 1 つの単一のネットワーク インターフェースにのみ適用されます。個別の Cloud NAT ゲートウェイは同じ VM に NAT を提供できます。この場合、各ゲートウェイが個々の別個のインターフェースに適用されます。

  • 複数のネットワーク インターフェースを持つ VM の場合、外部 IP アドレスが割り振られているインターフェースは Cloud NAT の対象外となります。適切なサブネット IP アドレス範囲に適用されるように Cloud NAT ゲートウェイを構成している場合、外部 IP アドレスを持たないインターフェースは NAT の対象になります。

NAT IP アドレスとポート

Cloud NAT ゲートウェイを作成するときに、ゲートウェイがリージョン外部 IP アドレスを自動的に割り振るように選択できます。また、ゲートウェイに一定数のリージョン外部 IP アドレスを手動で割り当てることもできます。各メソッドの詳細については、NAT IP アドレスをご覧ください。

各 Cloud NAT ゲートウェイが NAT サービスを提供する各 VM に予約する送信元ポートの数を構成できます。NAT を実施する VM は、ゲートウェイが提供するように構成されているサブネット IP アドレス範囲によって決まります。詳細については、ポートとポートの予約手順をご覧ください。

適用される RFC

Cloud NAT は、RFC 5128 に基づいてエンドポイントに依存しないマッピング、エンドポイントに依存するフィルタリング NAT、RFC 3489 に基づいてポート制限付きコーン NAT に分類されます。

Cloud NAT ゲートウェイは、VM から送信されたパケットの下り(外向き)で SNAT を行うときに、一意の宛先(宛先 IP アドレス、宛先ポート、プロトコル)ごとに同じ NAT 送信元アドレスと送信元ポートのタプルを再利用できます。Cloud NAT ゲートウェイは、送信元 IP アドレスと送信元ポートが対応する送信リクエスト パケットの宛先 IP アドレスと宛先ポートと一致する、確立された受信レスポンス パケットに対してのみ DNAT を実行します。

ポートと接続の関係の詳細については、ポートと接続NAT フローの例をご覧ください。

NAT トラバーサル

Cloud NAT はエンドポイントに依存しないため、独自の STUN サーバーまたは TURN サーバーをデプロイする場合、Cloud NAT は STUN や TURN などの一般的な NAT 走査プロトコルと互換性があります。

  • STUN(NAT のセッション走査ユーティリティ、RFC 5389)は、通信チャネルが確立された NAT の背後にある VM 間の直接通信を可能にします。
  • TURN(NAT 周辺のリレーを使用する走査、RFC 5766)は、サーバーが外部 IP アドレスを持つ 3 番目のサーバーを経由して NAT の背後にある VM 間の通信を許可します。各 VM はサーバーの外部 IP アドレスに接続し、そのサーバーが 2 つの VM 間の通信をリレーします。TURN はより堅牢ですが、より多くの帯域幅とリソースを消費します。

NAT タイムアウト

Cloud NAT ゲートウェイは次のタイムアウトを使用します。

タイムアウト Cloud NAT のデフォルト 構成可能

UDP マッピングのアイドル タイムアウト

RFC 4787 REQ-5

30 秒

TCP 確立済み接続のアイドル タイムアウト

RFC 5382 REQ-5

1,200 秒(20 分)

TCP 一時接続のアイドル タイムアウト

RFC 5382 REQ-5

30 秒

注: このタイムアウトに設定した値に関係なく、Cloud NAT では、NAT 送信元 IP アドレスと送信元ポートのタプルで新しい接続が処理されるようになるまでに最大で 30 秒ほどかかります。

ICMP のマッピングのアイドル タイムアウト

RFC 5508 REQ-2

30 秒
新しい TCP 接続で 5 タプル(NAT 送信元 IP アドレスと送信元ポートのタプル、宛先アドレス、宛先ポート、プロトコルの組み合わせ)を再利用するまでの遅延 120 秒(2 分)

×

詳細については、TCP 送信元ポートの再利用試行の遅延をご覧ください。

サービスの相互作用

以下のセクションでは、Cloud NAT と他の Google Cloud プロダクト間の重要なやり取りについて説明します。

ルートの相互作用

Cloud NAT ゲートウェイは、ネクストホップがデフォルトのインターネット ゲートウェイであるルートのみを使用できます。各 VPC ネットワークはデフォルト ルートで始まり、宛先は 0.0.0.0/0、ネクストホップはデフォルトのインターネット ゲートウェイです。重要な基本背景情報については、ルートの概要をご覧ください。

次の例は、Cloud NAT ゲートウェイが動作しなくなる原因を示します。

  • ネクストホップが他のタイプのカスタム静的ルートのネクストホップに設定されたカスタム静的ルートを作成すると、宛先 IP がルートの宛先と一致するパケットは、デフォルトのインターネット ゲートウェイではなく、ネクストホップに送信されます。たとえば、NAT、ファイアウォール、プロキシ ソフトウェアを実行する VM インスタンスを使用する場合は、ネクストホップとして VM にトラフィックを転送するカスタム静的ルートを作成する必要があります。ネクストホップ VM には外部 IP アドレスが必要です。したがって、ネクストホップ VM またはネクストホップ VM 自体を信頼する VM からのトラフィックは Cloud NAT を使用できません。

  • ネクストホップが Cloud VPN トンネルのカスタム静的ルートを作成した場合、Cloud NAT はそのルートを使用しません。たとえば、宛先 0.0.0.0/0 を指定したカスタムの静的ルートとネクストホップ Cloud VPN トンネルは、デフォルトのインターネット ゲートウェイではなく、そのトンネルにトラフィックを転送します。その結果、Cloud NAT ゲートウェイはそのルートを使用できなくなります。これは、0.0.0.0/1128.0.0.0/1 など、具体的な宛先でも同様です。

  • オンプレミス ルーターが Cloud VPN トンネルまたは Cloud 相互接続のアタッチメント(VLAN)を管理する Cloud Router にカスタムの動的ルートをアドバタイズする場合、Cloud NAT ゲートウェイはそのルートを使用できません。たとえば、オンプレミス ルーターが宛先 0.0.0.0/0 のカスタム動的ルートをアドバタイズする場合、0.0.0.0/0 は Cloud VPN トンネルまたは Cloud Interconnect アタッチメント(VLAN)に転送されます。これは、0.0.0.0/1128.0.0.0/1 など、具体的な宛先でも同様です。

限定公開の Google アクセスの相互作用

Cloud NAT は、選択した Google API とサービスの外部 IP アドレスに送信されたトラフィックに対して NAT を実行しません。Cloud NAT ゲートウェイをプライマリまたはセカンダリのサブネット範囲に適用するように構成すると、Google Cloud によって、サブネット IP アドレス範囲での限定公開の Google アクセスが自動的に有効になります。ゲートウェイがサブネットの範囲に NAT を実施している限り、限定公開の Google アクセスはその範囲に対して有効であり、手動で無効にすることはできません。

Cloud NAT ゲートウェイは、限定公開の Google アクセスの動作を変更しません。詳細については、限定公開の Google アクセスをご覧ください。

共有 VPC の相互作用

共有 VPC を使用すると、1 つの組織内の複数のサービス プロジェクトで、ホスト プロジェクト内の共通の共有 VPC ネットワークを使用できます。共有 VPC ネットワークを使用するサービス プロジェクトで VM に NAT を実施するには、ホスト プロジェクトに Cloud NAT ゲートウェイを作成する必要があります。

VPC ネットワーク ピアリングの相互作用

Cloud NAT ゲートウェイは、単一のリージョンと単一 VPC ネットワーク内のサブネット IP アドレス範囲にと関連付けられています。1 つの VPC ネットワークで作成された Cloud NAT ゲートウェイは、VPC ネットワーク ピアリングで接続された他の VPC ネットワーク内の VM に、NAT を提供できません。ピア ネットワーク内の VM がゲートウェイと同じプロジェクトに存在する場合も同様です。ピアリングされている場合も含む)。ネットワークはゲートウェイと同じリージョンにあります。

GKE の相互作用

Cloud NAT ゲートウェイは、限定公開クラスタのノードと Pod に対して NAT を実行できます。これは VPC ネイティブ クラスタの一種です。クラスタが使用するサブネットのために、少なくとも次のサブネット IP アドレス範囲に適用するように Cloud NAT ゲートウェイを構成する必要があります。

  • サブネットのプライマリ IP アドレス範囲(ノードで使用)
  • サブネット クラスタ内の Pod に使用されるセカンダリ IP アドレス範囲
  • クラスタ内のサービスに使用されるサブネット セカンダリ IP アドレス範囲

限定公開クラスタ全体に NAT を提供する最も簡単な方法は、クラスタのサブネットのすべての IP アドレス範囲に適用するように Cloud NAT ゲートウェイを構成することです。

VPC ネイティブ クラスタでサブネット IP アドレス範囲を使用する方法に関する背景情報については、VPC ネイティブ クラスタの IP 範囲をご覧ください。

Cloud NAT ゲートウェイは、限定公開クラスタに対して NAT を実施するように構成されている場合、各ノード VM に NAT の送信元 IP アドレスと送信元ポートを予約します。Pod IP アドレスは各ノード VM に割り当てられたエイリアス IP 範囲として実装されるため、これらの NAT 送信元アドレスと送信元ポートはポッドで使用できます。Pod の IP アドレス範囲の最小範囲は 256 IP アドレス(/24 のサブネット マスク)であるため、Cloud NAT のポート予約手順では、ノードあたり 1,024 個以上の NAT 送信元 IP アドレスと送信元ポートを予約します。Pod IP アドレス範囲と VPC ネイティブ クラスタについては、Pod のサブネット セカンダリ IP アドレス範囲をご覧ください。

Cloud NAT とは独立して、クラスタの IP マスカレード構成を変更していない限り、Pod がインターネットにパケットを送信したときに、GKE は各ノードで実行されているソフトウェアを使用して SNAT を実行します。Pod からの下り(外向き)トラフィックを細かく制御する必要がある場合は、ネットワーク ポリシーを使用できます。

一定の条件のもとでは、Cloud NAT は、VPC ネイティブ クラスタとルートベース クラスタの両方を含む限定公開以外のクラスタにも役立ちます。限定公開以外のクラスタ内のノードには外部 IP アドレスがあるため、ノードのプライマリ内部 IP アドレスから送信されたパケットは Cloud NAT で処理されません。ただし、次の条件に該当する場合、非プライベート クラスタ内の Pod ポッドから送信されたパケットは、Cloud NAT ゲートウェイで処理できます。

  • VPC ネイティブ クラスタの場合、Cloud NAT ゲートウェイがクラスタの Pod ポッドのセカンダリ IP アドレス範囲に適用されます。

  • クラスタの IP マスカレード構成は、Pod からインターネットに送信されるパケットのクラスタ内で SNAT を実行するように構成されていません。

Cloud Load Balancing の相互作用

Google Cloud の外部ロードバランサとヘルスチェック システムは特別なルートを使用して VM と通信します。バックエンド VM は外部 IP アドレスを必要とせず、Cloud NAT ゲートウェイはロードバランサとヘルスチェックの通信を管理しません。詳細については、Cloud Load Balancing の概要ヘルスチェックの概要をご覧ください。

次の例は、Cloud NAT のコンセプトを示しています。

基本 NAT 構成

Cloud NAT(クリックして拡大)
Cloud NAT(クリックして拡大)

この例では、

  • nat-gw-us-east ゲートウェイは、us-east1 リージョンの subnet-1 のプライマリ IP アドレス範囲に適用するために構成されています。外部 IP アドレスを持たないネットワーク インターフェースの VM は、プライマリ内部 IP アドレスを使用するか、subnet-110.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-3192.168.1.0/24 のプライマリ IP アドレス範囲からエイリアス IP 範囲を使用して、インターネットにトラフィックを送信できます。

GKE の例

Cloud NAT と GKE(クリックして拡大)
Cloud NAT と GKE(クリックして拡大)

この例では、コンテナで NAT 変換を行います。すべてのコンテナと GKE ノードで NAT を有効にするには、NAT 候補としてサブネット 1 のすべての IP アドレス範囲を選択する必要があります。container1 または container2 に対してのみ NAT を有効にすることはできません。

次のステップ