Cloud NAT の概要

Cloud NAT(ネットワーク アドレス変換)を使用すると、外部 IP アドレスを持たない特定のリソースからインターネットへの送信接続が可能になります。

Cloud NAT を使用すると、次のリソースからの発信接続が可能になります。

アーキテクチャ

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

  • Compute Engine 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 は実行されません。

  • GKE クラスタの場合、特定の状況下でクラスタに外部 IP アドレスがある場合でも Cloud NAT のサービスを利用できることがあります。詳細については、GKE の相互作用をご覧ください。

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

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 ゲートウェイは、Compute Engine VM のネットワーク インターフェースに外部 IP アドレスが割り当てられていない限り、そのネットワーク インターフェースから送信されたパケットに NAT サービスを提供できます。GKE クラスタの場合、特定の状況でクラスタノードに外部 IP アドレスがある場合でも Cloud NAT のサービスを利用できることがあります。詳細については、GKE の相互作用をご覧ください。

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 に予約する送信元ポートの数を構成できます。静的ポートの割り当てを構成できます。この場合、各 VM に同じ数のポートが予約されます。あるいは、動的ポートの割り当てプレビュー)を構成できます。この場合、予約済みポートの数は、指定した上限と下限の間で変更できます。

NAT を実施する VM は、ゲートウェイが提供するように構成されているサブネット IP アドレス範囲によって決まります。

詳細については、ポートとポートの予約手順をご覧ください。

適用される RFC

Cloud NAT は、RFC 5128 で定義されているエンドポイントに依存しないマッピングとエンドポイントに依存するフィルタリングをサポートしています。エンドポイントに依存しないマッピングを有効または無効にすることができます。NAT ゲートウェイを作成すると、エンドポイントに依存しないマッピングはデフォルトで無効になっています。

エンドポイントに依存しないマッピングでは、VM が特定の内部 IP アドレスとポートのペアから複数の異なる宛先にパケットを送信すると、ゲートウェイはパケットの宛先に関係なくそれらすべてのパケットを同じ NAT IP アドレスとポートのペアにマッピングします。エンドポイントに依存しないマッピングの詳細と影響については、同時ポートの再利用とエンドポイントに依存しないマッピングをご覧ください。

エンドポイント依存のフィルタリングでは、インターネットからのレスポンス パケットは、VM がパケットを送信した IP アドレスとポートから受信した場合にのみ許可されます。フィルタリングは、エンドポイントのマッピングの種類に関係なく、エンドポイントに依存します。この機能は常にオンになっており、ユーザーが構成することはできません。

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

Cloud NAT は、RFC 3489 で定義されているポート制限付きコーン NAT です。

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 秒ほどかかります。

TCP TIME_WAIT タイムアウト

RFC 5382 REQ-5

120 秒

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

プレビュー

注: gcloud alpha compute routers nats コマンドを使用して、このタイムアウトを指定します。

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 で使用できます。GKE VPC ネイティブ クラスタは、複数の IP アドレス(/32 より小さいネットマスク)を含むエイリアス IP 範囲を各ノードに常に割り振ります。したがって、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 を使用してインターネットに接続する方法を定義するアクセスルールを作成できます。NAT ルールは、宛先アドレスに基づいて送信元 NAT をサポートします。

NAT ルールを使用せずに NAT ゲートウェイを構成すると、その NAT ゲートウェイを使用する VM は、同じ NAT IP アドレスセットを使用してすべてのインターネット アドレスに到達します。Cloud NAT を通過するパケットをより細かく制御する必要がある場合は、NAT ルールを追加できます。NAT ルールは、一致条件と対応するアクションを定義します。NAT ルールを指定すると、各パケットが NAT ルールと照合されます。パケットがルールに設定された条件と一致する場合、その一致に対応するアクションが行われます。

NAT ルールの仕様

NAT ルールを使用する前に、次の仕様に注意してください。

  • ルール番号は、NAT ルールを一意に識別するものです。2 つのルールに同じルール番号を設定することはできません。
  • デフォルトの NAT ルール
    • 各 NAT 構成にはデフォルトのルールがあります。
    • 同じ NAT 構成で他の NAT ルールが一致しない場合、デフォルト ルールが適用されます。
    • デフォルト ルールのルール番号は 65001 です。
  • Cloud NAT ルールは、NAT IP 割り振りオプションの値が MANUAL_ONLY の場合にのみサポートされます。
  • 一致条件の宛先 IP CIDR は、NAT ルール間で重複しないようにする必要があります。任意のパケットに一致するルールは 1 つだけです。
  • NAT ルール間で NAT IP アドレスが重複しないようにする必要があります。
  • ルールには、空でない sourceNatActive IP アドレスまたは空でない sourceNatDrain IP アドレスが必要です。ルールに空の sourceNatActive IP アドレスがある場合、NAT ルールに一致する新しい接続は破棄されます。
  • エンドポイントに依存しないマッピングが有効になっている NAT ゲートウェイに NAT ルールを追加することはできません。NAT ルールが含まれる NAT ゲートウェイで、エンドポイントに依存しないマッピングを有効にすることはできません。

