調整 NAT 設定

設定 Cloud NAT 閘道設定 (公用 NAT 或私用 NAT) 後,您可以根據需求編輯設定。本頁列出可執行的工作,方便您調整 Cloud NAT 設定。

編輯設定可能會造成中斷,並導致現有的網路位址轉譯 (NAT) 連線中斷。如要進一步瞭解調整 Cloud NAT 設定的影響,請參閱「調整 NAT 設定對現有 NAT 連線的影響」。

查看通訊埠用量

修改每個 VM 的最低通訊埠用量前,請先查看每個 VM 的通訊埠用量。您可以使用compute.googleapis.com/nat/port_usage 指標取得這項資訊。

  1. 前往 Google Cloud 控制台的「Monitoring」頁面。

    前往「Monitoring」頁面

    1. 在導覽窗格中,選取「指標探索器」

    2. 展開「選取指標」選單,然後使用子選單選擇compute.googleapis.com/nat/port_usage指標:

      • 在「資源」部分選取「VM 執行個體」
      • 在「指標類別」部分,選取「Nat」
      • 在「指標」部分,選取「通訊埠用量」
    3. 按一下 [套用]

    4. 如要選取 Cloud NAT 閘道,請使用「篩選器」欄位。

    5. 在「Group by」(分組依據) 區段中,針對「labels」(標籤) 選取「instance_id」

    6. 在「Grouping function」(分組函式) 清單中,選取「Max」(最大值)

    7. 展開「更多選項」,然後將「校正函式」欄位設為「max」

    8. 如要查看過去 30 天的用量,請指定 30d

    如要進一步瞭解如何使用 Metrics Explorer,請參閱「在使用 Metrics Explorer 時選取指標」。

選擇每個 VM 的通訊埠數量下限

選擇適當的通訊埠數量下限,有助於盡量使用 NAT IP 位址。

增加每個 VM 的通訊埠數量前,請先考慮其他減少通訊埠用量的策略。

如要增加每個 VM 的通訊埠數量,請先考量閘道中每個 VM 的通訊埠用量。如要瞭解如何找出這項資料,請參閱「查看通訊埠用量」。

查看過去 30 天或您認為可代表 Cloud NAT 閘道的其他時間範圍內,使用的最大連接埠數。

執行下列其中一個步驟:

變更每個 VM 分配的預設通訊埠數量下限

如需設定每個 VM 的通訊埠數量下限相關說明,請參閱「選擇每個 VM 的通訊埠數量下限」。

如要瞭解變更最低連接埠分配量會造成哪些影響,請參閱下列章節:

如果 Cloud NAT 閘道已設定動態通訊埠分配功能,請參閱變更已設定動態通訊埠分配功能的通訊埠數量下限或上限

主控台

  1. 前往 Google Cloud 控制台的「Cloud NAT」頁面。

    前往 Cloud NAT

  2. 按一下 Cloud NAT 閘道。

  3. 按一下「編輯」

  4. 按一下 [Advanced configurations] (進階設定)

  5. 修改「每個 VM 執行個體的最低通訊埠數量」欄位。

  6. 按一下 [儲存]

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 之間。

主控台

  1. 前往 Google Cloud 控制台的「Cloud NAT」頁面。

    前往 Cloud NAT

  2. 按一下 Cloud NAT 閘道。

  3. 按一下「編輯」

  4. 按一下 [Advanced configurations] (進階設定)

  5. 選取或取消選取「啟用動態通訊埠分配功能」

  6. 視需要調整「每個 VM 執行個體的最低通訊埠數量」和「每個 VM 執行個體的通訊埠數量上限」值。

  7. 按一下 [儲存]

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 的次方,且介於 3232768 之間。
  • MAX_PORTS:每個 VM 可分配的通訊埠數量上限。MAX_PORTS 必須是 2 的次方,且介於 6465536 之間。MAX_PORTS 必須大於 MIN_PORTS。預設值為 65536

設定動態通訊埠分配功能時,變更通訊埠下限或上限

設定動態通訊埠分配功能後,您可以變更每個 VM 分配到的通訊埠數量下限或上限。

如需設定每個 VM 的通訊埠數量下限相關說明,請參閱「選擇每個 VM 的通訊埠數量下限」。

如要瞭解變更最低連接埠分配量會造成哪些影響,請參閱下列章節:

主控台

  1. 前往 Google Cloud 控制台的「Cloud NAT」頁面。

    前往 Cloud NAT

  2. 按一下 Cloud NAT 閘道。

  3. 按一下「編輯」

  4. 按一下 [Advanced configurations] (進階設定)

  5. 調整「每個 VM 執行個體的通訊埠數量下限」和「每個 VM 執行個體的通訊埠數量上限」欄位。

  6. 按一下 [儲存]

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 的次方,且介於 3232768 之間。
  • MAX_PORTS:每個 VM 可分配的通訊埠數量上限。MAX_PORTS 必須是 2 的次方,且介於 6465536 之間。MAX_PORTS 必須大於 MIN_PORTS

修改網路位址轉譯逾時

以下各節說明 NAT 超時,以及如何修改:

網路位址轉譯 (NAT) 逾時

Cloud NAT 會對通訊協定連線使用下列逾時。除非另有註明,否則這些逾時設定同時適用於公開 NAT 和私人 NAT。您可以修改預設逾時值,藉此降低或提高連接埠的重複使用率。每個逾時值都是在有效運用 Cloud NAT 資源,以及可能中斷的有效連線、流程或工作階段之間取得平衡。

逾時 說明 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 對應閒置逾時
(僅適用於 Public NAT)

RFC 5508 REQ-2

指定時間 (以秒為單位),超過這個時間後,系統會關閉沒有任何流量的網際網路控制訊息通訊協定 (ICMP) Cloud NAT 對應。

如果端點的回應時間超過指定時間,或網路延遲時間增加,ICMP 對應閒置逾時就會影響端點。

30 秒

變更網路位址轉譯逾時

主控台

  1. 前往 Google Cloud 控制台的「Cloud NAT」頁面。

    前往 Cloud NAT

  2. 按一下 Cloud NAT 閘道。

  3. 按一下「編輯」

  4. 按一下 [Advanced configurations] (進階設定)

  5. 修改要變更的逾時值。

  6. 按一下 [儲存]

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 超時重設為預設值

主控台

  1. 前往 Google Cloud 控制台的「Cloud NAT」頁面。

    前往 Cloud NAT

  2. 按一下 Cloud NAT 閘道。

  3. 按一下「編輯」

  4. 按一下 [Advanced configurations] (進階設定)

  5. 移除要重設的任何使用者設定值。

  6. 按一下 [儲存]

系統會將移除的值重設為預設值。

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 超時
停用動態通訊埠分配

後續步驟