使用 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 网络之间传输的流量,请参阅混合 NAT

获取 IAM 权限

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

设置 Google Cloud

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

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Enable the API

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    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. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Compute Engine API.

    Enable the API

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    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 子网

在配置 Private NAT 之前,您需要创建用途为 PRIVATE_NAT 的 NAT 子网。NAT 子网必须位于您计划创建专用 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

使用 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 网关。

控制台

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

    • 如需启用混合 NAT,请选择混合连接路由
    • 如需为 Network Connectivity Center spoke 启用 Private NAT,请选择 Network Connectivity Center hub
    • 如需启用这两项选项,请选择混合连接路由Network Connectivity Center hub
  15. 选择或创建专用 NAT 子网范围

  16. 点击完成

  17. 可选:调整高级配置部分中的以下任意设置:

    • 是否配置日志记录。默认情况下,系统会选择无日志记录
    • 是否更改 Cloud NAT 分配端口的方式。启用动态端口分配默认处于选中状态。如需配置静态端口分配,请取消选中启用动态端口分配,然后指定每个虚拟机实例的端口数下限。默认值为 64
    • 是否更新协议连接的 NAT 超时。如需了解这些超时及其默认值,请参阅 NAT 超时
  18. 点击创建

gcloud

  1. 在要配置 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 路由器的区域。
  2. 创建一个 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_1SUBNETWORK_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

  3. 创建 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 创建 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 规则的规则编号,介于 165000 之间。
    • 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 配置

控制台

  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 网关时可执行的任务。

更改与专用 NAT 关联的子网

控制台

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

    转到 Cloud NAT

  2. 点击您的 NAT 网关。

  3. 点击修改

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

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

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

  7. 点击保存

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

控制台

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

    转到 Cloud NAT

  2. 点击您的 NAT 网关。

  3. 点击修改

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

  5. 点击保存

向 Private NAT 配置添加 NAT 子网

如需对流量执行 NAT,Private 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 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 配置,但不会删除路由器本身。

控制台

  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 的区域。如果未指定,系统可能会提示您选择一个区域(仅限互动模式)。

后续步骤