使用 Public NAT 設定及管理網路位址轉譯

本頁面說明如何使用 Public NAT 設定及管理網路位址轉譯 (NAT)。設定 Public NAT 前,請參閱 Public NAT 總覽

限制

  • 如果您變更 Cloud NAT 閘道自動分配的 IP 位址網路層級,先前分配的 IP 位址上的所有連線都會立即關閉。

  • 如果您使用手動 NAT IP 位址分配,並變更 Cloud NAT 使用的 IP 位址,先前分配 IP 位址上的所有連線都會立即關閉。為避免發生這種情況,請參閱「排空與 NAT 相關聯的外部 IP 位址」。

  • 如果您使用靜態通訊埠分配功能設定 Cloud NAT 閘道,並減少每個虛擬機器 (VM) 執行個體的通訊埠數量下限,已建立的 NAT 連線可能會中斷。詳情請參閱「減少每個 VM 的通訊埠數量」。

  • 如果您設定的 Cloud NAT 閘道採用動態通訊埠分配功能,且您進一步變更設定,已建立的 NAT 連線可能會中斷。設定變更時,系統可能會暫時將分配給每個 VM 的通訊埠數量重設為設定的最小值。詳情請參閱「減少每個 VM 的通訊埠數量」。

  • 如果您設定 Cloud NAT 閘道時啟用動態通訊埠分配功能,之後又停用這項功能,系統會關閉所有使用 NAT 閘道的 VM 連線。詳情請參閱「切換交換器通訊埠分配方法」。

  • 如果啟用與端點無關的對應關係,就無法設定動態通訊埠分配或 NAT 規則

  • Cloud NAT 不支援 IP 片段。

  • Cloud NAT 設定會繫結至虛擬私有雲 (VPC) 網路。因此,這項設定會套用至該網路子網路的所有資源。您無法選擇要由 Cloud NAT 閘道服務的特定 VM。

  • IPv6 到 IPv4 的轉譯 (預先發布版) 僅適用於下列機器系列的 Compute Engine VM 執行個體:

    • 所有第二代或更早的系列
    • M3 系列

    詳情請參閱 Compute Engine 術語

    如果是 Google Kubernetes Engine (GKE) 節點、無伺服器端點和區域網際網路網路端點群組 (NEG),公開 NAT 只會轉譯 IPv4 位址。如要進一步瞭解哪些服務支援僅限 IPv6,請參閱「IPv6 支援 Google Cloud」。 Google Cloud

事前準備

設定 Public NAT 前,請先完成下列工作。

取得 IAM 權限

Compute 網路管理員角色 (roles/compute.networkAdmin) 包含設定 Public NAT 所需的權限。

準備環境

視您要使用 Google Cloud 控制台或 gcloud CLI 設定 Public NAT 而定,請在 Google Cloud中設定下列資源。

主控台

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Enable the API

gcloud

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  4. To initialize the gcloud CLI, run the following command:

    gcloud init
  5. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API:

    gcloud services enable compute.googleapis.com
  8. Install the Google Cloud CLI.

  9. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  10. To initialize the gcloud CLI, run the following command:

    gcloud init
  11. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  12. Make sure that billing is enabled for your Google Cloud project.

  13. Enable the Compute Engine API:

    gcloud services enable compute.googleapis.com

設定 DNS64

如要使用從 IPv6 到 IPv4 的轉譯,或 NAT64,請務必設定 DNS64。如要在 Cloud DNS 中設定 DNS64,請按照「設定 DNS64」一文中的操作說明進行。

如要僅將 Cloud NAT 用於 IPv4 流量,請略過這個步驟。

設定 Public NAT

如要設定 Public NAT,請在來源虛擬私有雲網路中建立 Cloud NAT 閘道。每個閘道都會與單一 VPC 網路、區域和 Cloud Router 建立關聯。Cloud NAT 僅使用 Cloud Router 將 NAT 設定資訊分組,不會指示 Cloud Router 使用邊界閘道通訊協定或新增路徑。NAT 流量不會通過 Cloud Router。

建立 Cloud NAT 閘道時,您可以設定下列設定。

設定 支援的選項 說明
來源端點類型
  • VM 執行個體、GKE 節點、無伺服器端點
  • 代管 Proxy 負載平衡器

根據預設,Public NAT 會為 VM 執行個體、GKE 節點和無伺服器端點提供 NAT 服務。如要為這些資源建立 Cloud NAT 閘道,請完成下一節的步驟。

如要為區域性網際網路 NEG 建立 Cloud NAT 閘道,請參閱「設定 Cloud NAT 閘道」一文,瞭解如何執行下列操作:

如需 Cloud NAT 支援的完整資源清單,請參閱 Cloud NAT 總覽。 Google Cloud

來源 IP 版本
  • IPv4 子網路範圍
  • IPv6 子網路範圍
  • IPv4 和 IPv6 子網路範圍
