设置和管理 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 网关配置为将 IPv6 转换为 IPv4(预览版),请改用 gcloud beta compute routers nats rules create
或 gcloud beta compute routers nats create
命令。
将 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
命令。如果您的网关配置为将 IPv6 转换为 IPv4(预览版),请改用 gcloud beta 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_ADDRESS3
和 IP_ADDRESS4
阻止与目的地的新连接,但会保留现有连接。
如果您的 NAT 网关配置为将 IPv6 转换为 IPv4(预览版),请改用 gcloud beta compute routers nats rules update
命令。
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 网关的命令。如果您的网关配置为将 IPv6 转换为 IPv4(预览版),请改用 gcloud beta compute routers nats update
命令。
将变量替换为与您的配置匹配的信息。
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 规则编号,并将其他变量替换为与您的配置匹配的信息。
如果您的网关配置为将 IPv6 转换为 IPv4(预览版),请改用 gcloud beta compute routers nats rules delete
命令。
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 ...]