使用 Cloud NAT 设置和管理网络地址转换。
本页介绍如何在 Cloud NAT 中配置专用到专用网络地址转换 (NAT)。
准备工作
在设置 Cloud NAT 之前,请完成以下任务。
查看 Private NAT 规范
请参阅以下规范和要求:
- 如需了解常规规范,请参阅 Private NAT。
- 如需了解 Network Connectivity Center 中心 spoke(包括 VPC spoke 和混合 spoke)之间的流量,请参阅用于 Network Connectivity Center spoke 的 Private NAT。
- 如需了解通过 Cloud Interconnect 或 Cloud VPN 在虚拟私有云 (VPC) 网络与非 Google Cloud 网络之间传输的流量,请参阅 Hybrid NAT。
获取 IAM 权限
通过 Compute Network Admin 角色 (roles/compute.networkAdmin
),您有权在 Cloud Router 路由器上创建 NAT 网关、预留和分配 NAT IP 地址,以及指定哪些子网的流量应该使用 NAT 网关的网络地址转换。
设置 Google Cloud
开始之前,请先在 Google Cloud 中设置以下内容。
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
此页面上的 Google Cloud CLI 说明假定您在发出命令前已经设置项目 ID。
您可以使用以下命令设置项目 ID:
gcloud config set project PROJECT_ID
您还可以查看已设置的项目 ID:
gcloud config list --format='text(core.project)'
创建用途为 PRIVATE_NAT 的 NAT 子网
在配置 Private NAT 之前,您需要创建用途为 PRIVATE_NAT
的 NAT 子网。NAT 子网必须位于您计划创建专用 NAT 网关的区域。Private NAT 网关使用此子网中的 IP 地址范围执行 NAT。请确保此子网不会与任何已连接网络中的现有子网重叠。您无法在此子网中创建任何资源。此子网仅用于 Private NAT。
控制台
在 Google Cloud 控制台中,进入 VPC 网络页面。
如需显示 VPC 网络详细信息页面,请点击 VPC 网络的名称。
点击子网标签页。
点击添加子网。在添加子网对话框中,执行以下操作:
- 为子网提供名称。
- 请选择区域。
- 在用途字段中,选择专用 NAT。
输入一个 IP 地址范围,这是子网的主要 IPv4 范围。
如果您选择的范围不是 RFC 1918 地址,请确认该范围与现有配置不冲突。如需详细了解有效的 IPv4 子网范围,请参阅 IPv4 子网范围。
点击添加。
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
:要创建的专用 NAT 子网范围的名称。NETWORK
:子网所属的网络。REGION
:要创建的子网所在的区域。如果未指定,系统可能会提示您选择一个区域(仅限互动模式)。IP_RANGE
:分配给此子网的 IP 地址空间(采用 CIDR 格式)。确保 IP_RANGE 考虑使用每个虚拟机所需端口数量的两倍。
配置 Private NAT
您可以通过在源 VPC 网络中创建 Private NAT 网关来配置 Private NAT。每个网关都与一个 VPC 网络、区域和 Cloud Router 相关联。
配置 Private NAT 时,您可以启用以下一项或两项:
- 适用于 Network Connectivity Center spoke 的 Private NAT。为以下各项之间的流量启用 NAT:
- 位于同一 Network Connectivity Center hub 中的源 VPC 网络和目标 VPC 网络。这两个网络都必须配置为 VPC spoke。
- 在 Network Connectivity Center hub 中配置为 VPC spoke 的源 VPC 网络,以及通过混合 spoke 连接到该 hub 的目标本地网络或其他云服务提供商网络。
- 混合 NAT。为源 VPC 网络与目的地本地网络或其他云服务提供商网络之间的流量启用 NAT。网络必须通过 Cloud Interconnect 或 Cloud VPN 连接。
创建 Private NAT 网关
在要为其配置 NAT 的源 VPC 网络中创建 Private NAT 网关。
控制台
在 Google Cloud 控制台中,转到 Cloud NAT 页面。
点击开始使用或创建 Cloud NAT 网关。
输入网关名称。
在 NAT 类型字段中,选择专用。
为 NAT 网关选择 VPC 网络。
为 NAT 网关选择区域。
在该区域中选择或创建 Cloud Router 路由器。
确保已选择虚拟机实例作为来源端点类型。
在来源列表中,选择自定义。
选择要执行 NAT 的子网。
如果您想指定其他范围,请点击添加子网和 IP 范围。
点击添加规则。
在规则编号字段中,输入
1
到65000
之间的任何值。在匹配部分,选择以下选项之一:
- 如需启用混合 NAT,请选择混合连接路由。
- 如需为 Network Connectivity Center spoke 启用 Private NAT,请选择 Network Connectivity Center hub。
- 如需启用这两项选项,请选择混合连接路由和 Network Connectivity Center hub。
选择或创建专用 NAT 子网范围。
点击完成。
可选:调整高级配置部分中的以下任意设置:
- 是否配置日志记录。默认情况下,系统会选择无日志记录。
- 是否更改 Cloud NAT 分配端口的方式。启用动态端口分配默认处于选中状态。如需配置静态端口分配,请取消选中启用动态端口分配,然后指定每个虚拟机实例的端口数下限。默认值为
64
。 - 是否更新协议连接的 NAT 超时。如需了解这些超时及其默认值,请参阅 NAT 超时。
点击创建。
gcloud
在要配置 NAT 的 VPC 网络中创建 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 路由器的区域。
创建一个 Private NAT 网关,并指定要为其配置 NAT 的源 VPC 网络的一个或多个子网。
使用
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_1
、SUBNETWORK_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
替换为要为每个虚拟机分配的端口数下限。如果未指定,则 Google Cloud 会分配默认值64
。创建 NAT 规则,以根据您配置的 NAT 类型匹配流量。
使用
gcloud compute routers nats rules create
命令,并将--match
标志设置为以下选项之一:nexthop.is_hybrid
:将传出流量从源 VPC 网络转换到通过 Cloud Interconnect 或 Cloud VPN 连接到 Google Cloud 的本地网络或其他云服务提供商网络。nexthop.hub
:将源 VPC spoke 的出站流量转换到与源 VPC spoke 连接到同一 Network Connectivity Center hub 的任何 VPC 或混合 spoke。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 spoke 创建 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
如需为 Network Connectivity Center spoke 同时创建混合 NAT 和 Private 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 规则的规则编号,介于1
和65000
之间。ROUTER_NAME
:您之前创建的 Cloud Router 路由器的名称。REGION
:Cloud Router 路由器的区域。NAT_CONFIG
:您之前创建的 Private NAT 配置的名称。PROJECT_ID
:Network Connectivity Center 中心的 Google Cloud 项目。HUB
:Network Connectivity Center hub 的名称。NAT_SUBNET
:您之前创建的专用 NAT 子网的名称。您还可以以英文逗号分隔的格式指定子网列表。
查看 Private NAT 配置
控制台
在 Google Cloud 控制台中,转到 Cloud NAT 页面。
如需查看 NAT 网关详细信息、映射信息或配置详细信息,请点击 NAT 网关的名称。
如需查看 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 的区域。如果未指定,系统可能会提示您选择一个区域(仅限互动模式)。
查看分配给每个虚拟机接口的 IP:port-range(IP 地址:端口范围)映射。
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 网关时可执行的任务。
更改与 Private NAT 关联的子网
控制台
在 Google Cloud 控制台中,转到 Cloud NAT 页面。
点击您的 NAT 网关。
点击
修改。在 Cloud NAT 映射字段中,请在来源列表中选择自定义。
从可用子网列表中选择新子网。
如果您想指定其他范围,请点击添加子网和 IP 范围,然后选择其他子网。
点击保存。
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 网关中移除不再使用的特定子网。
控制台
在 Google Cloud 控制台中,转到 Cloud NAT 页面。
点击您的 NAT 网关。
点击
修改。删除要从 NAT 映射中移除的子网。
点击保存。
向 Private NAT 配置添加 NAT 子网
如需对流量执行 NAT,Private NAT 配置会使用用途为 PRIVATE_NAT
的子网中的 NAT IP 地址。如果您的专用 NAT 配置需要的 NAT IP 地址数量超出了可用数量,您可以向配置中添加更多用途为 PRIVATE_NAT
的子网。
控制台
在 Google Cloud 控制台中,转到 Cloud NAT 页面。
点击您的 NAT 网关。
点击
修改。展开现有规则。
点击添加子网范围。
选择或创建新的 NAT 子网范围,然后点击完成。
点击保存。
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
:用于唯一标识要更新的规则的编号。NAT_CONFIG
:要更新的规则的 Private NAT 配置名称。ROUTER_NAME
:要与此网关搭配使用的路由器的名称。NAT_SUBNET
:要添加到现有 NAT 配置的 Private NAT 子网的名称。
删除 NAT 配置
如果删除网关配置,则系统会从 Cloud Router 路由器中移除 NAT 配置,但不会删除路由器本身。
控制台
在 Google Cloud 控制台中,转到 Cloud NAT 页面。
选中您要删除的网关配置旁边的复选框。
在
菜单上,点击删除。
gcloud
gcloud compute routers nats delete NAT_CONFIG \ --router=ROUTER_NAME \ --region=REGION
替换以下内容:
NAT_CONFIG
:NAT 配置的名称。ROUTER_NAME
:您的 Cloud Router 路由器的名称。REGION
:要删除的 NAT 的区域。如果未指定,系统可能会提示您选择一个区域(仅限互动模式)。
后续步骤
- 为 Cloud NAT 配置日志记录和监控。
- 排查 NAT 配置的常见问题。