公開 NAT 支援從 IPv4 轉譯為 IPv4,以及從 IPv6 轉譯為 IPv4。如要設定 NAT64 (預先發布版),也必須 設定 DNS64
  • 如果您設定 IPv4 子網路範圍,那麼僅支援 IPv4 的 VM 執行個體和雙重堆疊 VM 執行個體 (使用相關的 IPv4 位址),都可以與網際網路上的 IPv4 目的地通訊。
  • 如果您設定 IPv6 子網路範圍 (搶先版),僅支援 IPv6 的 VM 執行個體 (位於僅支援 IPv6 和雙重堆疊的子網路中),即可與網際網路上的 IPv4 目的地通訊。
  • 如果您同時設定 IPv4 和 IPv6 子網路範圍 (搶先版), 則適用下列情況:
    • 僅支援 IPv4 的 VM 執行個體和雙重堆疊 VM 執行個體 (使用相關的 IPv4 位址),都可以與網際網路上的 IPv4 目的地通訊。
    • 雙堆疊 VM 執行個體無法自行使用 IPv6 位址,與網際網路上的 IPv4 目的地通訊。
    • 僅支援 IPv6 的 VM 執行個體可以與網際網路上的 IPv4 目的地通訊。
來源子網路

IPv4 流量:

  • 所有子網路的主要和次要範圍
  • 所有子網路的主要範圍
  • 自訂

IPv6 流量:

  • 所有子網路
  • 自訂

公開 NAT 支援您指定虛擬私有雲網路的區域中,下列子網路範圍:

  • IPv4 流量:主要和次要範圍。 您可以限制哪些子網路和子網路範圍可以使用 NAT。
  • IPv6 流量:內部和外部範圍。 您可以限制哪些子網路可以使用 NAT。
IP 位址分配
  • 自動 (建議)
  • 手動

預設情況下,公開 NAT 會自動分配 NAT IP 位址。這項設定會自動分配必要的外部 IP 位址,以提供 NAT 服務給區域。區域中任何子網路內沒有外部 IP 位址的 VM 執行個體,都能透過 NAT 存取網際網路。使用自動 NAT IP 位址分配時, Google Cloud 會保留專案中的 IP 位址。這些位址會計入專案的靜態 IP 位址配額

您可以為 Cloud NAT 閘道手動分配 NAT IP 位址。如果您選擇手動分配,請務必分配足夠的 IP 位址,以免封包遺失。

詳情請參閱「公用 NAT IP 位址」。

網路級別
  • 進階
  • 標準
透過公開 NAT,您可以指定 網路服務級別,Cloud NAT 閘道會從該級別分配外部 IP 位址。根據預設,網路層級會設為目前的專案層級。
  • 使用自動 NAT IP 位址分配功能建立 Cloud NAT 閘道時,您可以從進階級或標準級指派 NAT IP 位址。
  • 手動分配 NAT IP 位址時,您可以選擇從進階級或標準級手動指派 NAT IP 位址,或同時從這兩個級別指派,但須符合特定條件
進階設定
  • 動態通訊埠分配
  • 端點獨立對應
  • 記錄
  • 網路位址轉譯 (NAT) 逾時

根據預設,Public NAT 會使用靜態通訊埠分配功能,也就是為每個 VM 分配相同數量的通訊埠。您可以透過自動或手動 NAT IP 位址分配,設定動態連接埠分配。使用動態通訊埠分配功能時,Cloud NAT 閘道會根據用量,為每個 VM 分配不同數量的通訊埠。如果 Cloud NAT 閘道使用 NAT 規則或動態通訊埠分配,您就無法啟用「與端點無關的對應關係」

記錄功能預設為停用。如要瞭解 NAT 超時及其預設值,請參閱「NAT 超時」。

建立 Cloud NAT 閘道

