設定及管理 Cloud NAT 規則

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

建立 NAT 規則

如要建立 NAT 規則,Cloud NAT 會使用一般運算語言 (CEL),如「規則運算式語言」一文所述。如需可在 NAT 規則中使用的運算式範例,請參閱運算式範例

如要建立 NAT 規則,請務必停用 NAT 閘道的與端點無關的對應

建立以來源為準的規則

本節的步驟說明如何為下列情況建立以來源為準的 NAT 規則:

  1. 來自來源 IP 範圍 10.10.1.0/24 的封包必須使用 IP_ADDRESS_1
  2. 來自來源 IP 範圍 10.10.2.0/24 的封包必須使用 IP_ADDRESS_2
  3. 所有其他封包都必須使用 IP_ADDRESS_3

針對條件 1 和 2,您需要建立兩項 NAT 規則。來源地址相符的預設 NAT 規則會滿足條件 3。IP_ADDRESS_1IP_ADDRESS_2IP_ADDRESS_3 是您要用於 NAT 的外部 IP 位址。

控制台

在現有 NAT 閘道中新增 NAT 規則

  1. 新增 NAT 規則,比對來自 10.10.1.0/24 的流量,並將來源 IP 轉換為 IP_ADDRESS_1

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

      前往 Cloud NAT

    2. 按一下 NAT 閘道。

    3. 按一下 [編輯]

    4. 在「Cloud NAT IP addresses」(Cloud NAT IP 位址) 中,選取「Manual」(手動)

    5. 在「Cloud NAT Rules」(Cloud NAT 規則) 區段中,按一下「Add a rule」(新增規則)

    6. 在「規則優先順序」欄位中,輸入 0 (最高優先順序) 到 65000 (最低優先順序) 之間的數字。例如:100

    7. 在「比對 IP 範圍」部分,選取「來源」

    8. 在「Source IP ranges」(來源 IP 範圍) 欄位中輸入 10.10.1.0/24

    9. 在「IP addresses」(IP 位址) 區段中,選取要用於 IP_ADDRESS_1 的 IP 位址。

    10. 按一下 [完成]

  2. 新增 NAT 規則,比對來自 10.10.2.0/24 的流量,並將其轉換為 IP_ADDRESS_2

    1. 在「Cloud NAT Rules」(Cloud NAT 規則) 區段中,按一下「Add a rule」(新增規則)
    2. 在「規則優先順序」欄位中,輸入 0 (最高優先順序) 到 65000 (最低優先順序) 之間的數字。例如:200
    3. 在「比對 IP 範圍」部分,選取「來源」
    4. 在「Source IP ranges」(來源 IP 範圍) 欄位中輸入 10.10.2.0/24
    5. 在「IP addresses」(IP 位址) 區段中,選取要用於 IP_ADDRESS_2 的 IP 位址。
    6. 按一下 [完成]
    7. 按一下「儲存」即可儲存這兩項規則。

gcloud

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

在現有 NAT 閘道中新增 NAT 規則

您可以使用 gcloud beta compute routers nats rules create 指令新增 NAT 規則。

  1. 新增使用 IP_ADDRESS_1 的 NAT 規則,適用於來自 10.10.1.0/24 的流量:

    gcloud beta compute routers nats rules create NAT_RULE_PRIORITY \
        --router=NAT_ROUTER \
        --region=REGION \
        --nat=NAT_CONFIG \
        --match="inIpRange(source.ip, '10.10.1.0/24')" \
        --source-nat-active-ips=IP_ADDRESS_1
    

    更改下列內容:

    • NAT_RULE_PRIORITY:唯一識別 NAT 規則的規則編號,從 0 (最高優先順序) 到 65000 (最低優先順序),例如 100
    • NAT_ROUTER:您用於 NAT 閘道的 Cloud Router 名稱
    • REGION:NAT 閘道的區域
    • NAT_CONFIG:NAT 設定的名稱
    • IP_ADDRESS_1:您要用於符合規則封包的手動分配外部 IP 位址
  2. 新增使用 IP_ADDRESS_2 的 NAT 規則,適用於來自 10.10.2.0/24 的流量:

    gcloud beta compute routers nats rules create NAT_RULE_PRIORITY \
        --router=NAT_ROUTER \
        --region=REGION \
        --nat=NAT_CONFIG \
        --match="inIpRange(source.ip, '10.10.2.0/24')" \
        --source-nat-active-ips=IP_ADDRESS_2
    

    更改下列內容:

    • NAT_RULE_PRIORITY:唯一識別 NAT 規則的規則編號,從 0 (最高優先順序) 到 65000 (最低優先順序),例如 200
    • NAT_ROUTER:您用於 NAT 閘道的 Cloud Router 名稱
    • REGION:NAT 閘道的區域
    • NAT_CONFIG:NAT 設定的名稱
    • IP_ADDRESS_2:要用於符合規則封包的手動分配外部 IP 位址

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

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

建立規則檔案
rules:
 - ruleNumber: 100
   match: inIpRange(source.ip, '10.10.1.0/24')
   action:
     sourceNatActiveIps:
     -  /projects/PROJECT_ID/regions/REGION/addresses/IP_ADDRESS_1
 - ruleNumber: 200
   match: inIpRange(source.ip, '10.10.2.0/24')
   action:
     sourceNatActiveIps:
     -  /projects/PROJECT_ID/regions/REGION/addresses/IP_ADDRESS_2