また、すべての VM は Cloud NAT ルールに応じて、VM 1 つあたりの最小ポート数の値から、割り当てられたポートを取得します。NAT ルールから VM に割り振られたポートを使い切った場合、NAT ルールに一致する新しい接続は破棄されます。

たとえば、VM 1 つあたり 4,096 個のポートを構成し、16 個の VM と 2 個の NAT ルール(IP アドレスは rule1 に 1 つ、rule2 に 2 つ)と、2 つの IP アドレスがあるデフォルト ルール(default)を構成すると、16 個の VM すべてが NAT ルールのバンドルごとに 4,096 個のポートを取得します。この例では、defaultrule2 ではすべての VM に対して問題なく処理が行われますが、rule1 ではすべての VM にポートを割り当てることができません。そのため、rule1 を経由する必要がある VM からのトラフィックは破棄され、デフォルト ルールを使用しないことによるリソース不足の兆候が見られることがあります。

NAT ルール構成の詳細については、NAT ルールの例をご覧ください。

ルール式の言語

NAT ルールは Common Expression Language 構文を使用して記述されます。

式には次の 2 つの構成要素が必要です。

  • ルール式で検査される属性
  • 式の一部として属性に対して実行される演算

たとえば、次の式では、演算 inIpRange() で属性 destination.ip9.9.9.0/24 が使用されています。この場合、destination.ip198.51.100.0/24 の IP アドレス範囲に含まれている場合、式は true を返します。

inIpRange(destination.ip, '198.51.100.0/24')

NAT ルールは、次の属性と演算のみをサポートします。

属性

属性は、宛先 IP アドレスなどの送信パケットからの情報を表します。

属性名 説明
destination.ip パケットの宛先 IP アドレス

オペレーション

次の表では、ルールの式を定義するために、属性と一緒に使用できる演算子について説明します。

オペレーション 説明
inIpRange(string, string) -> bool inIpRange(X, Y) は、IP CIDR 範囲 Y に IP アドレス X が含まれている場合に true を返します。
|| 論理演算子。x または y が true の場合、x || y は true を返します。
== 等価演算子。x が y と等しい場合、x == y は true を返します。

式の例

トラフィックを宛先 IP アドレス 198.51.100.20 と照合します。

"destination.ip == '198.51.100.20'"

トラフィックを宛先 IP アドレス 198.51.100.10/30 または 198.51.100.20 と照合します。

"inIpRange(destination.ip, '198.51.100.10/30') || destination.ip == '198.51.100.20'."

次の例は、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 を有効にすることはできません。

Cloud NAT ルールの構成例

次の例は、少数の IP アドレスからのアクセスのみが宛先によって許可される場合に、NAT ルールを使用する方法を示しています。プライベート サブネット内の Google Cloud VM からこのような宛先へのトラフィックが、許可された IP アドレスのみで送信元 NAT 変換されるようにする必要があります。これらの IP アドレスを他の宛先には使用しないでください。VPC ネットワーク test のサブネット 10.10.10.0/24 にある VM に対しては、次の要件を考慮してください。

  • これらの VM が宛先 198.51.100.20/30 にトラフィックを送信するには、NAT IP アドレス 203.0.113.20 を使用する必要があります。
  • これらの VM が宛先 198.51.100.30 または 198.51.100.31 にトラフィックを送信するには、NAT IP アドレス 203.0.113.30 を使用する必要があります。
  • これらの VM が他のインターネット宛先にトラフィックを送信するには、NAT IP アドレス 203.0.113.40 を使用する必要があります。

VPC ネットワーク test の他のすべてのサブネットでは、VM は NAT IP アドレス 203.0.113.10 を使用してトラフィックを宛先に送信する必要があります。



      2 つの Cloud NAT ゲートウェイを使用した Cloud NAT の構成(クリックして拡大)
2 つの Cloud NAT ゲートウェイを使用した Cloud NAT の構成(クリックして拡大)

この例では NAT ルールを使用できますが、サブネット 10.10.10.0/24 には他のサブネットとは異なる NAT ルールがあるため、2 つの NAT ゲートウェイが必要です。この構成は次の手順に沿って作成します。

  1. NAT IP アドレス 203.0.113.40 を使用してサブネット S1 に NAT ゲートウェイ(NAT GW 1)を作成し、次のルールを追加します。
    1. NAT GW 1 の NAT ルール 1: 宛先が 198.51.100.20/30 の場合、203.0.113.20 で送信元 NAT を使用します。
    2. NAT GW 1 の NAT ルール 2: 宛先が 198.51.100.30 または 198.51.100.31 の場合、203.0.113.30 で送信元 NAT を使用します。
  2. 他のすべてのサブネットに NAT ゲートウェイ 2(NAT GW 2)を作成し(S1 を除くすべてのサブネットを一覧表示)、NAT IP アドレスを 203.0.113.10 として割り当てます。この手順では NAT ルールは必要ありません。

次のステップ