Public NAT
Public NAT を使用すると、パブリック IP アドレスを持たない Google Cloud 仮想マシン(VM)インスタンスが、一連の共有パブリック IP アドレスを使用してインターネットと通信できます。Cloud NAT は Public NAT ゲートウェイを使用して、一連の外部 IP アドレスと送信元ポートをそのゲートウェイを使用する各 VM に割り当て、インターネットへの送信接続を作成します。
基本的な Public NAT の構成とワークフロー
次の図は、基本的な 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 は、Public NAT ゲートウェイがそのサブネットの IP アドレス範囲に適用されないため、インターネットにアクセスできません。nat-gw-eu
ゲートウェイは、europe-west1
リージョンのsubnet-3
のプライマリ IP アドレス範囲に適用するために構成されています。外部 IP アドレスを持たないネットワーク インターフェースの VM は、プライマリ内部 IP アドレスを使用するか、subnet-3
、192.168.1.0/24
のプライマリ IP アドレス範囲からエイリアス IP 範囲を使用して、インターネットにトラフィックを送信できます。
Public NAT ワークフローの例
上の図では、プライマリ内部 IP アドレス 10.240.0.4
を持ち、外部 IP アドレスを持たない VM は、外部 IP アドレス 203.0.113.1
から更新をダウンロードする必要があります。この図では、nat-gw-us-east
ゲートウェイは次のように構成されています。
- インスタンスあたりの最小ポート数:
64
192.0.2.50
と192.0.2.60
の 2 つのネットワーク アドレス変換(NAT)IP アドレスが手動で割り当てられています。subnet-1
のプライマリ IP アドレス範囲を NAT に設定
Public NAT は、ポート予約手順に従い、ネットワーク内の各 VM に NAT の送信元 IP アドレスと送信元ポートのタプルを予約します。たとえば、Public 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 アドレス:
仕様
全般的な仕様
次の送信元から送信されるパケットのインターネットに 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 ゲートウェイを構成できます。インターフェースの外部 IP アドレスでは、エイリアス IP アドレスに対して 1 対 1 の NAT は実行されません。
Google Kubernetes Engine(GKE)クラスタの場合、特定の状況でクラスタに外部 IP アドレスがある場合でも、Public NAT でサービスを提供できます。詳細については、GKE の相互作用をご覧ください。
Public NAT により、アウトバウンド接続とそれに対するインバウンド レスポンスを可能にしています。各 Public NAT ゲートウェイは、下り(外向き)に送信元 NAT を実行し、確立済みのレスポンス パケットに宛先 NAT を実行します。
Public NAT では、ファイアウォール ルールで許可されている場合でも、インターネットからの未承諾の受信リクエストは許可されません。詳細については、該当する RFC をご覧ください。
各 Public NAT ゲートウェイは、1 つの VPC ネットワーク、リージョン、Cloud Router に関連付けられます。Public NAT ゲートウェイと Cloud Router は、データプレーンに関与していないコントロール プレーンを提供するため、パケットは Public NAT ゲートウェイまたは Cloud Router を通過しません。
ルートとファイアウォール ルール
Public NAT は、ネクストホップがデフォルトのインターネット ゲートウェイであるカスタム静的ルートに依存します。Public NAT ゲートウェイを完全に使用するには、Virtual Private Cloud ネットワークには、ネクストホップがデフォルトのインターネット ゲートウェイであるデフォルト ルートが必要です。詳細については、ルートの相互作用をご覧ください。
Public NAT には Cloud NGFW ルールの要件はありません。ファイアウォール ルールは、Public NAT ゲートウェイではなく、Compute Engine VM のネットワーク インターフェースに直接適用されます。
NAT IP アドレスとの間の接続を許可する特別なファイアウォール ルールを作成する必要はありません。Public NAT ゲートウェイが VM のネットワーク インターフェースに NAT を提供する場合、NAT の前に、ネットワーク インターフェースのパケットに対して該当する下り(外向き)ファイアウォール ルールが評価されます。また、NAT によって処理された後に、上り(内向き)ファイアウォール ルールが評価されます。
サブネット IP アドレス範囲の適用範囲
VM ネットワーク インターフェースのプライマリ内部 IP アドレス、エイリアス IP 範囲、またはその両方に NAT を実行するように、Public NAT ゲートウェイを構成できます。この構成を行うには、ゲートウェイが適用されるサブネット IP アドレス範囲を選択します。
次のものに対して NAT を実施提供するように Public NAT ゲートウェイを構成できます。
-
リージョン内のすべてのサブネットのプライマリおよびセカンダリ IP アドレス範囲。ネットワーク インターフェースがリージョンのサブネットを使用している対象 VM のプライマリ内部 IP アドレスとすべてのエイリアス IP 範囲に対して、単一の Public NAT ゲートウェイが NAT を実施します。このオプションは、リージョンごとに、正確に 1 つの NAT ゲートウェイを使用します。
-
リージョン内のすべてのサブネットのプライマリ IP アドレス範囲。ネットワーク インターフェースがリージョンのサブネットを使用している対象 VM のプライマリ内部 IP アドレスとエイリアス IP 範囲に対して、単一の Public NAT ゲートウェイが NAT を提供します。リージョン内に追加の Public NAT ゲートウェイを作成して、対象 VM のサブネットのセカンダリ IP アドレス範囲からエイリアス IP 範囲に NAT を実施できます。
-
カスタム サブネット リスト。ネットワーク インターフェースが、指定されたサブネットのリストからサブネットを使用する対象 VM のプライマリ内部 IP アドレスとすべてのエイリアス IP 範囲に対して、単一の Public NAT ゲートウェイが NAT を提供します。
-
カスタム サブネット IP アドレス範囲。Public NAT の割り当てと上限に従い、必要な数の Public NAT ゲートウェイを作成できます。各ゲートウェアで処理するサブネットのプライマリ IP アドレスまたはセカンダリ IP アドレス範囲を選択します。
複数の Public NAT ゲートウェイ
次の条件のいずれかに該当する場合、VPC ネットワークの同じリージョンに複数の Public NAT ゲートウェイを設定できます。
各ゲートウェイは異なるサブネット用に構成されている。
1 つのサブネット内で、各ゲートウェイは異なる IP アドレス範囲に構成されている。カスタム Cloud NAT マッピングを使用して、Public NAT ゲートウェイを特定のサブネットまたは IP アドレス範囲にマッピングできます。
マッピングされた NAT ゲートウェイが重複しない限り、Public NAT の割り当てと上限に従って、必要な数の Public NAT ゲートウェイを作成できます。詳細については、Cloud NAT ゲートウェイの制限事項をご覧ください。
帯域幅
Public NAT ゲートウェイを使用しても、VM が使用できる送信または受信帯域幅の総量は変わりません。帯域幅の仕様はマシンタイプによって異なります。詳しくは、Compute Engine のドキュメントでのネットワーク帯域幅をご覧ください。
複数のネットワーク インターフェースを持つ VM
VM に複数のネットワーク インターフェースを持つように構成する場合、各インターフェースは別々の VPC ネットワークに属している必要があります。その結果、次のようになります。
- Public NAT ゲートウェイは、VM の 1 つの単一のネットワーク インターフェースにのみ適用されます。個別の Public NAT ゲートウェイは同じ VM に NAT を提供できます。この場合、各ゲートウェイが個々の別個のインターフェースに適用されます。
- 複数のネットワーク インターフェースを持つ VM の場合、外部 IP アドレスが割り振られているインターフェースは Public NAT の対象外となります。適切なサブネット IP アドレス範囲に適用されるように Public NAT ゲートウェイを構成している場合、外部 IP アドレスを持たないインターフェースは NAT の対象になります。
NAT IP アドレスとポート
Public NAT ゲートウェイを作成するときに、ゲートウェイがリージョン外部 IP アドレスを自動的に割り振るように選択できます。また、ゲートウェイに一定数のリージョン外部 IP アドレスを手動で割り当てることもできます。
NAT IP アドレスが自動的に割り振られる Public NAT ゲートウェイの場合は、次の点を考慮してください。
- Public NAT ゲートウェイが IP アドレスを割り振る Network Service Tiers(プレミアム ティアまたはスタンダード ティア)を選択できます。
NAT IP アドレスが自動的に割り振られる Public NAT ゲートウェイの階層を変更すると、Google Cloud はそのゲートウェイに割り当てられたすべての IP アドレスを解放し、すべてのポート割り当てを廃棄します。
新しく選択された階層から新しい IP アドレスセットが自動的に割り振られ、すべてのエンドポイントに新しいポート割り当てが提供されます。
特定の Public NAT ゲートウェイについて、特定の条件に従ってプレミアム ティアまたはスタンダード ティアのいずれか、あるいは両方から IP アドレスを手動で割り当てることもできます。
NAT IP アドレスの割り当ての詳細については、Public NAT IP アドレスをご覧ください。
各 Public 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 タイムアウト
Private NAT は、プロトコル接続のタイムアウトを設定します。これらのタイムアウトとそのデフォルト値については、NAT タイムアウトをご覧ください。
次のステップ
- Cloud NAT プロダクトの相互作用について学ぶ。
- Cloud NAT アドレスとポートについて学ぶ。
- Cloud NAT を設定する。
- Cloud NAT ルールについて学習する。
- Compute Engine の設定例を作成する。
- サンプルの Google Kubernetes Engine の設定を作成する。
- 一般的な問題のトラブルシューティングを行う。