在上述範例中,IP_ADDRESS_1IP_ADDRESS_2 是您要用於符合規則封包的手動分配外部 IP 位址。請針對每個 IP 位址替換下列項目:

  • PROJECT_ID:IP 位址的專案
  • REGION:保留 IP 位址的區域
使用 NAT 規則檔案建立 NAT 閘道

下列指令會建立 NAT 閘道,並使用 NAT 規則檔案中的規則進行設定。如果已設定 NAT 閘道,請參閱「將 NAT 規則新增至現有 NAT 閘道」。

gcloud beta compute routers nats create NAT_CONFIG \
    --router=NAT_ROUTER \
    --region=REGION \
    --nat-all-subnet-ip-ranges \
    --nat-external-ip-pool=IP_ADDRESS_3,[IP_ADDRESS_4] \
    --rules=PATH_TO_NAT_RULE_FILE

更改下列內容:

  • NAT_CONFIG:NAT 設定的名稱
  • NAT_ROUTER:您要用於 NAT 閘道的 Cloud Router 名稱
  • REGION:要建立 Cloud NAT 閘道的區域
  • IP_ADDRESS_3IP_ADDRESS_4:您要用於預設 NAT 規則的外部 IP 位址
  • PATH_TO_NAT_RULE_FILE:NAT 規則檔案的路徑

建立以目的地為準的規則

下列設定步驟範例符合下列條件:

  • 目的地地址為 198.51.100.10 的封包必須使用網路位址轉譯 (NAT) IP 位址 IP_ADDRESS_1
  • 目標位址為 198.51.100.20/30 的封包必須使用 NAT IP 位址 IP_ADDRESS_2IP_ADDRESS_3

您可以建立一項 NAT 規則,滿足上述各項條件。

控制台

在現有 NAT 閘道中新增 NAT 規則

  1. 新增使用 IP_ADDRESS_1 將流量傳送至 198.51.100.10 的 NAT 規則。

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

      前往 Cloud NAT

    2. 按一下 [編輯]

    3. 在「Cloud NAT IP addresses」(Cloud NAT IP 位址) 中,選取「Manual」(手動)

    4. 在「Cloud NAT Rules」(Cloud NAT 規則) 區段中,按一下「Add a rule」(新增規則)

    5. 在「規則優先順序」欄位中,輸入 0 (最高優先順序) 到 65000 (最低優先順序) 之間的數字。例如:100

    6. 在「比對 IP 範圍」部分,選取「目的地」

    7. 在「Destination IP ranges」(目的地 IP 範圍) 欄位中,輸入 198.51.100.10

    8. 在「IP addresses」(IP 位址) 區段中,選取要用於 IP_ADDRESS_1 的 IP 位址。

    9. 按一下 [完成]

  2. 新增使用 IP_ADDRESS_2IP_ADDRESS_3 將流量傳送至 198.51.100.20/30 的 NAT 規則。

    1. 在「Cloud NAT Rules」(Cloud NAT 規則) 區段中,按一下「Add a rule」(新增規則)
    2. 在「規則優先順序」欄位中,輸入 0 (最高優先順序) 到 65000 (最低優先順序) 之間的數字。例如:200
    3. 在「比對 IP 範圍」部分,選取「目的地」
    4. 在「Destination IP ranges」(目的地 IP 範圍) 欄位中,輸入 198.51.100.20/30
    5. 在「IP addresses」(IP 位址) 區段中,選取要用於 IP_ADDRESS_2 的 IP 位址。
    6. 按一下「新增 IP 位址」,然後選取要用於 IP_ADDRESS_3 的 IP 位址。
    7. 按一下 [完成]
    8. 按一下「儲存」即可儲存這兩項規則。

gcloud

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

在現有 NAT 閘道中新增 NAT 規則

您可以使用 NAT 規則指令新增 NAT 規則。將 NAT_RULE_PRIORITY 替換為要指派給規則的 NAT 規則優先順序 (從 0 (最高) 到 65000 (最低)),並將其他變數替換為符合您設定的資訊。

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

gcloud compute routers nats rules create NAT_RULE_PRIORITY \
    --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_PRIORITY \
    --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. 前往 Cloud de Confiance 控制台的 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_PRIORITY 替換為 NAT 規則優先順序編號,並將其他變數替換為符合您設定的資訊。請注意 source-nat-drain-ips 選項,這個選項會禁止使用 IP_ADDRESS3IP_ADDRESS4 建立與目的地的連線,但會保留現有連線。

gcloud compute routers nats rules update NAT_RULE_PRIORITY \
    --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. 前往 Cloud de Confiance 控制台的 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_PRIORITY 替換為 NAT 規則優先順序編號,並將其他變數替換為符合您設定的資訊。

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

描述 NAT 規則

控制台

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

  1. 前往 Cloud de Confiance 控制台的 Cloud NAT 頁面。

    前往 Cloud NAT

  2. 按一下 NAT 閘道。
  3. 查看 NAT 規則。

如要進一步瞭解個別 NAT 規則,請執行下列操作:

  1. 按一下 [編輯]
  2. 在「自訂規則」標題下方,選取 NAT 規則。
  3. 查看其他資訊。
  4. 按一下「取消」

gcloud

如要說明 NAT 規則,請使用下列指令。將 NAT_RULE_PRIORITY 替換為 NAT 規則優先順序值,並將其他變數替換為符合您設定的資訊。

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

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

控制台

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

  1. 前往 Cloud de Confiance 控制台的 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 ...]