設定及管理 Cloud NAT 規則

本頁面說明如何設定 Cloud NAT 規則。設定 Cloud NAT 規則前,請參閱 Cloud NAT 規則總覽

建立網路位址轉譯 (NAT) 規則

NAT 規則是使用一般運算語言語法編寫。如要進一步瞭解規則運算式語言,請參閱「規則運算式語言」。

下列設定步驟範例可滿足下列條件:

  • VM 必須使用 NAT IP 位址和資源名稱 IP_ADDRESS1,才能將流量傳送至目的地 198.51.100.10
  • VM 必須使用 NAT IP 位址和資源名稱 IP_ADDRESS2IP_ADDRESS3,才能將流量傳送至 198.51.100.20/30

您可以建立一個 NAT 規則來滿足這些條件。

控制台

在現有的網路位址轉譯 (NAT) 閘道中新增 NAT 規則

新增 NAT 規則,將流量從 IP_ADDRESS1 傳送至 198.51.100.10

  1. 在 Google Cloud 控制台中,前往「Cloud NAT」頁面。

    前往 Cloud NAT

  2. 選取 NAT 閘道。
  3. 選取 [編輯]
  4. 在「NAT 規則」下方,選取「新增規則」
  5. 在「Match」欄位中輸入 198.51.100.10
  6. 在「IP address」選單中,選取您用於 IP_ADDRESS1 的 IP 位址。
  7. 在「Rule number」(規則編號) 欄位中輸入 100
  8. 選取「完成」

新增 NAT 規則,將流量從 IP_ADDRESS2IP_ADDRESS3 傳送至 198.51.100.20/30

  1. 在「NAT 規則」下方,選取「新增規則」
  2. 在「Match」欄位中輸入 198.51.100.20/30
  3. 在「IP address」選單中,選取您用於 IP_ADDRESS2 的 IP 位址。
  4. 選取「Add IP address」(新增 IP 位址),然後選取您用於 IP_ADDRESS3 的 IP 位址。
  5. 在「Rule number」(規則編號) 欄位中輸入 200
  6. 選取「完成」
  7. 選取「儲存」即可儲存兩個規則。

gcloud

您可以按照下列各節中的步驟建立規則檔案、建立使用規則檔案中的規則的 NAT 閘道,或將規則新增至現有的 NAT 閘道。

在現有的網路位址轉譯 (NAT) 閘道中新增 NAT 規則

您可以使用 NAT 規則指令新增 NAT 規則。將 NAT_RULE_NUMBER 替換為所需的 NAT 規則編號,並將其他變數替換為符合您設定的資訊。

首先,新增 NAT 規則,將流量從 IP_ADDRESS1 傳送至 198.51.100.10

gcloud compute routers nats rules create NAT_RULE_NUMBER \
    --router=ROUTER_NAME \
    --nat=NAT_NAME \
    --match='destination.ip == "198.51.100.10"' \
    --source-nat-active-ips=[IP_ADDRESS1] \
    [--region=REGION] [GLOBAL-FLAG ...]

接著,新增 NAT 規則,將流量從 IP_ADDRESS2IP_ADDRESS3 傳送至 198.51.100.20/30

gcloud compute routers nats rules create NAT_RULE_NUMBER \
    --router=ROUTER_NAME \
    --nat=NAT_NAME \
    --match='inIpRange(destination.ip, "198.51.100.20/30")' \
    --source-nat-active-ips=[IP_ADDRESS2],[IP_ADDRESS3] \
    [--region=REGION] [GLOBAL-FLAG ...]

建立規則檔案

以下程式碼範例為規則檔案範例。您可以修改這個規則檔案,以符合您的用途。如果您已有規則檔案,則可略過這個步驟。

rules:
 - ruleNumber: 100
   match: destination.ip == '198.51.100.10'
   action:
     sourceNatActiveIps:
     -  /projects/PROJECT ID/regions/REGION/addresses/IP_ADDRESS1
 - ruleNumber: 200
   match: inIpRange(destination.ip, '198.51.100.20/30')
   action:
     sourceNatActiveIps:
     -  /projects/PROJECT ID/regions/REGION/addresses/IP_ADDRESS2
     -  /projects/PROJECT ID/regions/REGION/addresses/IP_ADDRESS3

使用 NAT 規則檔案建立 NAT 閘道

下列指令會建立 NAT 閘道,並使用 NAT 規則檔案中的規則進行設定。如果您已設定 NAT 閘道,請參閱「在現有 NAT 閘道中新增 NAT 規則」。請將變數替換為符合您設定的資訊。

gcloud compute routers nats create NAT_NAME \
    --router=ROUTER_NAME \
    --nat-external-ip-pool=[IP_ADDRESS4],[IP_ADDRESS5] \
    --nat-all-subnet-ip-ranges \
    --rules=PATH_TO_NAT_RULE_FILE \
    [--region=REGION] [GLOBAL-FLAG ...]

更新 NAT 規則

如要更新 NAT 規則,請按照下列各節中的步驟操作。您只能使用 gcloud 指令列工具的規則檔案。

