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

本頁說明如何在 Cloud NAT 中設定私有對私有網路位址轉譯 (NAT)。

事前準備

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

查看 Private NAT 規格

請參閱下列規格和規定:

  • 如需一般規格,請參閱「私人 NAT」。
  • 如要瞭解 Network Connectivity Center 中樞輪輻 (包括虛擬私有雲輪輻和混合式輪輻) 之間的流量,請參閱「Network Connectivity Center 輪輻適用的 Private NAT」。
  • 如要瞭解透過 Cloud Interconnect 或 Cloud VPN 在虛擬私有雲 (VPC) 網路和非Google Cloud 網路之間傳輸的流量,請參閱混合式 NAT

取得 IAM 權限

Compute Network Admin 角色 (roles/compute.networkAdmin) 可授權您在 Cloud Router 上建立 NAT 閘道、預留及指派 NAT IP 位址,以及指定流量應透過 NAT 閘道進行網路位址轉譯的子網路。

設定 Google Cloud

開始之前,請先在 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. Install the Google Cloud CLI.

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

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

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  10. Enable the Compute Engine API.

    Enable the API

  11. Install the Google Cloud CLI.

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

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

    gcloud init
  14. 這個頁面的 Google Cloud CLI 指令假設您已在發出指令之前設定專案 ID。

    1. 您可以使用下列指令設定專案 ID:

      gcloud config set project PROJECT_ID
      
    2. 您也可以查看已經設定的專案 ID:

      gcloud config list --format='text(core.project)'
      

    建立用途為 PRIVATE_NAT 的 NAT 子網路

    設定私人 NAT 前,請先建立用途為 PRIVATE_NAT 的 NAT 子網路。NAT 子網路必須與您要建立 Private NAT 閘道的地區相同。私有 NAT 閘道會使用這個子網路的 IP 位址範圍執行 NAT。請確保這個子網路不會與任何已連線網路中的現有子網路重疊。您無法在這個子網路中建立任何資源。 這個子網路僅供私人 NAT 使用。

    主控台

    1. 在 Google Cloud 控制台中,前往「VPC networks」(虛擬私有雲網路) 頁面。

      前往「VPC networks」(虛擬私有雲網路)

    2. 如要顯示虛擬私有雲網路詳細資料頁面,請按一下虛擬私有雲網路的名稱。

    3. 按一下「子網路」分頁標籤。

    4. 按一下 [Add subnet] (新增子網路)。在「Add a subnet」(新增子網路) 對話方塊中,執行下列操作:

      1. 提供子網路的名稱。
      2. 請選取區域。
      3. 在「用途」部分,選取「私人 NAT」
      4. 輸入 IP 位址範圍,也就是子網路的主要 IPv4 範圍。

        如果選取的範圍不是 RFC 1918 位址,請確認該範圍與現有設定沒有衝突。如要進一步瞭解有效的 IPv4 子網路範圍,請參閱「IPv4 子網路範圍」。

    5. 按一下「新增」

    gcloud

    使用 gcloud compute networks subnet create 指令建立子網路。

      gcloud compute networks subnets create NAT_SUBNET \
          --network=NETWORK \
          --region=REGION \
          --range=IP_RANGE \
          --purpose=PRIVATE_NAT
    

    更改下列內容:

    • NAT_SUBNET:要建立的 Private NAT 子網路範圍名稱。
    • NETWORK:子網路所屬的網路。
    • REGION:要建立子網路的區域。如未指定,系統可能會提示您選取區域 (僅限互動模式)。
    • IP_RANGE:以 CIDR 格式分配給這個子網路的 IP 空間。請確認 IP_RANGE 考量到每個 VM 需要的通訊埠大小是兩倍。

    設定 Private NAT

    如要設定 Private NAT,請在來源 VPC 網路中建立 Private NAT 閘道。每個閘道都會與單一 VPC 網路、區域和 Cloud Router 建立關聯。

    設定 Private NAT 時,您可以啟用下列一或多項功能:

    • Network Connectivity Center 輪輻適用的 Private NAT。為下列項目之間的流量啟用 NAT:

      • 來源虛擬私有雲網路和目的地虛擬私有雲網路位於同一個 Network Connectivity Center 中樞。兩個網路都必須設定為虛擬私有雲 Spoke。
      • 來源虛擬私有雲網路,已在 Network Connectivity Center 中樞設定為虛擬私有雲輪輻;目的地為地端部署或其他雲端服務供應商網路,並透過混合式輪輻連線至中樞。

      如要在與 Private NAT 相同的虛擬私有雲輪輻中使用 Private Service Connect 傳播連線,請先參閱Private Service Connect 傳播連線互動,再設定 Private NAT。

    • 混合式 NAT:為來源 VPC 網路與目的地地端部署網路或其他雲端服務供應商網路之間的流量啟用 NAT。網路必須透過 Cloud Interconnect 或 Cloud VPN 連線。

    建立 Private NAT 閘道

    在要設定 NAT 的來源 VPC 網路中,建立 Private NAT 閘道。

    主控台

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

      前往 Cloud NAT

    2. 按一下「開始使用」或「建立 Cloud NAT 閘道」

    3. 輸入閘道名稱。

    4. 在「NAT type」(NAT 類型) 中,選取「Private」(私人)

    5. 選取 NAT 閘道的虛擬私有雲網路。

    6. 選取 NAT 閘道的區域。

    7. 在該區域中選取或建立 Cloud Router。

    8. 確認已選取「VM 執行個體」做為來源端點類型。

    9. 在「來源」清單中,選取「自訂」

    10. 選取要執行 NAT 的子網路。

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

    12. 點選「新增規則」

    13. 在「規則編號」欄位中,輸入介於 065000 的任意值。

    14. 在「比對」部分,選取下列其中一個選項:

      • 如要啟用混合式 NAT,請選取「混合式連線路徑」
      • 如要為 Network Connectivity Center 輪輻啟用 Private NAT,請選取「Network Connectivity Center 中樞」
      • 如要同時啟用這兩個選項,請選取「混合式連線路徑」和「Network Connectivity Center 中樞」
    15. 選取或建立私人 NAT 子網路範圍

    16. 按一下 [完成]

    17. 選用:在「進階設定」部分中,調整下列任一設定:

      • 是否要設定記錄功能。系統預設會選取「不記錄」
      • 是否要變更 Cloud NAT 分配通訊埠的方式。系統會預設選取「啟用動態通訊埠分配功能」。如要設定靜態通訊埠分配功能,請取消勾選「啟用動態通訊埠分配功能」,然後指定「每個 VM 執行個體的最低通訊埠數量」。預設值為 64
      • 是否要更新通訊協定連線的 NAT 逾時。如要瞭解這些逾時和預設值,請參閱「NAT 逾時」。
    18. 點選「建立」

    gcloud

    1. 在要設定 NAT 的虛擬私有雲網路中建立 Cloud Router。

      使用 gcloud compute routers create 指令

      gcloud compute routers create ROUTER_NAME \
          --network=NETWORK --region=REGION
      

      更改下列內容:

      • ROUTER_NAME:Cloud Router 的名稱。
      • NETWORK:要建立 Cloud Router 的 VPC 網路。
      • REGION:要建立 Cloud Router 的區域。
    2. 建立 Private NAT 閘道,並指定要設定 NAT 的來源虛擬私有雲網路的一或多個子網路。

      使用 gcloud compute routers nats create 指令,並將 --type 旗標設為 PRIVATE

      gcloud compute routers nats create NAT_CONFIG \
          --router=ROUTER_NAME --type=PRIVATE --region=REGION \
          --nat-custom-subnet-ip-ranges=SUBNETWORK:ALL|[SUBNETWORK_1:ALL,SUBNETWORK_2:ALL,...] | \
          [--nat-all-subnet-ip-ranges]
      

      更改下列內容:

      • NAT_CONFIG:您要建立的 Private NAT 設定名稱。
      • ROUTER_NAME:要搭配這個閘道使用的 Cloud Router 名稱。這是您在上一個步驟中建立的 Cloud Router,不得供任何其他資源使用。
      • SUBNETWORK:要使用 NAT 的子網路名稱或子網路清單。

        您也可以指定以半形逗號分隔的子網路清單,例如 SUBNETWORK_1SUBNETWORK_2。Private NAT 一律會對指定子網路或子網路清單的所有子網路 IP 範圍執行 NAT。

      根據預設,Private NAT 會使用動態通訊埠分配功能。如要建立具有靜態連接埠分配的 Private NAT 閘道,請執行上述指令並加上 --no-enable-dynamic-port-allocation 標記:

      gcloud compute routers nats create NAT_CONFIG \
          --router=ROUTER_NAME --type=PRIVATE --region=REGION \
          --nat-custom-subnet-ip-ranges=SUBNETWORK:ALL|[SUBNETWORK_1:ALL,SUBNETWORK_2:ALL,...] | \
          [--nat-all-subnet-ip-ranges]
          --no-enable-dynamic-port-allocation \
          [--min-ports-per-vm=VALUE]
      

      VALUE 替換為要為每個 VM 指派的通訊埠數量下限。如未指定,Google Cloud 會指派預設值 64

    3. 建立 NAT 規則,根據您設定的 NAT 類型比對流量。

      使用 gcloud compute routers nats rules create 指令,並將 --match 旗標設為下列其中一個選項:

      • nexthop.is_hybrid:將來源 VPC 網路的外送流量轉送至透過 Cloud Interconnect 或 Cloud VPN 連線的內部部署或其他雲端服務供應商網路。 Google Cloud
      • nexthop.hub:將來源虛擬私有雲輪輻的外送流量,轉譯至與來源虛擬私有雲輪輻連結至相同 Network Connectivity Center 中樞的任何虛擬私有雲或混合式輪輻。
      • nexthop.is_hybrid || nexthop.hub:設定兩種 Private NAT。

      如要為混合式 NAT 建立 NAT 規則,請執行下列指令:

      gcloud compute routers nats rules create NAT_RULE_NUMBER \
          --router=ROUTER_NAME --region=REGION \
          --nat=NAT_CONFIG \
          --match='nexthop.is_hybrid' \
          --source-nat-active-ranges=NAT_SUBNET
      

      如要為 Network Connectivity Center 輪輻建立 Private NAT 的 NAT 規則,請執行下列指令:

      gcloud compute routers nats rules create NAT_RULE_NUMBER \
          --router=ROUTER_NAME --region=REGION \
          --nat=NAT_CONFIG \
          --match='nexthop.hub == "//networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/hubs/HUB"' \
          --source-nat-active-ranges=NAT_SUBNET
      

      如要為 Hybrid NAT 和 Network Connectivity Center 輪輻適用的 Private NAT 建立 NAT 規則,請執行下列指令:

      gcloud compute routers nats rules create NAT_RULE_NUMBER \
          --router=ROUTER_NAME --region=REGION \
          --nat=NAT_CONFIG \
          --match='nexthop.is_hybrid || nexthop.hub == "//networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/hubs/HUB"' \
          --source-nat-active-ranges=NAT_SUBNET
      

      更改下列內容:

      • NAT_RULE_NUMBER:唯一識別 NAT 規則的規則編號,範圍從 065000
      • ROUTER_NAME:先前建立的 Cloud Router 名稱。
      • REGION:Cloud Router 的區域。
      • NAT_CONFIG:您先前建立的 Private NAT 設定名稱。
      • PROJECT_ID:Network Connectivity Center 中樞的 Google Cloud 專案。
      • HUB:Network Connectivity Center 中樞的名稱。
      • NAT_SUBNET:您先前建立的私人 NAT 子網路名稱。您也可以指定以半形逗號分隔的子網路清單。

    查看 Private NAT 設定

    主控台

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

      前往 Cloud NAT

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

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

    gcloud

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

    • 查看 Private 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
      
    • 查看 Private NAT 閘道的狀態。

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

    更新 Private NAT 設定

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

    變更與私人 NAT 相關聯的子網路

    主控台

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

      前往 Cloud NAT

    2. 按一下 NAT 閘道。

    3. 按一下「編輯」

    4. 在「Cloud NAT mapping」(Cloud NAT 對應) 的「Source」(來源) 清單中,選取「Custom」(自訂)

    5. 從可用子網路清單中選取新的子網路。

    6. 如要指定其他範圍,請按一下「新增子網路和 IP 範圍」,然後選取其他子網路。

    7. 按一下 [儲存]

    gcloud

    gcloud compute routers nats update NAT_CONFIG \
        --router=ROUTER_NAME \
        --region=REGION \
        --nat-custom-subnet-ip-ranges=SUBNETWORK:ALL|[SUBNETWORK_1:ALL,SUBNETWORK_2:ALL,..]
    

    更改下列內容:

    • NAT_CONFIG:要更新的 Private NAT 設定名稱。
    • ROUTER_NAME:要搭配這個閘道使用的路由器名稱。
    • SUBNETWORK:要使用的子網路名稱。

    刪除與 Private NAT 相關聯的子網路

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

    主控台

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

      前往 Cloud NAT

    2. 按一下 NAT 閘道。

    3. 按一下「編輯」

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

    5. 按一下 [儲存]

    在私人 NAT 設定中新增 NAT 子網路

    如要對流量執行 NAT,私人 NAT 設定會使用目的為 PRIVATE_NAT 的子網路中的 NAT IP 位址。如果 Private NAT 設定需要的 NAT IP 位址數量超過可用數量,您可以將更多用途為 PRIVATE_NAT 的子網路新增至設定。

    主控台

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

      前往 Cloud NAT

    2. 按一下 NAT 閘道。

    3. 按一下「編輯」

    4. 展開現有規則。

    5. 按一下「新增子網路範圍」

    6. 選取或建立新的 NAT 子網路範圍,然後按一下「完成」

    7. 按一下 [儲存]

    gcloud

    gcloud compute routers nats rules update NAT_RULE_NUMBER \
        --nat=NAT_CONFIG \
        --router=ROUTER_NAME \
        --region=REGION \
        --source-nat-active-ranges=NAT_SUBNET_1, NAT_SUBNET_2 ...
    

    更改下列內容:

    • NAT_RULE_NUMBER:用來更新規則的專屬數字 ID。
    • NAT_CONFIG:要更新規則的 Private NAT 設定名稱。
    • ROUTER_NAME:要搭配這個閘道使用的路由器名稱。
    • NAT_SUBNET:要新增至現有 NAT 設定的 Private NAT 子網路名稱。

    刪除 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 的區域;如未指定,系統可能會提示您選取區域 (僅限互動模式)。

    後續步驟