主控台

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

    前往 Cloud NAT

  2. 按一下第一個 Cloud NAT 閘道的「開始使用」,或後續閘道的「建立 Cloud NAT 閘道」

  3. 在「閘道名稱」欄位中,輸入閘道名稱。

  4. 在「NAT type」(NAT 類型) 中,選取「Public」(公開)

  5. 在「選取 Cloud Router」部分,設定下列項目:

    1. 在「Network」(網路) 欄位中,選取要建立閘道的虛擬私有雲網路。
    2. 在「Region」(區域) 欄位中,設定閘道的區域。
    3. 在「Cloud Router」欄位中,選取或建立該區域的 Cloud Router。
  6. 在「Cloud NAT mapping」(Cloud NAT 對應) 區段中,確認「Source endpoint type」(來源端點類型) 選取「VM instances, GKE nodes, Serverless」(VM 執行個體、GKE 節點、無伺服器) 選項。

  7. 在「來源 IP 版本」欄位中,選取來源 IP 版本,然後設定要使用 Cloud NAT 的來源子網路範圍。

    • 如果是 IPv4 子網路範圍,請在「來源子網路」欄位中,選取下列其中一項:
      • 如要將 Cloud NAT 用於區域中所有子網路的主要和次要 IP 範圍,請選取「所有子網路的主要和次要 IP 範圍」
      • 如要只將 Cloud NAT 用於主要 IP 範圍,請選取「所有子網路的主要 IP 範圍」
      • 如要限制哪些子網路 IP 範圍可以使用 Cloud NAT,請選取「自訂」,然後執行下列操作:
        1. 在「Subnets」(子網路) 區段中,選取子網路。
        2. 在「IP 範圍」清單中,選取要納入的子網路 IP 範圍,然後按一下「確定」
        3. 選用:如要指定其他範圍,請按一下「新增子網路和 IP 範圍」,然後新增其他子網路。
    • 如果是 IPv6 子網路範圍,請在「來源子網路」欄位中,選取下列其中一個選項:
      • 如要為區域中所有子網路的內部和外部 IP 範圍使用 Cloud NAT,請選取「所有子網路」
      • 如要限制哪些子網路可以使用 Cloud NAT,請選取「Custom」(自訂),然後執行下列操作:
        1. 在「Subnets」(子網路) 區段中,選取子網路。
        2. 選用:如要指定其他子網路,請按一下「新增子網路」,然後新增其他子網路。
  8. 選取下列其中一個選項,設定 NAT IP 位址分配類型和網路層級:

    • 如要使用自動 NAT IP 位址分配功能,請按照下列步驟操作:
      1. 在「Cloud NAT IP addresses」(Cloud NAT IP 位址) 清單中,選取「Automatic (recommended)」(自動 (建議使用))
      2. 在「Network service tier」(網路服務級別) 部分,選擇「Premium」(進階級) 或「Standard」(標準級)
    • 如要使用手動 NAT IP 位址分配,請按照下列步驟操作:
      1. 在「Cloud NAT IP addresses」(Cloud NAT IP 位址) 清單中,選取「Manual」(手動)
      2. 在「Network service tier」(網路服務級別) 部分,選擇「Premium」(進階級)或「Standard」(標準級)
      3. 選取或建立靜態預留外部 IP 位址,以用於 NAT。
      4. 選用:如要指定其他 IP 位址,請按一下「新增 IP 位址」,然後選取或建立其他靜態保留外部 IP 位址。
      5. 選用:如要建立自訂 NAT 規則,請設定「Cloud NAT 規則」部分。如需操作說明,請參閱「建立 NAT 規則」。
  9. 選用:在「進階設定」部分中,調整下列任一設定:

    • 是否要設定記錄功能。系統預設會選取「不記錄」
    • 是否要變更 Cloud NAT 分配通訊埠的方式。依預設,「啟用動態通訊埠分配功能」會取消選取。如果是靜態通訊埠分配,系統會將「每個 VM 執行個體的通訊埠數量下限」欄位設為 64
      • 如要更新靜態通訊埠分配的每個 VM 執行個體通訊埠數量下限,請在「每個 VM 執行個體的最低通訊埠數量」欄位中指定值。這個值可設為 257344 之間的數字。
      • 如要設定動態通訊埠分配功能,請選取「啟用動態通訊埠分配」,然後在「每個 VM 執行個體的最低通訊埠數量」欄位中選取值 (預設為 32),並在「每個 VM 執行個體的通訊埠數量上限」欄位中選取值 (預設為 65536)。
    • 是否要更新通訊協定連線的 NAT 逾時。如要瞭解這些逾時和預設值,請參閱「NAT 逾時」。
  10. 點選「建立」

gcloud

如要建立 Cloud NAT 閘道,請使用 gcloud compute routers nats create 指令。您可以建立 Cloud NAT 閘道,並將所有設定選項設為預設值,也可以自訂閘道設定。

使用預設設定建立 Cloud NAT 閘道

  1. 在要使用 Cloud NAT 閘道的地區建立 Cloud Router。您需要這個 Cloud Router 才能建立 Cloud NAT 閘道。

  2. 請視要設定 NAT 的來源子網路範圍 IP 版本,執行下列其中一個指令,建立 Cloud NAT 閘道。

    • 為 IPv4 子網路範圍設定 Cloud NAT:

      gcloud compute routers nats create NAT_CONFIG \
          --router=NAT_ROUTER \
          --region=REGION \
          --nat-all-subnet-ip-ranges \
          --auto-allocate-nat-external-ips
      

      這項設定會為區域中僅限 IPv4 和雙重堆疊的子網路,啟用所有 IPv4 子網路範圍的 NAT。

    • 為 IPv6 子網路範圍設定 Cloud NAT (搶先版):

      gcloud compute routers nats create NAT_CONFIG \
          --router=NAT_ROUTER \
          --region=REGION \
          --nat64-all-v6-subnet-ip-ranges \
          --auto-allocate-nat-external-ips
      

      這項設定會為該區域中僅支援 IPv6 和雙重堆疊的子網路,啟用所有 IPv6 子網路範圍的 NAT。

    • 為 IPv4 和 IPv6 子網路範圍設定 Cloud NAT (搶先版):

      gcloud compute routers nats create NAT_CONFIG \
          --router=NAT_ROUTER \
          --region=REGION \
          --nat-all-subnet-ip-ranges \
          --nat64-all-v6-subnet-ip-ranges \
          --auto-allocate-nat-external-ips
      

      這項設定會為區域中僅支援 IPv4、雙重堆疊和僅支援 IPv6 的子網路,啟用所有 IPv4 和 IPv6 子網路範圍的 NAT。

    更改下列內容:

    • NAT_CONFIG:NAT 設定的名稱
    • NAT_ROUTER:您在上一個步驟中建立的 Cloud Router 名稱
    • REGION:您要使用 Cloud NAT 閘道的區域

