设置和管理 Cloud NAT 规则
本页介绍如何配置 Cloud NAT 规则。在设置 Cloud NAT 规则之前,请先阅读 Cloud NAT 规则概览。
创建 NAT 规则
NAT 规则使用通用表达式语言语法编写。如需详细了解规则表达式语言,请参阅规则表达式语言。
下文中的示例配置步骤满足以下条件:
- 虚拟机必须使用资源名称为
IP_ADDRESS1
的 NAT IP 地址将流量发送到目标198.51.100.10
。 - 虚拟机必须使用资源名称为
IP_ADDRESS2
或IP_ADDRESS3
的 NAT IP 地址才能将流量发送到198.51.100.20/30
。
您可以创建一条 NAT 规则来满足所有的这些条件。
控制台
将 NAT 规则添加到现有 NAT 网关
添加一个用于将流量从 IP_ADDRESS1 发送到 198.51.100.10
的 NAT 规则。
- 在 Google Cloud 控制台中,转到 Cloud NAT 页面。
- 选择您的 NAT 网关。
- 选择修改。
- 在 NAT 规则下,选择添加新规则。
- 在匹配字段中,输入
198.51.100.10
。 - 在 IP 地址菜单中,选择用于 IP_ADDRESS1 的 IP 地址。
- 在规则编号字段中,输入
100
。 - 选择完成。
接下来,添加将流量从 IP_ADDRESS2 或 IP_ADDRESS3 发送到 198.51.100.20/30
的 NAT 规则。
- 在 NAT 规则下,选择添加新规则。
- 在匹配字段中,输入
198.51.100.20/30
。 - 在 IP 地址菜单中,选择用于 IP_ADDRESS2 的 IP 地址。
- 选择添加 IP 地址,然后选择用于 IP_ADDRESS3 的 IP 地址。
- 在规则编号字段中,输入
200
。 - 选择完成。
- 选择保存以保存这两个规则。
gcloud
按照以下部分中的步骤创建规则文件,创建使用规则文件中规则的 NAT 网关,或者将规则添加到现有 NAT 网关。
将 NAT 规则添加到现有 NAT 网关
您可以使用 NAT 规则命令添加新的 NAT 规则。将 NAT_RULE_NUMBER
替换为所需的 NAT 规则编号,并将其他变量替换为与您的配置匹配的信息。
首先,添加一个用于将流量从 IP_ADDRESS1 发送到 198.51.100.10
的 NAT 规则。
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 ...]
接下来,添加将流量从 IP_ADDRESS2 或 IP_ADDRESS3 发送到 198.51.100.20/30
的 NAT 规则。
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
命令行工具使用规则文件。
控制台
- 在 Google Cloud 控制台中,转到 Cloud NAT 页面。
- 选择您的 NAT 网关。
- 选择修改。
- 在自定义规则下,点击要更新的规则。
- 在展开的字段中,您可以修改要更改的任何信息。
- 完成更改后,选择完成。
- 选择保存。
gcloud
使用 NAT 规则文件更新
如需使用 NAT 规则文件更新 NAT 网关,请使用以下命令。将变量替换为与您的配置匹配的信息。
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_ADDRESS3
和 IP_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 规则
控制台
- 在 Google Cloud 控制台中,转到 Cloud NAT 页面。
- 选择您的 NAT 网关。
- 选择修改。
- 在自定义规则下,将指针悬停在要删除的规则上。点击 。
- 点击保存。
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 规则的信息。
- 在 Google Cloud 控制台中,转到 Cloud NAT 页面。
- 选择您的 NAT 网关。
- 查看 NAT 规则。
如需详细了解个别 NAT 规则,您可以执行以下操作:
- 选择修改。
- 在自定义规则标题下,选择一个 NAT 规则。
- 查看详细信息。
- 选择取消,以确保不会保存任何更改。
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 规则。
- 在 Google Cloud 控制台中,转到 Cloud NAT 页面。
- 选择您的 NAT 网关。
- 查看 NAT 规则。
gcloud
要列出 NAT 网关中的所有 NAT 规则,请使用以下命令。此命令还会显示 NAT 规则(包括默认规则)中存在的所有 NAT IP 地址。将变量替换为与您的配置匹配的信息。
gcloud compute routers nats rules list \ --router=ROUTER_NAME \ --nat=NAT_NAME \ [--region=REGION] [GLOBAL-FLAG ...]