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 送信元 IP アドレスと送信元ポートのタプルのセットを次のように予約します。
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 ファイアウォール ルールの要件はありません。ファイアウォール ルールは、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 アドレスとエイリアス 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 ゲートウェイを使用しても、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 タイムアウト
Public NAT ゲートウェイは次のタイムアウトを使用します。デフォルトのタイムアウト値を変更して、ポートの再利用率を増減できます。タイムアウト値は、Public NAT リソースの効率的な使用と、アクティブな接続、フロー、セッションの中断とのバランスを取るものです。
タイムアウト | 説明 | Public NAT のデフォルト | 構成可能 |
---|---|---|---|
UDP マッピングのアイドル タイムアウト RFC 4787 REQ-5 |
UDP フローによってエンドポイントへのトラフィック送信が停止するまでの時間を秒単位で指定します。これにより、Public NAT マッピングが削除されます。 UDP マッピングのアイドル タイムアウトは、トラフィックの送受信を停止する 2 つのエンドポイントに影響します。また、レスポンスに時間がかかるエンドポイントや、ネットワーク レイテンシが増加した場合にも影響します。 指定したタイムアウト値を増やすと、ポートの再利用率を下げることができます。タイムアウト値を大きくすると、ポートで長時間接続が維持され、特定の UDP ソケット経由のトラフィックの一時停止を防ぐことができます。 |
30 秒 | ○ |
TCP 確立済み接続のアイドル タイムアウト RFC 5382 REQ-5 |
接続がアイドル状態になるまでの秒数を指定します。この期間が経過すると Public NAT マッピングが削除されます。 TCP 確立済み接続のアイドル タイムアウトは、応答に時間がかかるエンドポイントや、ネットワークのレイテンシが増加した場合に影響します。 TCP 接続を開き、キープアライブ メカニズムを使用せずに接続を長時間開いたままにする場合は、タイムアウト値を増やすことができます。 |
1,200 秒(20 分) | ○ |
TCP 一時接続のアイドル タイムアウト RFC 5382 REQ-5 |
TCP 接続を半開状態で維持できる時間を指定します。この期間が経過すると Public NAT マッピングを削除できます。 外部エンドポイントが指定された時間よりも時間がかかる場合、またはネットワーク レイテンシが増加した場合、TCP 一時接続のアイドル タイムアウトはエンドポイントに影響します。TCP 接続確立時のアイドル タイムアウトとは異なり、TCP 一時接続のアイドル タイムアウトは半開接続にのみ影響します。
|
30 秒 注: このタイムアウトに設定した値に関係なく、Public NAT では、Public NAT 送信元 IP アドレスと送信元ポートのタプルで新しい接続が処理されるようになるまでに最大で 30 秒ほどかかります。 |
はい |
TCP TIME_WAIT タイムアウト RFC 5382 REQ-5 |
接続の有効期限が切れた後に、完全に閉じた TCP 接続を Public NAT マッピングに維持する時間を秒単位で指定します。 TCP TIME_WAIT タイムアウトにより、閉じた TCP 接続に属し、再送信された無効なパケットを内部エンドポイントが受信しないようにすることができます。 タイムアウト値を減らすと、無関係な閉じた接続から再送信されるパケットを受信する可能性がありますが、Public NAT ポートの再利用率を改善できます。 |
120 秒 注: このタイムアウトに設定した値に関係なく、Public NAT では、Public NAT 送信元 IP アドレスと送信元ポートのタプルで新しい接続が処理されるようになるまでに最大で 30 秒ほどかかります。 |
はい |
ICMP のマッピングのアイドル タイムアウト RFC 5508 REQ-2 |
トラフィック フローがない Internet Control Message Protocol(ICMP)の Public NAT マッピングが終了するまでの時間を秒単位で指定します。 ICMP のマッピングのアイドル タイムアウトは、指定した時間よりもエンドポイントが応答するのに時間がかかる場合か、ネットワーク レイテンシが増加した場合に、エンドポイントに影響します。 |
30 秒 | はい |
次のステップ
- Cloud NAT プロダクトの相互作用について学習する。
- Cloud NAT アドレスとポートについて学習する。
- Cloud NAT を設定する。
- Cloud NAT ルールについて学習する。
- サンプルの Compute Engine の設定を作成する。
- サンプルの Google Kubernetes Engine の設定を作成する。
- 一般的な問題のトラブルシューティングを行う。