自訂 Cloud NAT 閘道的設定

建立 Cloud NAT 閘道時,您可以自訂預設設定。如需可用旗標的完整清單,請參閱 gcloud compute routers nats create 指令

只有在為 Compute Engine VM 執行個體設定 NAT64 時,才需要為 IPv6 子網路範圍建立 Cloud NAT 閘道。如果是 GKE 節點、無伺服器端點和區域網際網路 NEG,公開 NAT 只會轉換 IPv4 位址。

建立 Cloud NAT 閘道:

  1. 在要使用 Cloud NAT 閘道的地區建立 Cloud Router。您需要這個 Cloud Router 才能建立 Cloud NAT 閘道。

  2. 建立 Cloud NAT 閘道,並指定要自訂的每個參數。

    下列範例說明如何自訂來源子網路、NAT IP 位址配置類型、網路層級和連接埠配置類型。

    您在每個範例中執行的指令,取決於您要設定 NAT 的來源子網路範圍 IP 版本。

    • 限制可使用 NAT 的來源子網路。如要建立 Cloud NAT 閘道,限制可使用 NAT 的子網路和子網路範圍,請執行下列其中一個指令:

      • 限制可使用 NAT 的 IPv4 子網路範圍:

        gcloud compute routers nats create NAT_CONFIG \
            --router=NAT_ROUTER \
            --region=REGION \
            --nat-custom-subnet-ip-ranges=IPV4_SUBNET_RANGES \
            --auto-allocate-nat-external-ips
        
      • 限制可使用 NAT 的 IPv6 子網路範圍 (預先發布版):

        gcloud compute routers nats create NAT_CONFIG \
            --router=NAT_ROUTER \
            --region=REGION \
            --nat64-custom-v6-subnet-ip-ranges=IPV6_SUBNET_RANGES \
            --auto-allocate-nat-external-ips
        
      • 限制 IPv4 和 IPv6 子網路範圍 (預先發布):

        gcloud compute routers nats create NAT_CONFIG \
            --router=NAT_ROUTER \
            --region=REGION \
            --nat-custom-subnet-ip-ranges=IPV4_SUBNET_RANGES \
            --nat64-custom-v6-subnet-ip-ranges=IPV6_SUBNET_RANGES \
            --auto-allocate-nat-external-ips
        

      更改下列內容:

      • NAT_CONFIG:NAT 設定的名稱
      • NAT_ROUTER:您在上一步建立的 Cloud Router 名稱
      • REGION:您要使用 Cloud NAT 閘道的區域
      • IPV4_SUBNET_RANGES:以半形逗號分隔的子網路名稱清單,例如:
        • SUBNET_NAME_1:ALL,SUBNET_NAME_2:ALL:包含子網路 SUBNET_NAME_1SUBNET_NAME_2 的主要和所有次要範圍。
        • SUBNET_NAME_1,SUBNET_NAME_2:僅包含子網路 SUBNET_NAME_1SUBNET_NAME_2 的主要範圍。
        • SUBNET_NAME:SECONDARY_RANGE_NAME:包含子網路 SUBNET_NAME 的指定次要範圍,但不包含主要範圍
        • SUBNET_NAME_1,SUBNET_NAME_2:SECONDARY_RANGE_NAME:包含子網路 SUBNET_NAME_1 的主要範圍,以及子網路 SUBNET_NAME_2 的指定次要範圍
      • IPV6_SUBNET_RANGES:以半形逗號分隔的子網路名稱清單,例如 SUBNET_NAME_1,SUBNET_NAME_2
    • 設定手動 NAT IP 位址分配。 如要建立 Cloud NAT 閘道並手動分配 NAT IP 位址,請執行下列其中一個指令:

      • IPv4 子網路範圍:

        gcloud compute routers nats create NAT_CONFIG \
            --router=NAT_ROUTER \
            --region=REGION \
            --nat-all-subnet-ip-ranges \
            --nat-external-ip-pool=IP_ADDRESS_1,IP_ADDRESS_2
        
      • IPv6 子網路範圍 (預覽版):

        gcloud compute routers nats create NAT_CONFIG \
            --router=NAT_ROUTER \
            --region=REGION \
            --nat64-all-v6-subnet-ip-ranges \
            --nat-external-ip-pool=IP_ADDRESS_1,IP_ADDRESS_2
        

        如果您要為 IPv4 和 IPv6 子網路範圍建立閘道,請在這個指令中同時指定 --nat-all-subnet-ip-ranges--nat64-all-v6-subnet-ip-ranges 標記。

      更改下列內容:

      • NAT_CONFIG:NAT 設定的名稱
      • NAT_ROUTER:您在上一步建立的 Cloud Router 名稱
      • REGION:您要使用 Cloud NAT 閘道的區域
      • IP_ADDRESS_1IP_ADDRESS_2:您要用於 NAT 的靜態保留外部 IP 位址

        使用 --nat-external-ip-pool 標記時,您可以指定一或多個 IP 位址。

    • 指定網路層級。如要指定 Cloud NAT 閘道分配外部 IP 位址的網路層級,請執行下列其中一個指令:

      • IPv4 子網路範圍:

        gcloud compute routers nats create NAT_CONFIG \
            --router=NAT_ROUTER \
            --region=REGION \
            --nat-all-subnet-ip-ranges \
            --auto-allocate-nat-external-ips \
            --auto-network-tier=AUTO_NETWORK_TIER
        
      • IPv6 子網路範圍 (預覽版):

        gcloud compute routers nats create NAT_CONFIG \
            --router=NAT_ROUTER \
            --region=REGION \
            --nat64-all-v6-subnet-ip-ranges \
            --auto-allocate-nat-external-ips \
            --auto-network-tier=AUTO_NETWORK_TIER
        

        如果您要為 IPv4 和 IPv6 子網路範圍建立閘道,請在這個指令中同時指定 --nat-all-subnet-ip-ranges--nat64-all-v6-subnet-ip-ranges 標記。

      更改下列內容:

      • NAT_CONFIG:NAT 設定的名稱
      • NAT_ROUTER:您在上一步建立的 Cloud Router 名稱
      • REGION:您要使用 Cloud NAT 閘道的區域
      • AUTO_NETWORK_TIER:自動為 Cloud NAT 閘道分配 IP 位址時使用的網路層級。允許的值為 PREMIUMSTANDARD。如未指定,系統會將目前的專案層級預設層級與 Cloud NAT 閘道建立關聯。

        您也可以指定網路層級,並手動分配 NAT IP 位址。如果為閘道指派多個 IP 位址,所有指派的 IP 位址都必須來自同一個網路層級。

    • 設定動態通訊埠分配。如要建立採用動態通訊埠分配的 Cloud NAT 閘道,請執行下列其中一個指令:

      • IPv4 子網路範圍:

        gcloud compute routers nats create NAT_CONFIG \
            --router=NAT_ROUTER \
            --region=REGION \
            --nat-all-subnet-ip-ranges \
            --auto-allocate-nat-external-ips \
            --enable-dynamic-port-allocation \
            [--min-ports-per-vm=MIN_PORTS ] \
            [--max-ports-per-vm=MAX_PORTS ]
        
      • IPv6 子網路範圍 (預覽版):

        gcloud compute routers nats create NAT_CONFIG \
            --router=NAT_ROUTER \
            --region=REGION \
            --nat64-all-v6-subnet-ip-ranges \
            --auto-allocate-nat-external-ips \
            --enable-dynamic-port-allocation \
            [--min-ports-per-vm=MIN_PORTS ] \
            [--max-ports-per-vm=MAX_PORTS ]
        

        如果您要為 IPv4 和 IPv6 子網路範圍建立閘道,請在這個指令中同時指定 --nat-all-subnet-ip-ranges--nat64-all-v6-subnet-ip-ranges 標記。

      更改下列內容:

      • NAT_CONFIG:NAT 設定的名稱
      • NAT_ROUTER:您在上一步建立的 Cloud Router 名稱
      • REGION:要使用 Cloud NAT 閘道的區域
      • 選用:MIN_PORTS:為每個 VM 分配的通訊埠數量下限。如果啟用動態通訊埠配置,MIN_PORTS 必須是 2 的次方,且介於 3232768 之間。預設值為 32
      • 選填:MAX_PORTS:每個 VM 可分配的通訊埠數量上限。MAX_PORTS 必須是 2 的次方,且介於 6465536 之間。MAX_PORTS 必須大於 MIN_PORTS。預設值為 65536

