Cloud NATのTCP TIME_WAITタイムアウトのデフォルト値が120秒から30秒に変更されます
はじめに
こんにちは。
クラウド事業本部コンサルティング部の渡邉です。
2026年3月31日、Cloud NATのTCP TIME_WAITのデフォルト値が120秒から30秒に変更されることが告知されました。
この変更は2026年6月30日から段階的にリージョンごとに適用され、9月30日以降は全リージョンで新しいデフォルト値(30秒)が適用されます。既存のCloud NATゲートウェイには影響しませんが、新規作成するゲートウェイに影響するため、事前に把握しておく必要があります。
今回は、TCP TIME_WAIT タイムアウトの役割と今回の変更の影響、そして現在の設定値の確認方法や対応方法を見ていきたいと思います。
TCP TIME_WAITタイムアウトとは
Cloud NATのタイムアウト設定
Cloud NATには、接続のライフサイクルに関する複数のタイムアウト設定があります。
| タイムアウト | 説明 | 現在のデフォルト | 変更後のデフォルト |
|---|---|---|---|
| UDP Mapping Idle Timeout | UDPフローが非アクティブになった後、NATマッピングが削除されるまでの時間 | 30秒 | 変更なし |
| TCP Established Connection Idle Timeout | 確立済みTCP接続がアイドル状態になった後、NATマッピングが削除されるまでの時間 | 1,200秒(20分) | 変更なし |
| TCP Transitory Connection Idle Timeout | ハーフオープン状態のTCP接続がNATマッピングから削除されるまでの時間 | 30秒 | 変更なし |
| TCP TIME_WAIT Timeout | 完全に閉じたTCP接続がNATマッピングに保持される時間 | 120秒 | 30秒 |
| ICMP Mapping Idle Timeout | ICMPマッピングが削除されるまでの時間(Public NATのみ) | 30秒 | 変更なし |
TCP TIME_WAITの役割
TCP TIME_WAITタイムアウトは、完全に閉じたTCP接続がCloud NATのマッピングに保持される時間を制御します(RFC 5382 REQ-5)。
この待機時間が必要な理由は以下の通りです。
- 遅延パケットの保護: 閉じたTCP接続に属する再送パケットが、内部エンドポイントに到達することを防ぐ
- ポート再利用の安全性: 同じ送信元IP・ポートの組み合わせが、同じ宛先に対して即座に再利用されることを防ぐ
一方で、TIME_WAITタイムアウトが長いほどポートが長時間占有されるため、NATポートの再利用効率が下がります。短くすることでポートの再利用が早まりますが、閉じた接続の再送パケットを受信するリスクがわずかに増加します。
なぜデフォルト値が変更されるのか
デフォルト値を30秒に短縮することで、以下のメリットがあると考えられます。
- NATポートの再利用効率が向上: ポートが早く解放されるため、ポート枯渇のリスクが低減
- 他のタイムアウト値との整合性: UDP Mapping Idle TimeoutやTCP Transitory Connection Idle Timeoutと同じ30秒に統一
変更スケジュールと影響範囲
段階的な適用スケジュール
| 期間 | 内容 |
|---|---|
| 2026年6月30日まで | 変更なし(全リージョンでデフォルト120秒) |
| 2026年6月30日〜9月29日 | リージョンごとに段階的にデフォルトが30秒に変更。新規ゲートウェイはリージョンの展開タイミングにより120秒または30秒のデフォルトが適用 |
| 2026年9月30日以降 | 全リージョンで新規ゲートウェイのデフォルトが30秒に統一 |
影響を受けるもの・受けないもの
| 対象 | 影響 |
|---|---|
| 変更適用後に新規作成するゲートウェイ | デフォルトが30秒になる |
| 既存のゲートウェイ(デフォルト値を使用中) | 影響なし。120秒のまま維持される |
| カスタム値を設定済みのゲートウェイ | 影響なし。設定済みの値がそのまま維持される |
現在の設定値を確認してみる
ここからは、既存のCloud NATゲートウェイのTCP TIME_WAITタイムアウト設定値を確認する方法を見ていきます。
gcloudコマンドで確認
gcloud compute routers nats describe test-nat-gateway \
--router=test-router \
--region=asia-northeast1
出力
autoNetworkTier: PREMIUM
enableDynamicPortAllocation: false
enableEndpointIndependentMapping: false
endpointTypes:
- ENDPOINT_TYPE_VM
logConfig:
enable: false
filter: ALL
name: test-nat-gateway
natIpAllocateOption: AUTO_ONLY
sourceSubnetworkIpRangesToNat: ALL_SUBNETWORKS_ALL_IP_RANGES
type: PUBLIC
tcpTimeWaitTimeoutSec フィールドの値を確認します。このフィールドが出力に含まれていない場合は、デフォルト値(現時点では120秒)が適用されています。
全リージョンの設定を一括確認
プロジェクト内の全Cloud NATゲートウェイの設定を一括で確認するには、以下のコマンドが便利です。
gcloud compute routers list --format="table(name,region,nats[].name,nats[].tcpTimeWaitTimeoutSec)" \
--filter="nats:*"
出力
NAME: test-router
REGION: asia-northeast1
NATS_NAME: ['test-nat-gateway']
TCP_TIME_WAIT_TIMEOUT_SEC: [None]
TCP_TIME_WAIT_TIMEOUT_SECが[None]の場合は、デフォルト値が(現時点では120秒)が適用されています。
事前にデフォルト値を明示的に設定してみる
変更後の挙動を事前に確認したい場合や、既存ゲートウェイの設定を明示的にしておきたい場合の手順です。
既存ゲートウェイに明示的に120秒を設定する(現在の挙動を維持)
変更適用後も120秒の挙動を維持したい場合は、明示的に値を設定しておきます。
gcloud compute routers nats update test-nat-gateway \
--router=test-router \
--region=asia-northeast1 \
--tcp-time-wait-timeout=120
再度、以下のコマンドでtcpTimeWaitTimeoutSecフィールドの値を確認します。
gcloud compute routers nats describe test-nat-gateway \
--router=test-router \
--region=asia-northeast1
出力
autoNetworkTier: PREMIUM
enableDynamicPortAllocation: false
enableEndpointIndependentMapping: false
endpointTypes:
- ENDPOINT_TYPE_VM
logConfig:
enable: false
filter: ALL
name: test-nat-gateway
natIpAllocateOption: AUTO_ONLY
sourceSubnetworkIpRangesToNat: ALL_SUBNETWORKS_ALL_IP_RANGES
tcpTimeWaitTimeoutSec: 120
type: PUBLIC
tcpTimeWaitTimeoutSec フィールドの値が出現し、値が120になっていることがわかります。
新しいデフォルト値(30秒)を先行して適用する
先行して30秒の値に変更して挙動を確認したい場合は、明示的に値を設定しておきます。
gcloud compute routers nats update test-nat-gateway \
--router=test-router \
--region=asia-northeast1 \
--tcp-time-wait-timeout=30
再度、以下のコマンドでtcpTimeWaitTimeoutSecフィールドの値を確認します。
gcloud compute routers nats describe test-nat-gateway \
--router=test-router \
--region=asia-northeast1
出力
autoNetworkTier: PREMIUM
enableDynamicPortAllocation: false
enableEndpointIndependentMapping: false
endpointTypes:
- ENDPOINT_TYPE_VM
logConfig:
enable: false
filter: ALL
name: test-nat-gateway
natIpAllocateOption: AUTO_ONLY
sourceSubnetworkIpRangesToNat: ALL_SUBNETWORKS_ALL_IP_RANGES
tcpTimeWaitTimeoutSec: 30
type: PUBLIC
tcpTimeWaitTimeoutSec フィールドの値が30になっていることがわかります。
設定値をデフォルトにリセットする
--clear-tcp-time-wait-timeoutのコマンドオプションを利用することで、設定値をデフォルトの値にリセットさせることもできます。
gcloud compute routers nats update test-nat-gateway \
--router=test-router \
--region=asia-northeast1 \
--clear-tcp-time-wait-timeout
出力
autoNetworkTier: PREMIUM
enableDynamicPortAllocation: false
enableEndpointIndependentMapping: false
endpointTypes:
- ENDPOINT_TYPE_VM
logConfig:
enable: false
filter: ALL
name: test-nat-gateway
natIpAllocateOption: AUTO_ONLY
sourceSubnetworkIpRangesToNat: ALL_SUBNETWORKS_ALL_IP_RANGES
type: PUBLIC
tcpTimeWaitTimeoutSec フィールドが出力に含まれなくなったため、デフォルト値(現時点では120秒)が適用されています。
なお、タイムアウト値の変更は既存のNAT接続の切断には影響しません。
Dynamic Port Allocationを使用している場合の注意点
Dynamic Port Allocation(動的ポート割り当て)を有効にしている場合、TCP TIME_WAITタイムアウトは15秒以上に設定する必要があります。15秒未満に設定するとパケットドロップが発生する可能性があります。
今回のデフォルト変更(120秒→30秒)はこの制約を満たしているため、Dynamic Port Allocationを使用している環境でも問題ありません。
まとめ
2026年3月31日に発表された、Cloud NATのTCP TIME_WAITのデフォルト値が120秒から30秒に変更されることについて紹介しました。
今回の記事のまとめは以下の通りです。
- Cloud NATのTCP TIME_WAITタイムアウトのデフォルト値が120秒から30秒に変更される
- 2026年6月30日から段階的に適用開始、9月30日以降は全リージョンで統一
- 既存のゲートウェイには影響なし。新規作成するゲートウェイのみ対象
- カスタム値を設定済みのゲートウェイも影響なし
- 現在の120秒を維持したい場合は、明示的に
--tcp-time-wait-timeout=120を設定しておくことを推奨
特に、Terraformなどでtcp_time_wait_timeout_secを指定せずにCloud NATを構成している場合は、変更適用後に新規作成したゲートウェイのTIME_WAIT時間が短くなることに注意してください。アプリケーションの特性上120秒が必要な場合は、IaCのコードに明示的に値を追加しておくことをおすすめします。
この記事が誰かの助けになれば幸いです。
以上、クラウド事業本部コンサルティング部の渡邉でした!







