使用 Cloud NAT 设置和管理网络地址转换。
本页面介绍了如何配置从专用到专用的网络地址 在 Cloud NAT 中进行转换 (NAT)。
准备工作
在设置 Cloud NAT 之前,请完成以下任务。
查看 Private NAT 规范
请参阅以下规范和要求:
- 如需了解一般规格,请参阅专用 NAT。
- 如需了解 Network Connectivity Center 中心 spoke 之间的流量(包括 VPC spoke 和混合 spoke),请参阅 适用于 Network Connectivity Center spoke 的 Private NAT。
- 适用于虚拟私有云 (VPC) 网络之间的流量 以及通过 Cloud Interconnect 或 Cloud VPN,请参阅 混合 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:
流量:
- 来源 VPC 网络和目标 同一 Network Connectivity Center hub 中的 VPC 网络。 这两个网络都必须配置为 VPC spoke。
- 在 Network Connectivity Center 中心配置为 VPC spoke 的源 VPC 网络,以及通过混合 spoke(预览版)连接到该中心的目标本地网络或其他云服务提供商网络。
- 混合 NAT。为以下实例启用 NAT: 来源 VPC 网络与目标之间的流量 或其他云服务商网络。这些网络必须通过 Cloud Interconnect 或 Cloud VPN 连接。
创建 Private NAT 网关
在来源 VPC 中创建 Private NAT 网关 为其配置 NAT 的网络。
控制台
在 Google Cloud 控制台中,转到 Cloud NAT 页面。
点击开始使用或创建 Cloud NAT 网关。
输入网关名称。
在 NAT 类型字段中,选择专用。
为 NAT 网关选择 VPC 网络。
为 NAT 网关选择区域。
在该区域中选择或创建 Cloud Router 路由器。
确保选择虚拟机实例作为来源端点类型。
在来源列表中,选择自定义。
选择要执行 NAT 的子网。
如果您想指定其他范围,请点击添加子网和 IP 范围。
点击添加规则。
在规则编号字段中,输入
1
到65000
之间的任何值。对于匹配,选择以下选项之一:
- 如需启用混合 NAT,请选择 混合连接路由。
- 如需为 Network Connectivity Center spoke 启用专用 NAT,请执行以下操作: 选择 Network Connectivity Center hub。
- 要启用这两个选项,请选择混合连接路由和 Network Connectivity Center 中心。
选择或创建专用 NAT 子网范围。
点击完成。
可选:调整高级配置部分中的以下任意设置:
- 是否配置日志记录。默认情况下,无日志记录 已选择。
- 是否更改 Cloud NAT 分配端口的方式。修改者
默认选中的是启用动态端口分配。如需配置静态端口分配,请取消选中启用动态端口分配,然后指定每个虚拟机实例的端口数下限。默认值为
64
。 - 是否更新协议连接的 NAT 超时。如需了解这些超时及其默认值,请参阅 NAT 超时。
点击创建。
gcloud
在 VPC 网络中创建一个 Cloud Router 路由器, 配置 NAT 的网络。
使用
gcloud compute routers create
命令。gcloud compute routers create ROUTER_NAME \ --network=NETWORK --region=REGION
替换以下内容:
ROUTER_NAME
:Cloud Router 路由器的名称。NETWORK
:VPC 网络, 创建 Cloud Router 路由器REGION
:要创建 Cloud Router 路由器的区域。
创建 Private NAT 网关并指定一个或多个 来源 VPC 网络的 配置 NAT。
使用
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 使用动态端口分配。如果您想创建具有静态 IP 地址的 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
:同时配置两者
如需为混合 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 创建专用 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 和专用 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
:网络连接中心中心的 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
:您的专用 NAT 配置的名称 以进行更新。ROUTER_NAME
:要与此网关一起使用的路由器的名称。SUBNETWORK
:要使用的子网的名称。
删除与 Private NAT 关联的子网
您可以从 NAT 网关中移除不再使用的特定子网。
控制台
在 Google Cloud 控制台中,转到 Cloud NAT 页面。
点击您的 NAT 网关。
点击
修改。删除要从 NAT 映射中移除的子网。
点击保存。
将 NAT 子网添加到 Private NAT 配置中
如需对流量执行 NAT,Private NAT 配置会使用用途为 PRIVATE_NAT
的子网中的 NAT IP 地址。如果您的专用 NAT 配置需要的
您可以添加更多用途为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 配置的常见问题。