Terraform

您可以使用 Terraform 模組,建立具有 NAT 閘道的 Cloud Router,以處理 IPv4 流量。

module "cloud_router" {
  source  = "terraform-google-modules/cloud-router/google"
  version = "~> 7.0"
  name    = "my-cloud-router"
  project = var.project_id
  network = module.vpc.network_name
  region  = "us-central1"

  nats = [{
    name                               = "my-nat-gateway"
    source_subnetwork_ip_ranges_to_nat = "LIST_OF_SUBNETWORKS"
    subnetworks = [
      {
        name                     = module.vpc.subnets["us-central1/test-subnet-01"].id
        source_ip_ranges_to_nat  = ["PRIMARY_IP_RANGE", "LIST_OF_SECONDARY_IP_RANGES"]
        secondary_ip_range_names = module.vpc.subnets["us-central1/test-subnet-01"].secondary_ip_range[*].range_name
      }
    ]
  }]
}

產生的 NAT 閘道會使用下列預設值:

enable_endpoint_independent_mapping = true
icmp_idle_timeout_sec               = 30
min_ports_per_vm                    = 0
nat_ip_allocate_option              = "AUTO_ONLY"
source_subnetwork_ip_ranges_to_nat  = "ALL_SUBNETWORKS_ALL_IP_RANGES"
tcp_established_idle_timeout_sec    = 1200
tcp_transitory_idle_timeout_sec     = 30
udp_idle_timeout_sec                = 30
log_config {
    enable = true
    filter = "ALL"
}