控制台

  1. 在 Google Cloud 控制台中,前往「Cloud NAT」頁面。

    前往 Cloud NAT

  2. 選取 NAT 閘道。
  3. 選取 [編輯]
  4. 在「自訂規則」下方,按一下要更新的規則。
  5. 在展開的欄位中,您可以修改任何要變更的資訊。
  6. 完成變更後,選取「完成」
  7. 選取「儲存」

gcloud

使用 NAT 規則檔案更新

如要使用 NAT 規則檔案更新 NAT 閘道,請使用 gcloud compute routers nats update 指令

請使用符合您設定的資訊取代變數。

gcloud compute routers nats update NAT_NAME \
    --router=ROUTER_NAME \
    --rules=PATH_TO_NAT_RULE_FILE \
    [--region=REGION] [GLOBAL-FLAG ...]

以下程式碼範例為規則檔案範例。請注意 sourceNatDrainIps 動作,這會防止使用 IP_ADDRESS1 連線至目的地,但會保留現有連線。

rules:
 - ruleNumber: 100
   match: destination.ip == '198.51.100.10'
   action:
     sourceNatActiveIps:
     -  /projects/PROJECT ID/regions/REGION/addresses/IP_ADDRESS2
     sourceNatDrainIps:
     -  /projects/PROJECT ID/regions/REGION/addresses/IP_ADDRESS1

使用 NAT 規則指令更新

如要更新單一 NAT 規則,請使用下列指令。將 NAT_RULE_NUMBER 替換為所需的 NAT 規則編號,並將其他變數替換為符合您設定的資訊。請注意 source-nat-drain-ips 選項,這個選項會禁止使用 IP_ADDRESS3IP_ADDRESS4 建立至目的地的連線,但會保留現有連線。

gcloud compute routers nats rules update NAT_RULE_NUMBER \
    --router=ROUTER_NAME \
    --nat=NAT_NAME \
    --match=Match conditions (expressed in CEL) \
    --source-nat-active-ips=[IP_ADDRESS1],[IP_ADDRESS2] \
    --source-nat-drain-ips=[IP_ADDRESS3],[IP_ADDRESS4] \
    [--region=REGION] [GLOBAL-FLAG ...]

刪除 NAT 規則

控制台

  1. 在 Google Cloud 控制台中,前往「Cloud NAT」頁面。

    前往 Cloud NAT

  2. 選取 NAT 閘道。
  3. 選取 [編輯]
  4. 在「自訂規則」下方,將游標懸停在要刪除的規則上。按一下
  5. 按一下 [儲存]

gcloud

如要從閘道移除 NAT 規則,您可以直接從閘道移除,也可以從規則檔案中移除並更新閘道。

使用 NAT 規則檔案刪除

您可以直接從規則檔案中移除 NAT 規則,然後更新 NAT 閘道。為了方便您操作,以下再次提供更新 NAT 閘道的相關指令。

請使用符合您設定的資訊取代變數。

gcloud compute routers nats update NAT_NAME \
    --router=ROUTER_NAME \
    --rules=PATH_TO_NAT_RULE_FILE \
    [--region=REGION] [GLOBAL-FLAG ...]

使用 NAT 規則指令刪除

或者,您也可以使用 NAT 規則 delete 指令,從閘道中移除 NAT 規則。將 NAT_RULE_NUMBER 替換為所需的 NAT 規則編號,並將其他變數替換為符合您設定的資訊。

gcloud compute routers nats rules delete NAT_RULE_NUMBER \
    --router=ROUTER_NAME \
    --nat=NAT_NAME \
    [--region=REGION] [GLOBAL-FLAG ...]

說明 NAT 規則

控制台

您可以在 Cloud NAT 頁面中查看 NAT 規則的相關資訊。

  1. 在 Google Cloud 控制台中,前往「Cloud NAT」頁面。

    前往 Cloud NAT

  2. 選取 NAT 閘道。
  3. 查看 NAT 規則。

如需個別 NAT 規則的其他資訊,請按照下列步驟操作:

  1. 選取 [編輯]
  2. 在「自訂規則」標題下方,選取 NAT 規則。
  3. 查看其他資訊。
  4. 選取「取消」,確保不會儲存任何變更。

gcloud

如要描述 NAT 規則,請使用下列指令。將 NAT_RULE_NUMBER 替換為 NAT 規則編號,並將其他變數替換為符合您設定的資訊。

gcloud compute routers nats rules describe NAT_RULE_NUMBER \
    --router=ROUTER_NAME \
    --nat=NAT_NAME \
    [--region=REGION] [GLOBAL-FLAG ...]

列出 NAT 閘道中的所有 NAT 規則

控制台

您可以在 Cloud NAT 頁面上查看 NAT 規則。

  1. 在 Google Cloud 控制台中,前往「Cloud NAT」頁面。

    前往 Cloud NAT

  2. 選取 NAT 閘道。
  3. 查看 NAT 規則。

gcloud

如要列出 NAT 閘道中的所有 NAT 規則,請使用下列指令。這也會顯示 NAT 規則中的所有 NAT IP 位址,包括預設規則。請使用符合您設定的資訊取代變數。

gcloud compute routers nats rules list \
    --router=ROUTER_NAME \
    --nat=NAT_NAME \
    [--region=REGION] [GLOBAL-FLAG ...]