使用 Cloud NAT 设置和管理网络地址转换。

本页介绍了如何使用 Google Cloud 控制台中的 专用 NAT。在设置专用 NAT 配置之前, 了解专用 NAT

准备工作

在设置 Cloud NAT 之前,请完成以下任务。

获取 IAM 权限

通过 Compute Network Admin 角色 (roles/compute.networkAdmin),您有权在 Cloud Router 路由器上创建 NAT 网关、预留和分配 NAT IP 地址,以及指定哪些子网的流量应该使用 NAT 网关的网络地址转换。

设置 Google Cloud

开始之前,请先在 Google Cloud 中设置以下内容。

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 启用 Compute Engine API。

    启用 API

  5. 安装 Google Cloud CLI。
  6. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. 确保您的 Google Cloud 项目已启用结算功能

  9. 启用 Compute Engine API。

    启用 API

  10. 安装 Google Cloud CLI。
  11. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init

此页面上的 Google Cloud CLI 说明假定您在发出命令前已经设置项目 ID。

  1. 您可以使用以下命令设置项目 ID:

    gcloud config set project PROJECT_ID
    
  2. 您还可以查看已设置的项目 ID:

    gcloud config list --format='text(core.project)'
    

创建用途为 PRIVATE_NAT 的 NAT 子网

在配置专用 NAT 之前, 用途 PRIVATE_NAT。NAT 子网必须位于您计划所在的区域 创建 Private NAT 网关。 Private NAT 网关使用此子网中的 IP 地址范围 执行 NAT。确保此子网与现有子网不重叠 任何连接的网络。您无法在此子网中创建任何资源。 此子网仅用于 Private NAT。

控制台

  1. 在 Google Cloud 控制台中,进入 VPC 网络页面。

    进入 VPC 网络页面

  2. 如需显示 VPC 网络详细信息页面,请点击 VPC 网络的名称。

  3. 点击子网标签页。

  4. 点击添加子网。在添加子网对话框中,执行以下操作:

    1. 为子网提供名称。
    2. 请选择区域。
    3. 用途字段中,选择专用 NAT
    4. 输入一个 IP 地址范围,这是子网的主要 IPv4 范围。

      如果您选择的范围不是 RFC 1918 地址,请确认该范围与现有配置不冲突。如需详细了解有效的 IPv4 子网范围,请参阅 IPv4 子网范围

  5. 点击添加

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 配置

您可以配置 Private NAT 网关来支持以下功能 专用 NAT 类型:

  • Network Connectivity Center spoke 的专用 NAT 会对以下各项之间的流量执行 NAT:
    • VPC 网络配置为 VPC Spoke 位于同一 Network Connectivity Center hub 中。 如需了解详情,请参阅创建 VPC spoke
    • VPC 网络配置为 VPC Spoke 位于同一个 Network Connectivity Center 中心和本地,或者 通过混合模式连接到该中心的其他云提供商网络 spoke(预览版)。 如需了解详情,请参阅 VPC spoke 和混合 spoke 之间的连接简介
  • 混合 NAT(预览版)执行 NAT VPC 网络与本地网络或其他 连接到 Google Cloud 的云服务提供商网络, Cloud Interconnect 或 Cloud VPN

设置 Private NAT

创建一个具有自定义 NAT 规则的 Private NAT 网关,该规则会在以下位置执行 NAT: 您的 VPC 网络与其他网络之间的流量。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud NAT 页面。

    转到 Cloud NAT

  2. 点击开始使用创建 Cloud NAT 网关

  3. 输入网关名称。

  4. NAT 类型字段中,选择专用

  5. 为 NAT 网关选择 VPC 网络。

  6. 为 NAT 网关选择区域。

  7. 在该区域中选择或创建 Cloud Router 路由器。

  8. 确保选择虚拟机实例作为来源端点类型。

  9. 来源列表中,选择自定义

  10. 选择要执行 NAT 的子网。

  11. 如果您想指定其他范围,请点击添加子网和 IP 范围

  12. 点击添加规则

  13. 规则编号字段中,输入 165000 之间的任何值。

  14. 对于匹配,选择以下选项之一:

    • 对于 Network Connectivity Center spoke 的 Private NAT,请选择 Network Connectivity Center 中心
    • 对于混合 NAT(预览版),请选择混合连接路由
  15. 选择或创建专用 NAT 子网范围

  16. 点击完成,然后点击创建