查看 Public NAT 設定

主控台

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

    前往 Cloud NAT

  2. 如要查看 NAT 閘道詳細資料、對應資訊或設定詳細資料,請按一下 NAT 閘道的名稱。

  3. 如要查看 NAT 狀態,請參閱 NAT 閘道的「狀態」欄。

gcloud

執行下列指令即可查看 NAT 設定詳細資料:

  • 查看 Public NAT 閘道設定。

    gcloud compute routers nats describe NAT_CONFIG \
        --router=ROUTER_NAME \
        --region=REGION
    

    更改下列內容:

    • NAT_CONFIG:NAT 設定的名稱
    • ROUTER_NAME:Cloud Router 的名稱
    • REGION:要說明 NAT 的區域;如未指定,系統可能會提示您選取區域 (僅限互動模式)
  • 查看分配給每個 VM 介面的 IP:port 範圍對應。

    gcloud compute routers get-nat-mapping-info ROUTER_NAME \
        --region=REGION
    
  • 查看 Public NAT 閘道的狀態。

    gcloud compute routers get-status ROUTER_NAME \
        --region=REGION
    

查看指派給 Cloud NAT 閘道的外部 IP 位址

預設情況下,公開 NAT 的 Cloud NAT 閘道會自動分配 IP 位址。如要查看指派給 Cloud NAT 閘道的外部 IP 位址,請按照下列步驟操作。

主控台

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

    前往 Cloud NAT

  2. 按一下 Cloud NAT 閘道的名稱。

  3. 在「Cloud NAT gateway details」(Cloud NAT 閘道詳細資料)頁面中,查看「Allocated external IP addresses」(已分配的外部 IP 位址)

gcloud

如要列出所有已分配的 NAT IP 位址,請使用下列指令:

gcloud compute routers get-nat-ip-info NAT_ROUTER \
    --region=REGION

如需更多範例,請參閱 gcloud compute routers get-nat-ip-info 指令

更新 Public NAT 設定

設定 Cloud NAT 閘道後,您可以根據需求更新閘道設定。下列各節列出可執行的工作,用來更新 Cloud NAT 閘道。

更新已設定 NAT 的子網路

主控台

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

    前往 Cloud NAT

  2. 按一下 Cloud NAT 閘道。

  3. 按一下「編輯」

  4. 在「NAT 對應」下方,將「來源子網路」設為「自訂」

  5. 選取子網路。

  6. 在「IP 範圍」清單中,選取要納入的子網路 IP 範圍。

  7. 選用:如要指定其他範圍,請按一下「新增子網路和 IP 範圍」

  8. 按一下 [儲存]

gcloud

使用 gcloud compute routers nats update 指令

如要更新現有 Cloud NAT 閘道的來源子網路範圍,請執行下列其中一個指令,視您要更新的子網路範圍 IP 版本而定:

  • 更新 IPv4 子網路範圍:

    gcloud compute routers nats update NAT_CONFIG \
        --router=NAT_ROUTER \
        --region=REGION \
        --nat-custom-subnet-ip-ranges=IPV4_SUBNET_RANGES
    
  • 更新 IPv6 子網路範圍 (預覽版):

    gcloud compute routers nats update NAT_CONFIG \
        --router=NAT_ROUTER \
        --region=REGION \
        --nat64-custom-v6-subnet-ip-ranges=IPV6_SUBNET_RANGES
    
  • 更新 IPv4 和 IPv6 子網路範圍 (預覽版):

    gcloud compute routers nats update NAT_CONFIG \
        --router=NAT_ROUTER \
        --region=REGION \
        --nat-custom-subnet-ip-ranges=IPV4_SUBNET_RANGES \
        --nat64-custom-v6-subnet-ip-ranges=IPV6_SUBNET_RANGES
    

更改下列內容:

  • NAT_CONFIG:NAT 設定的名稱
  • NAT_ROUTER:Cloud Router 的名稱
  • REGION:NAT 閘道的區域
  • :以半形逗號分隔的子網路名稱清單,例如:
      IPV4_SUBNET_RANGES
    • SUBNET_NAME_1:ALL,SUBNET_NAME_2:ALL:包含子網路 SUBNET_NAME_1SUBNET_NAME_2 的主要和所有次要範圍。
    • SUBNET_NAME_1,SUBNET_NAME_2:僅包含子網路 SUBNET_NAME_1SUBNET_NAME_2 的主要範圍。
    • SUBNET_NAME:SECONDARY_RANGE_NAME:包含子網路 SUBNET_NAME 的指定次要範圍,但不包含主要範圍
    • SUBNET_NAME_1,SUBNET_NAME_2:SECONDARY_RANGE_NAME:包含子網路 SUBNET_NAME_1 的主要範圍,以及子網路 SUBNET_NAME_2 的指定次要範圍
  • IPV6_SUBNET_RANGES:以半形逗號分隔的子網路名稱清單,例如 SUBNET_NAME_1,SUBNET_NAME_2

