NAT 構成を調整する
Cloud NAT ゲートウェイの構成(Public NAT または Private NAT)を設定したら、要件に基づいて構成を編集できます。このページでは、Cloud NAT 構成を調整するために実行できるタスクについて説明します。
構成の編集は、本質的に中断を伴う可能性がある操作であり、既存のネットワーク アドレス変換(NAT)接続が切断される可能性があります。Cloud NAT 構成の調整による影響の詳細については、NAT 構成の調整が既存の NAT 接続に与える影響をご覧ください。
ポートの使用量を表示する
VM あたりの最小ポート使用量を変更する前に、VM あたりのポート使用量を確認します。この情報を得るには、compute.googleapis.com/nat/port_usage
指標を使用します。
Google Cloud コンソールで [Monitoring] ページに移動します。
ナビゲーション パネルで、Metrics Explorer を選択します。
[指標を選択] メニューを展開し、サブメニューを使用して
compute.googleapis.com/nat/port_usage
指標を選択します。- [リソース] で [VM instance] を選択します。
- [指標カテゴリ] で [Nat] を選択します。
- 指標で [Port usage] を選択します。
[適用] をクリックします。
Cloud NAT ゲートウェイを選択するには、[フィルタ] フィールドを使用します。
[グループ条件] セクションの [ラベル] で、[instance_id] を選択します。
[グループ化関数] リストで、[最大] を選択します。
[その他のオプション] を展開し、[Aligner] フィールドを [最大] に設定します。
過去 30 日間の使用量を表示するには、
30d
を指定します。
Metrics Explorer の使用方法の詳細については、Metrics Explorer 使用時に指標を選択するをご覧ください。
VM あたりの最小ポート数を選択する
NAT IP アドレスを最大限利用するには、適切な最小ポート数を選択することが重要です。
VM あたりのポート数を増やす前に、ポートの使用量を減らすために他の戦略を検討してください。
VM あたりのポート数を増やす必要がある場合は、まず、ゲートウェイでの VM あたりのポートの使用量を検討します。このデータを確認する方法については、ポートの使用量を表示するをご覧ください。
過去 30 日間の最大ポート使用量を確認するか、Cloud NAT ゲートウェイを表していると思われる別の期間の最大ポート使用量を確認します。
次のいずれかを行います。
静的ポートの割り当てを使用している場合は、現在の最大ポート使用量と最小値が同じになるように VM あたりのポート数を構成します。
動的ポートの割り当てを使用している場合は、最小値が最大ポート使用量よりも小さく、最大値が最大ポート使用量よりも高くなるように VM あたりのポート数を構成します。
VM ごとに割り当てられるデフォルトの最小ポート数を変更する
VM あたりの最小ポート数の構成方法の決定については、VM あたりの最小ポート数を選択するをご覧ください。
最小ポートの割り当ての変更による影響については、以下のセクションをご覧ください。
Cloud NAT ゲートウェイに動的ポート割り当てが構成されている場合は、動的ポート割り当てが構成されている場合に最小ポート数または最大ポート数を変更するをご覧ください。
コンソール
Google Cloud コンソールで、[Cloud NAT] ページに移動します。
[Cloud NAT ゲートウェイ] をクリックします。
[編集] をクリックします。
[詳細構成] をクリックします。
[VM インスタンスあたりの最小ポート数] フィールドを変更します。
[保存] をクリックします。
gcloud
このコマンドでは、Cloud NAT 構成の他のフィールドは変更されません。
gcloud compute routers nats update NAT_CONFIG \ --router=ROUTER_NAME \ --region=REGION \ --min-ports-per-vm=128
以下を置き換えます。
NAT_CONFIG
: Cloud NAT 構成の名前。ROUTER_NAME
: Cloud Router の名前。REGION
: 更新する Cloud NAT のリージョン。指定しない場合、リージョンの選択を求められる場合があります(インタラクティブ モードのみ)。
ポートの割り当て方法を変更する
静的ポート割り当てと動的ポート割り当てでは、構成要件が異なります。
既存の Cloud NAT ゲートウェイのポート割り当てタイプを更新する前に、Cloud NAT ゲートウェイの構成がポート割り当てタイプと互換性があることを確認してください。構成が対応していないと、変更が失敗します。
動的ポート割り当ての場合は、[エンドポイントに依存しないマッピング] が無効になっていることを確認します。
VM あたりの最小ポート数の設定が 2 の累乗で、32~32,768 の範囲であることを確認します。
コンソール
Google Cloud コンソールで、[Cloud NAT] ページに移動します。
[Cloud NAT ゲートウェイ] をクリックします。
[編集] をクリックします。
[詳細構成] をクリックします。
[動的ポートの割り当ての有効化] をオンまたはオフにします。
必要に応じて、[VM インスタンスあたりの最小ポート数] と [VM インスタンスあたりの最大ポート数] の値を調整します。
[保存] をクリックします。
gcloud
このコマンドでは、Cloud NAT 構成の他のフィールドは変更されません。
gcloud compute routers nats update NAT_CONFIG \ --router=ROUTER_NAME \ --region=REGION \ --enable-dynamic-port-allocation | --no-enable-dynamic-port-allocation \ [ --min-ports-per-vm=MIN_PORTS ] \ [ --max-ports-per-vm=MAX_PORTS ]
以下を置き換えます。
NAT_CONFIG
: Cloud NAT 構成の名前。ROUTER_NAME
: Cloud Router の名前。REGION
: 更新する Cloud NAT のリージョン。指定しない場合、リージョンの選択を求められる場合があります(インタラクティブ モードのみ)。MIN_PORTS
: 各 VM に割り当てるポートの最小数。動的ポートの割り当てが有効な場合、MIN_PORTS
は2
の累乗数で、32
~32768
の範囲で指定する必要があります。MAX_PORTS
: 各 VM に割り当てるポートの最大数。MAX_PORTS
は2
の累乗数である必要があり、64
~65536
の範囲にすることができます。MAX_PORTS
は、MIN_PORTS
より大きくしてくださいデフォルト値は65536
です。
動的ポート割り当てが構成されている場合に最小ポート数または最大ポート数を変更する
動的ポート割り当てを構成した後は、VM ごとに割り当てられる最小ポート数または最大ポート数を変更できます。
VM あたりの最小ポート数の構成方法の決定については、VM あたりの最小ポート数を選択するをご覧ください。
最小ポートの割り当ての変更による影響については、以下のセクションをご覧ください。
コンソール
Google Cloud コンソールで、[Cloud NAT] ページに移動します。
[Cloud NAT ゲートウェイ] をクリックします。
[編集] をクリックします。
[詳細構成] をクリックします。
[VM インスタンスあたりの最小ポート数] フィールドと [VM インスタンスあたりの最大ポート数] フィールドの値を調整します。
[保存] をクリックします。
gcloud
このコマンドでは、Cloud NAT 構成の他のフィールドは変更されません。
gcloud compute routers nats update NAT_CONFIG \ --router=ROUTER_NAME \ --region=REGION \ --min-ports-per-vm=MIN_PORTS \ --max-ports-per-vm=MAX_PORTS
以下を置き換えます。
NAT_CONFIG
: Cloud NAT 構成の名前。ROUTER_NAME
: Cloud Router の名前。REGION
: 更新する Cloud NAT のリージョン。指定しない場合、リージョンの選択を求められる場合があります(インタラクティブ モードのみ)。MIN_PORTS
: 各 VM に割り当てるポートの最小数。動的ポートの割り当てが有効な場合、MIN_PORTS
は2
の累乗数で、32
~32768
の範囲で指定する必要があります。MAX_PORTS
: 各 VM に割り当てるポートの最大数。MAX_PORTS
は2
の累乗数である必要があり、64
~65536
の範囲にすることができます。MAX_PORTS
は、MIN_PORTS
より大きくしてください
NAT タイムアウトを変更する
以降のセクションでは、NAT タイムアウトとその変更方法について説明します。
NAT タイムアウト
Cloud NAT は、プロトコル接続に次のタイムアウトを使用します。注記のある場合を除き、これらのタイムアウトは Public NAT と Private NAT の両方に適用されます。デフォルトのタイムアウト値を変更して、ポートの再利用率を増減できます。タイムアウト値は、Cloud NAT リソースの効率的な使用と、アクティブな接続、フロー、セッションの中断とのバランスを取るものです。
タイムアウト | 説明 | Cloud NAT のデフォルト | 構成可能 |
---|---|---|---|
UDP マッピングのアイドル タイムアウト RFC 4787 REQ-5 |
UDP フローによってエンドポイントへのトラフィック送信が停止するまでの時間を秒単位で指定します。これにより、Cloud NAT マッピングが削除されます。 UDP マッピングのアイドル タイムアウトは、トラフィックの送受信を停止する 2 つのエンドポイントに影響します。また、レスポンスに時間がかかるエンドポイントや、ネットワーク レイテンシが増加した場合にも影響します。 指定したタイムアウト値を増やすと、ポートの再利用率を下げることができます。タイムアウト値を大きくすると、ポートで長時間接続が維持され、特定の UDP ソケット経由のトラフィックの一時停止を防ぐことができます。 |
30 秒 | はい |
TCP 確立済み接続のアイドル タイムアウト RFC 5382 REQ-5 |
接続がアイドル状態になるまでの秒数を指定します。この期間が経過すると Cloud NAT マッピングが削除されます。 TCP 確立済み接続のアイドル タイムアウトは、応答に時間がかかるエンドポイントや、ネットワークのレイテンシが増加した場合に影響します。 TCP 接続を開き、キープアライブ メカニズムを使用せずに接続を長時間開いたままにする場合は、タイムアウト値を増やすことができます。 |
1,200 秒(20 分) | はい |
TCP 一時接続のアイドル タイムアウト RFC 5382 REQ-5 |
TCP 接続を半開状態で維持できる時間を指定します。この期間が経過すると Cloud NAT マッピングを削除できます。 外部エンドポイントが指定された時間よりも時間がかかる場合、またはネットワーク レイテンシが増加した場合、TCP 一時接続のアイドル タイムアウトはエンドポイントに影響します。TCP 接続確立時のアイドル タイムアウトとは異なり、TCP 一時接続のアイドル タイムアウトは半開接続にのみ影響します。 |
30 秒 注: このタイムアウトに設定した値に関係なく、Cloud NAT では、Cloud NAT 送信元 IP アドレスと送信元ポートのタプルで新しい接続が処理されるようになるまでに最大で 30 秒ほどかかります。 |
はい |
TCP TIME_WAIT タイムアウト RFC 5382 REQ-5 |
接続の有効期限が切れた後に、完全に閉じた TCP 接続を Cloud NAT マッピングに維持する時間を秒単位で指定します。 TCP TIME_WAIT タイムアウトにより、閉じた TCP 接続に属し、再送信された無効なパケットを内部エンドポイントが受信しないようにすることができます。 タイムアウト値を減らすと、無関係な閉じた接続から再送信されるパケットを受信する可能性がありますが、Cloud NAT ポートの再利用率を改善できます。 |
120 秒 注: このタイムアウトに設定した値に関係なく、Cloud NAT では、Cloud NAT 送信元 IP アドレスと送信元ポートのタプルで新しい接続が処理されるようになるまでに最大で 30 秒ほどかかります。 動的ポートの割り当てを使用している場合は、パケットがドロップされないように、このタイムアウトを 30 秒以上に設定します。 |
はい |
ICMP のマッピングのアイドル タイムアウト RFC 5508 REQ-2 |
トラフィック フローがない Internet Control Message Protocol(ICMP)の Cloud NAT マッピングが終了するまでの時間を秒単位で指定します。 ICMP のマッピングのアイドル タイムアウトは、指定した時間よりもエンドポイントが応答するのに時間がかかる場合か、ネットワーク レイテンシが増加した場合に、エンドポイントに影響します。 |
30 秒 | はい |
NAT タイムアウトを変更する
コンソール
Google Cloud コンソールで、[Cloud NAT] ページに移動します。
[Cloud NAT ゲートウェイ] をクリックします。
[編集] をクリックします。
[詳細構成] をクリックします。
タイムアウトを必要な値に修正します。
[保存] をクリックします。
gcloud
次に示すタイムアウト値を変更するには、次のフラグを指定して gcloud compute routers nats update
コマンドを使用します。
- UDP マッピングのアイドル タイムアウト:
--udp-idle-timeout
- TCP 確立済み接続のアイドル タイムアウト:
--tcp-established-idle-timeout
- TCP 一時接続のアイドル タイムアウト:
--tcp-transitory-idle-timeout
- TCP TIME_WAIT タイムアウト:
--tcp-time-wait-timeout
- ICMP のマッピングのアイドル タイムアウト:
--icmp-idle-timeout
このコマンドでは、NAT 構成の他のフィールドは変更されません。
たとえば、次のコマンドは UDP マッピングのアイドル タイムアウトの値を変更します。
gcloud compute routers nats update NAT_CONFIG \ --router=ROUTER_NAME \ --region=REGION \ --udp-idle-timeout=VALUE
以下を置き換えます。
NAT_CONFIG
: Cloud NAT 構成の名前。ROUTER_NAME
: Cloud Router の名前。REGION
: 更新する Cloud NAT のリージョン。指定しない場合、リージョンの選択を求められる場合があります(インタラクティブ モードのみ)。VALUE
: タイムアウト値(秒)。
NAT タイムアウトをデフォルト値にリセットする
コンソール
Google Cloud コンソールで、[Cloud NAT] ページに移動します。
[Cloud NAT ゲートウェイ] をクリックします。
[編集] をクリックします。
[詳細構成] をクリックします。
リセットするユーザー定義の値をすべて削除します。
[保存] をクリックします。
削除された値はデフォルト値にリセットされます。
gcloud
このコマンドでは、Cloud NAT 構成の他のフィールドは変更されません。
gcloud compute routers nats update NAT_CONFIG \ --router=ROUTER_NAME \ --region=REGION \ --clear-udp-idle-timeout \ --clear-icmp-idle-timeout \ --clear-tcp-established-idle-timeout \ --clear-tcp-time-wait-timeout \ --clear-tcp-transitory-idle-timeout
以下を置き換えます。
NAT_CONFIG
: Cloud NAT ゲートウェイの名前ROUTER_NAME
: Cloud Router の名前。REGION
: 更新する Cloud NAT のリージョン。指定しない場合、リージョンの選択を求められる場合があります(インタラクティブ モードのみ)。
NAT 構成の調整が既存の NAT 接続に与える影響
次の表は、Cloud NAT 構成の調整が既存の接続に与える影響をまとめたものです。
調整アクション | 接続切断 |
---|---|
エンドポイントに依存しないマッピングを無効にする | いいえ |
動的ポート割り当てを有効にしながら、VM あたりの最小ポート数を減らす: VM あたりの最大ポート数 >= VM あたりの旧最小ポート数、かつ VM あたりの最大ポート数 >= 1024
|
いいえ |
動的ポート割り当てがすでに有効になっている場合に VM あたりの最小ポート数を増やす | いいえ |
動的ポート割り当てがすでに有効になっている場合に VM あたりの最小ポート数を減らす | いいえ |
動的ポート割り当てがすでに無効になっている場合に VM あたりの最小ポート数を増やす | いいえ |
動的ポート割り当てがすでに無効になっている場合に VM あたりの最小ポート数を減らす | はい |
VM あたりの最大ポート数を増やす | いいえ |
動的ポート割り当てがすでに有効になっている場合に VM あたりの最大ポート数を減らす | はい |
動的ポート割り当てが有効または無効になっている場合に Cloud NAT タイムアウトを変更する | いいえ |
動的ポート割り当てを無効にする | はい |
次のステップ
- Cloud NAT のロギングとモニタリングを構成する。
- NAT 構成に関する一般的な問題のトラブルシューティングを行う。