gcloud

  1. 在 VPC 网络中创建一个 Cloud Router 路由器, 您想要执行 NAT。 使用 compute routers create 命令

    gcloud compute routers create ROUTER_NAME \
      --network=NETWORK --region=REGION
    

    替换以下内容:

    • ROUTER_NAME:要创建的路由器的名称。
    • NETWORK:此路由器的 VPC 网络。
    • REGION:要创建的路由器区域。如果未指定,系统可能会提示您选择一个区域(仅限互动模式)。
  2. 通过指定来源 VPC 的子网来创建专用 NAT 网关 您要对其执行 NAT 的网络。

    使用 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 ...] | \
      [--nat-all-subnet-ip-ranges]
    

    请替换以下内容:

    • NAT_CONFIG:要创建的 Private NAT 配置的名称。
    • ROUTER_NAME:要与此项配合使用的路由器的名称 网关。路由器就是您在上一步中创建的路由器。 确保没有其他资源与此路由器关联。
    • SUBNETWORK:子网的名称或列表的名称 允许其使用此网关 您也可以在 逗号分隔格式,例如 SUBNETWORK_1SUBNETWORK_2。Google Cloud 始终会在 针对给定子网或子网列表的所有子网 IP 范围执行 NAT。
  3. 根据您的要求创建规则来匹配流量:

    • 对通过来源 VPC 出站的流量执行 NAT 与连接到匹配网络的任何 VPC spoke 或混合 spoke Network Connectivity Center hub,请在 Private NAT 网关中创建 NAT 规则。 根据 NAT 规则,Private NAT 网关会为 NAT IP 地址分配 (从专用 NAT 子网)来对流量执行 NAT。

      使用 compute routers nats rules create 命令

      gcloud beta 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 ...
      

      请替换以下内容:

      • NAT_RULE_NUMBER:唯一标识数字 要创建的规则。
      • NAT_CONFIG:要创建的规则的 Private NAT 配置名称。配置与您 创建 Deployment 清单
      • PROJECT_ID:路由器所在项目的全局唯一标识符。
      • HUB:匹配的 Network Connectivity Center hub 的名称。
      • NAT_SUBNET专用 NAT 子网的名称 创建的新实例您也可以在 。
    • 对通过来源 VPC 出站的流量执行 NAT 连接到本地网络或其他云服务提供商网络 (预览版), 在 Private NAT 网关中创建 NAT 规则。 根据 NAT 规则,Private NAT 网关会为 NAT IP 地址分配 (从专用 NAT 子网)来对流量执行 NAT。

      使用 compute routers nats rules create 命令

      gcloud beta 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 ...
      

      请替换以下内容:

      • NAT_RULE_NUMBER:唯一标识数字 要创建的规则。
      • NAT_CONFIG:要创建的规则的 Private NAT 配置名称。配置与您 创建 Deployment 清单
      • NAT_SUBNET专用 NAT 子网的名称 创建的新实例您也可以在 。

通过静态端口分配设置 Private NAT

Private NAT 默认使用动态端口分配。 不过,您可以将 Private NAT 配置为使用静态端口分配。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud NAT 页面。

    转到 Cloud NAT

  2. 点击开始使用创建 Cloud NAT 网关

  3. 输入网关名称。

  4. NAT 类型字段中,选择专用

  5. 为 NAT 网关选择 VPC 网络。

  6. 为 NAT 网关选择区域。

  7. 在该区域中选择或创建 Cloud Router 路由器。

  8. 指定 Cloud NAT 映射详细信息并创建 NAT 规则。如需了解详情,请参阅设置专用 NAT

  9. 点击高级配置

  10. 取消选中启用动态端口分配

  11. 指定每个虚拟机实例的端口数下限的值。默认值为 64

  12. 点击完成,然后点击创建

gcloud

使用带有 --no-enable-dynamic-port-allocation 标志的 compute routers nats create 命令

  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,...] \
    --no-enable-dynamic-port-allocation \
    [--min-ports-per-vm=VALUE]

替换以下内容:

  • NAT_CONFIG:您的专用 NAT 配置的名称 要创建的活动。
  • ROUTER_NAME:要与此网关一起使用的路由器的名称。
  • SUBNETWORK:子网的名称或列表的名称 允许其使用此网关

    您也可以在 逗号分隔格式,例如 SUBNETWORK_1SUBNETWORK_2。Google Cloud 始终会在 针对给定子网或子网列表的所有子网 IP 范围执行 NAT。

  • VALUE:您希望网关分配的每个虚拟机的端口数下限。如果未指定,则 Google Cloud 会分配默认值 64

查看 NAT 配置

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud NAT 页面。

    转到 Cloud NAT

  2. 如需查看 NAT 网关详细信息、映射信息或配置详细信息,请点击 NAT 网关的名称。

  3. 如需查看 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 关联的子网

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud NAT 页面。

    转到 Cloud NAT

  2. 点击您的 NAT 网关。

  3. 点击修改

  4. Cloud NAT 映射字段中,请在来源列表中选择自定义

  5. 从可用子网列表中选择新子网。

  6. 如果您想指定其他范围,请点击添加子网和 IP 范围,然后选择其他子网。

  7. 点击保存

gcloud

gcloud beta 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 网关中移除不再使用的特定子网。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud NAT 页面。

    转到 Cloud NAT

  2. 点击您的 NAT 网关。

  3. 点击修改

  4. 删除要从 NAT 映射中移除的子网。

  5. 点击保存

将 NAT 子网添加到 Private NAT 配置中

对流量执行 NAT 配置使用目的为 PRIVATE_NAT 的子网中的 NAT IP 地址。 如果您的专用 NAT 配置需要的 您可以添加更多用途为PRIVATE_NAT的子网 配置。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud NAT 页面。

    转到 Cloud NAT

  2. 点击您的 NAT 网关。

  3. 点击修改

  4. 展开现有规则。

  5. 点击添加子网范围

  6. 选择或创建新的 NAT 子网范围,然后点击完成

  7. 点击保存

gcloud

gcloud beta 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:您的专用 NAT 配置的名称 更新规则
  • PROJECT_ID:路由器所在项目的全局唯一标识符。
  • NAT_SUBNET专用 NAT 子网的名称 添加到现有 NAT 配置中。

删除 NAT 配置

如果删除网关配置,则系统会从 Cloud Router 路由器中移除 NAT 配置,但不会删除路由器本身。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud NAT 页面。

    转到 Cloud NAT

  2. 选中您要删除的网关配置旁边的复选框。

  3. 菜单上,点击删除

gcloud

gcloud compute routers nats delete NAT_CONFIG \
    --router=ROUTER_NAME \
    --region=REGION

替换以下内容:

  • NAT_CONFIG:NAT 配置的名称。
  • ROUTER_NAME:您的 Cloud Router 路由器的名称。
  • REGION:要删除的 NAT 的区域。如果未指定,系统可能会提示您选择一个区域(仅限互动模式)。

后续步骤