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

本页面介绍如何使用专用 NAT 配置网络地址转换 (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. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

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

  4. 启用 Compute Engine API。

    启用 API

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

    gcloud init
  7. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  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 子网。NAT 子网必须位于您计划创建专用 NAT 网关的区域。 专用 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 配置

您可以配置专用 NAT 网关来支持以下专用 NAT:

  • Inter-VPC NAT:对配置为 VPC spoke(连接到同一 Network Connectivity Center hub)的 VPC 网络之间的流量执行 NAT。
  • 混合 NAT(预览版):对 VPC 网络和通过 Google Cloud 的企业混合连接解决方案连接的本地网络或其他云服务商网络之间的流量执行 NAT。

设置 Private NAT

通过自定义 NAT 规则创建专用 NAT 网关,以便对您的 VPC 网络与其他网络之间的流量执行 NAT。

控制台

  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. 对于匹配,请选择以下选项之一:

    • 对于 Inter-VPC NAT,请选择 Network Connectivity Center hub
    • 对于混合 NAT(预览版),请选择混合连接路由
  15. 选择或创建专用 NAT 子网范围

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

gcloud

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

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

    替换以下内容:

    • ROUTER_NAME:要创建的路由器的名称。
    • NETWORK:此路由器的 VPC 网络。
    • REGION:要创建的路由器的区域。如果未指定,系统可能会提示您选择一个区域(仅限互动模式)。
  2. 通过指定要为其执行 NAT 的来源 VPC 网络的子网,创建专用 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:要创建的专用 NAT 配置的名称。
    • ROUTER_NAME:要与此网关一起使用的路由器的名称。路由器与您在上一步中创建的路由器相同。 确保没有与此路由器关联的其他资源。
    • SUBNETWORK:允许使用该网关的子网或子网列表的名称。您还可以采用逗号分隔格式指定子网列表,例如 SUBNETWORK_1SUBNETWORK_2。Google Cloud 始终对给定子网或子网列表的所有子网 IP 范围执行 NAT。
  3. 根据您的要求创建规则以匹配流量:

    • 如需对通过来源 VPC spoke 连接到匹配的 Network Connectivity Center hub 的任何对等 VPC spoke 的出站流量执行 NAT,请在专用 NAT 网关中创建 NAT 规则。专用 NAT 网关会根据 NAT 规则分配专用 NAT 子网中的 NAT IP 地址,以对流量执行 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 配置名称。配置与您在上一步中创建的配置相同。
      • PROJECT_ID:路由器所在项目的全局唯一标识符。
      • HUB:匹配的 Network Connectivity Center hub 的名称。
      • NAT_SUBNET:您之前创建的专用 NAT 子网的名称。您还可以采用逗号分隔格式指定子网列表。
    • 如需对通过 Google Cloud 的企业混合连接解决方案(预览版)从来源 VPC 网络出站流量到本地或其他云服务提供商网络的流量执行 NAT,请在专用 NAT 网关中创建 NAT 规则。专用 NAT 网关会根据 NAT 规则分配专用 NAT 子网中的 NAT IP 地址,以对流量执行 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 配置名称。配置与您在上一步中创建的配置相同。
      • NAT_SUBNET:您之前创建的专用 NAT 子网的名称。您还可以采用逗号分隔格式指定子网列表。

设置具有静态端口分配的专用 NAT

专用 NAT 默认使用动态端口分配。但是,您可以将专用 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 配置详细信息:

  • 查看专用 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
    

更新专用 NAT 配置

设置 Private NAT 网关后,您可以根据要求更新网关配置。以下部分列出了更新 Private NAT 网关时可执行的任务。

更改与专用 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:要使用的子网的名称。

删除与专用 NAT 关联的子网

您可以从 NAT 网关中移除不再使用的特定子网。

控制台

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

    转到 Cloud NAT

  2. 点击您的 NAT 网关。

  3. 点击修改

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

  5. 点击保存

将 NAT 子网添加到专用 NAT 配置中

为对流量执行 NAT,专用 NAT 配置使用目的为 PRIVATE_NAT 的子网中的 NAT IP 地址。如果您的专用 NAT 配置需要的 NAT IP 地址数量超过可用数量,您可以向该配置添加更多用途为 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 的区域。如果未指定,系统可能会提示您选择一个区域(仅限互动模式)。

后续步骤