從 NAT 移除子網路

您可以從 Cloud NAT 閘道移除不再使用的子網路。

主控台

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

    前往 Cloud NAT

  2. 按一下 Cloud NAT 閘道。

  3. 按一下「編輯」

  4. 刪除要從 NAT 對應中移除的子網路。

  5. 按一下 [儲存]

gcloud

使用 gcloud compute routers nats update 指令

您只能移除 IPv4 子網路範圍或 IPv6 子網路範圍,但不能同時移除兩者。

以下範例會停用 IPv6 子網路範圍的 NAT:

gcloud compute routers nats update NAT_CONFIG \
    --router=NAT_ROUTER \
    --region=REGION \
    --clear-nat64-subnet-ip-ranges

更改下列內容:

  • NAT_CONFIG:NAT 設定的名稱
  • NAT_ROUTER:Cloud Router 的名稱
  • REGION:NAT 閘道的區域

更新指派給 NAT 的外部 IP 位址

您可以變更特定閘道的外部 IP 位址清單,或從手動切換為自動 IP 分配。這麼做會移除先前分配的 IP 位址,並新增 IP 位址。 Google Cloud 先前分配的 IP 位址上的所有現有連線都會立即關閉。如要允許現有連線繼續運作,同時禁止在這些 IP 位址上建立新連線,請參閱本文的「排空與 NAT 相關聯的外部 IP 位址」一節。

主控台

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

    前往 Cloud NAT

  2. 按一下 Cloud NAT 閘道。

  3. 按一下「編輯」

  4. 按一下「NAT IP addresses」(網路位址轉譯 IP 位址) 清單,然後選取「Automatic」(自動) 或「Manual」(手動)

  5. 如果選取「手動」,請指定外部 IP 位址

  6. 如要提高可用性,請按一下「新增 IP 位址」,然後新增第二個位址。

  7. 按一下 [儲存]

gcloud

使用 gcloud compute routers nats update 指令

gcloud compute routers nats update NAT_CONFIG \
    --router=NAT_ROUTER \
    --region=REGION \
    --nat-external-ip-pool=IP_ADDRESS_1,IP_ADDRESS_2

更改下列內容:

  • NAT_CONFIG:NAT 設定的名稱。
  • NAT_ROUTER:Cloud Router 的名稱。
  • REGION:要更新的 NAT 區域。如未指定,系統可能會提示您選取區域 (僅限互動模式)。
  • IP_ADDRESS_1:手動外部 IP 位址。
  • IP_ADDRESS_2:另一個手動外部 IP 位址。

使用不同網路層級的外部 IP 位址更新 NAT

如要更新現有的 Cloud NAT 閘道,請變更與閘道相關聯的外部 IP 位址網路層級。

變更自動分配外部 IP 位址的網路層級,更新 NAT

變更與現有 Cloud NAT 閘道相關聯的自動分配外部 IP 位址的網路層級時,Google Cloud 會移除先前分配的 IP 位址,並以指定網路層級的 IP 位址取而代之。先前分配的 IP 位址上的所有現有連線都會立即關閉。

主控台

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

    前往 Cloud NAT

  2. 按一下已自動分配 IP 位址的 Cloud NAT 閘道名稱。

  3. 按一下「編輯」

  4. 在「Network service tier」(網路服務級別) 部分,選擇「Premium」(進階級) 或「Standard」(標準級)。

  5. 按一下 [儲存]

gcloud

使用 gcloud compute routers nats update 指令

gcloud compute routers nats update NAT_CONFIG \
    --router=NAT_ROUTER \
    --region=REGION \
    --auto-allocate-nat-external-ips
    --auto-network-tier=AUTO_NETWORK_TIER

更改下列內容:

  • NAT_CONFIG:NAT 設定的名稱

  • NAT_ROUTER:Cloud Router 的名稱

  • REGION:要建立 NAT 的區域;如未指定,系統可能會提示您選取區域 (僅限互動模式)

  • AUTO_NETWORK_TIER:自動為 Cloud NAT 閘道分配 IP 位址時使用的網路層級。允許的值為 PREMIUMSTANDARD。如未指定,則目前的專案層級預設層級會與 Cloud NAT 閘道建立關聯。

變更手動指派 IP 位址的網路層級,更新 NAT

您可以手動指定不同層級的外部 IP 位址,藉此更新現有的 NAT。您可以指派標準級或進階級的外部 IP 位址,或同時指派兩者,但須符合特定條件。指定其他層級的外部 IP 位址前,請先排空現有 IP 位址,讓現有連線繼續運作,並防止現有 IP 位址建立新連線。

主控台

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

    前往 Cloud NAT

  2. 按一下手動指派 IP 位址的 Cloud NAT 閘道名稱。

  3. 按一下「編輯」

  4. 如要指定與所選層級不同的層級 IP 位址,請刪除所有現有 IP 位址,或為所有現有 IP 位址啟用排空功能。

    如果現有 IP 位址停用排除模式,就無法變更網路層級。

  5. 在「Network service tier」(網路服務級別) 部分,選擇「Premium」(進階級) 或「Standard」(標準級)。

  6. 從有效可用 IP 位址清單中選取外部 IP 位址。

  7. 選用:如要新增更多 IP 位址,請按一下「新增 IP 位址」

  8. 按一下 [儲存]

