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

本页面介绍了如何配置从专用到专用的网络地址 在 Cloud NAT 中进行转换 (NAT)。

准备工作

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

查看 Private 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: 流量:
    • 来源 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 的网络。

控制台

  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 启用专用 NAT,请执行以下操作: 选择 Network Connectivity Center hub
    • 要启用这两个选项,请选择混合连接路由Network Connectivity Center 中心
  15. 选择或创建专用 NAT 子网范围

  16. 点击完成

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

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

gcloud

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

  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:同时配置两者

    如需为混合 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 规则,范围为 165000
    • 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 配置

控制台

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

后续步骤