調整 NAT 設定
設定 Cloud NAT 閘道設定 (公用 NAT 或私有 NAT) 後,您可以根據需求編輯設定。本頁列出可執行的工作,協助您調整 Cloud NAT 設定。
編輯設定可能會造成中斷,並導致現有的網路位址轉譯 (NAT) 連線中斷。如要進一步瞭解調整 Cloud NAT 設定的影響,請參閱「調整 NAT 設定對現有 NAT 連線的影響」。
查看通訊埠用量
修改每個 VM 的最低通訊埠用量前,請先查看每個 VM 的通訊埠用量。您可以使用compute.googleapis.com/nat/port_usage 指標取得這項資訊。
- 前往 Google Cloud 控制台的「Monitoring」頁面。 - 在導覽窗格中,選取「指標探索器」  。 。
- 展開「選取指標」選單,然後使用子選單選擇 - compute.googleapis.com/nat/port_usage指標:- 在「資源」部分選取「VM 執行個體」。
- 在「指標類別」部分,選取「Nat」。
- 在「指標」部分,選取「通訊埠用量」。
 
- 按一下「套用」。 
- 如要選取 Cloud NAT 閘道,請使用「篩選器」欄位。 
- 在「Group by」(分組依據) 區段中,針對「labels」(標籤) 選取「instance_id」(執行個體 ID)。 
- 在「Grouping function」(分組函式) 清單中,選取「Max」(最大值)。 
- 展開「更多選項」,然後將「校正函式」欄位設為「max」。 
- 如要查看過去 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 閘道。 
- 按一下「編輯」。 
- 按一下 [Advanced configurations] (進階設定)。 
- 修改「每個 VM 執行個體的最低通訊埠數量」欄位。 
- 按一下 [儲存]。 
gcloud
使用 gcloud compute routers nats update 指令。
這項指令會保留 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 閘道。 
- 按一下「編輯」。 
- 按一下 [Advanced configurations] (進階設定)。 
- 選取或取消選取「啟用動態通訊埠分配功能」。 
- 視需要調整「每個 VM 執行個體的最低通訊埠數量」和「每個 VM 執行個體的通訊埠數量上限」值。 
- 按一下 [儲存]。 
gcloud
使用 gcloud compute routers nats update 指令。
這項指令會保留 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 閘道。 
- 按一下「編輯」。 
- 按一下 [Advanced configurations] (進階設定)。 
- 調整「每個 VM 執行個體的通訊埠數量下限」和「每個 VM 執行個體的通訊埠數量上限」欄位。 
- 按一下 [儲存]。 
gcloud
使用 gcloud compute routers nats update 指令。
這個指令不會變更 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) 逾時
Cloud NAT 使用下列逾時。除非另有註明,否則這些逾時時間適用於公用 NAT 和私有 NAT。您可以修改預設逾時值,藉此降低或提高連接埠的重複使用率。每個逾時值都是在有效運用 Cloud NAT 資源,以及可能中斷的有效連線、流程或工作階段之間取得平衡。
逾時處理作業最多會有 5 秒的差異,也就是說,實際到期時間可能會比設定的逾時值早或晚 5 秒。為避免逾時時間縮短,請在預期設定值中加入五秒。
| 逾時 | 說明 | Cloud NAT 預設值 | 可自行設定 | 
|---|---|---|---|
| UDP 對應閒置逾時 RFC 4787 REQ-5 | 指定 UDP 流量必須停止傳送至端點的時間 (以秒為單位),以便移除 Cloud NAT 對應。 如果兩個端點停止互相傳送流量,UDP 對應閒置逾時就會受到影響。如果端點需要較長的回應時間,或網路延遲時間增加,也會受到影響。 您可以增加指定的逾時值,降低可重複使用的連接埠速率。逾時值越大,通訊埠保留連線的時間就越長,也能防止特定 UDP Socket 的流量暫停。 | 30 秒 | 是 | 
| 已建立的 TCP 連線閒置逾時 RFC 5382 REQ-5 | 指定連線閒置多久後,系統會移除 Cloud NAT 對應。 如果端點的回應時間較長,或網路延遲時間增加,就會受到 TCP 已建立連線閒置逾時的影響。 如要開啟 TCP 連線,並在沒有續傳機制的情況下長時間保持連線開啟,可以增加逾時值。 | 1200 秒 (20 分鐘) | 是 | 
| 暫時性 TCP 連線閒置逾時 RFC 5382 REQ-5 | 指定 TCP 連線可處於半開啟狀態的時間長度 (以秒為單位),超過後即可刪除 Cloud NAT 對應。 如果外部端點花費的時間超過指定時間,或網路延遲時間增加,TCP 暫時連線閒置逾時就會影響端點。與 TCP 已建立連線閒置逾時不同,TCP 暫時性連線閒置逾時只會影響半開啟連線。 | 30 秒 注意:無論您為這個逾時設定的值為何,Cloud NAT 最多可能需要額外 30 秒,才能使用 Cloud NAT 來源 IP 位址和來源埠元組處理新連線。 | 是 | 
| TCP TIME_WAIT 逾時 RFC 5382 REQ-5 | 指定連線過期後,完全關閉的 TCP 連線在 Cloud NAT 對應中保留的時間 (以秒為單位)。 TCP TIME_WAIT 超時可防止內部端點接收屬於已關閉 TCP 連線的無效封包 (這些封包會重新傳輸)。 您可以縮短逾時值,以提高 Cloud NAT 通訊埠的重複使用率,但可能會收到來自不相關的先前已關閉連線的重新傳輸封包。 | 120 秒 注意:無論您為這個逾時設定的值為何,Cloud NAT 最多可能需要額外 30 秒,才能使用 Cloud NAT 來源 IP 位址和來源埠元組處理新連線。如果使用動態通訊埠配置,請將這個逾時時間設為 15 秒以上,以免封包遭到捨棄。 | 是 | 
| ICMP 對應閒置逾時 RFC 5508 REQ-2 | 指定時間 (以秒為單位),超過這個時間後,系統會關閉沒有任何流量的網際網路控制訊息通訊協定 (ICMP) Cloud NAT 對應。 如果端點的回應時間超過指定時間,或網路延遲時間增加,ICMP 對應閒置逾時就會影響端點。 | 30 秒 | 是 | 
變更網路位址轉譯逾時
主控台
- 前往 Google Cloud 控制台的「Cloud NAT」頁面。 
- 按一下 Cloud NAT 閘道。 
- 按一下「編輯」。 
- 按一下 [Advanced configurations] (進階設定)。 
- 修改要變更的逾時值。 
- 按一下 [儲存]。 
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 閘道。 
- 按一下「編輯」。 
- 按一下 [Advanced configurations] (進階設定)。 
- 移除要重設的任何使用者設定值。 
- 按一下 [儲存]。 
系統會將移除的值重設為預設值。
gcloud
使用 gcloud compute routers nats update 指令。
這項指令會保留 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 設定的常見問題。