gcloud

如要更新現有閘道,請手動將現有外部 IP 位址換成來自不同網路層級的新位址,並使用 gcloud compute routers nats update 指令的 --nat-external-ip-pool 標記

如要進一步瞭解如何手動變更現有的外部 IP 位址,請參閱「更新與 NAT 相關聯的外部 IP 位址」。

排空指派給 NAT 的外部 IP 位址

移除手動設定的 IP 位址前,您可以排空該位址,以免現有連線中斷。IP 位址耗盡後,所有現有連線都會繼續運作,直到自然到期為止。您可以查看記錄,瞭解現有連線的狀態。

排除的 IP 位址不會接受任何新的連線。不過,IP 位址仍會與 NAT 設定建立關聯。

NAT 設定中必須至少有一個有效位址,也就是說,您無法耗盡設定中的所有 IP 位址。

如要查看 NAT IP 位址的狀態,請查看公開 NAT 設定

主控台

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

    前往 Cloud NAT

  2. 按一下 Cloud NAT 閘道。

  3. 按一下「編輯」

  4. 在「NAT IP addresses」(NAT IP 位址) 中,將 IP 位址旁的「IP draining」(IP 排空) 值設為「On」(開啟)

  5. 按一下 [儲存]

gcloud

使用 gcloud compute routers nats update 指令

如要排空地址,您必須在同一個指令中,將地址從有效集區移至排空集區。如果您從有效集區中移除 IP 位址,但未在單一指令中將其新增至排空集區,系統就會從服務中刪除該 IP 位址,並立即終止現有連線。

如果將 IP 位址從排空集區移至有效集區,該 IP 位址就會解除排空。如果從兩個集區移除 NAT IP 位址,就會將其從 NAT 設定中中斷連線。

這個指令不會變更 NAT 設定中的其他欄位。

gcloud compute routers nats update NAT_CONFIG \
    --router=NAT_ROUTER \
    --region=REGION \
    --nat-external-ip-pool=IP_ADDRESS_2 \
    --nat-external-drain-ip-pool=IP_ADDRESS_1

其中:

  • --nat-external-ip-pool=IP_ADDRESS_2:更新有效集區,省略 IP_ADDRESS_1
  • --nat-external-drain-ip-pool=IP_ADDRESS_1:將 IP_ADDRESS_1 新增至排空集區

更改下列內容:

  • NAT_CONFIG:NAT 設定的名稱。
  • NAT_ROUTER:Cloud Router 的名稱。
  • REGION:要更新的 NAT 區域。如未指定,系統可能會提示您選取區域 (僅限互動模式)。
  • IP_ADDRESS_2:IP 位址。
  • IP_ADDRESS_1:另一個 IP 位址。

更新端點對應

您可以為閘道啟用或停用「與端點無關的對應」。這項功能預設為停用。將端點獨立對應從啟用切換為停用 (或從停用切換為啟用) 時,現有連線不會中斷。

如果 Cloud NAT 閘道使用 NAT 規則或動態通訊埠分配,您就無法啟用與端點無關的對應關係。

主控台

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

    前往 Cloud NAT

  2. 按一下 Cloud NAT 閘道。

  3. 按一下「編輯」

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

  5. 如要啟用「與端點無關的對應」,請勾選「Enable Endpoint-Independent Mapping」(啟用與端點無關的對應) 核取方塊。如要停用端點獨立對應,請取消勾選核取方塊。

  6. 按一下 [儲存]

gcloud

使用 gcloud compute routers nats update 指令

gcloud compute routers nats update NAT_CONFIG \
    --router=NAT_ROUTER \
    --region=REGION \
    [--enable-endpoint-independent-mapping | --no-enable-endpoint-independent-mapping]

更改下列內容:

  • NAT_CONFIG:NAT 設定的名稱
  • NAT_ROUTER:Cloud Router 的名稱
  • REGION:要更新的 NAT 區域;如未指定,系統可能會提示您選取區域 (僅限互動模式)

更新記錄

如要為現有 Cloud NAT 閘道新增、修改或移除記錄功能,請參閱「設定記錄功能」。

刪除 Public NAT 設定

刪除閘道設定會從 Cloud Router 移除 NAT 設定。刪除閘道設定不會刪除路由器本身。

主控台

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

    前往 Cloud NAT

  2. 找出要刪除的閘道設定,然後選取旁邊的核取方塊。

  3. 在「選單」中,按一下「刪除」

gcloud

gcloud compute routers nats delete NAT_CONFIG \
    --router=ROUTER_NAME \
    --region=REGION

更改下列內容:

  • NAT_CONFIG:NAT 設定的名稱
  • ROUTER_NAME:Cloud Router 的名稱
  • REGION:要刪除 NAT 的區域;如未指定,系統可能會提示您選取區域 (僅限互動模式)。

配額與限制

如需配額和限制資訊,請參閱「配額和限制」。

設定範例

後續步驟