为出站流量分配静态 IP 地址

默认情况下,Secure Web Proxy 使用受管理的 Cloud NAT 网关 (swg-autogen-nat) 处理出站 Web 流量,该网关通常使用自动分配的 IP 地址。本页面介绍了如何配置 Cloud NAT 网关,以使用您在 Google Cloud 项目中拥有和管理的特定静态外部 IPv4 地址集。从您的工作负载流出的所有出站流量(通过 Secure Web Proxy 进行路由)都将源自这些预定义的静态 IP 之一。

为出站流量分配静态 IP 地址有以下几项主要优势:

  • 可预测的出站流量源 IP:使外部服务、合作伙伴和本地防火墙能够将您的特定 IP 地址添加到其授权列表中,从而确保接受来自 Secure Web Proxy 实例的流量。这对于访问受基于 IP 的访问权限控制列表 (ACL) 保护的资源至关重要。

  • 动态端口分配 (DPA):从您为出站流量分配的静态 IP 地址集中高效分配可用的源端口。借助 DPA,您的工作负载可以使用有限数量的静态 IP 管理出站流量,而不会用尽所有可用端口。如需了解详情,请参阅动态端口分配

  • 增强安全状况:提供一组较小的已知 IP 地址,以便进行管理和监控,从而简化安全审核和威胁分析。

  • 改进了第三方集成:可与需要或建议使用 IP 许可名单的 SaaS 提供商和 API 无缝集成,从而提高安全性。

  • 简化合规流程:帮助您满足所有出站流量点及其关联 IP 地址的合规要求。

准备工作

  • 完成初始设置步骤

  • 预留一系列静态 IPv4 地址,以供 Secure Web Proxy 实例使用。在 Google Cloud中预留 IP 地址之前,请确保您已使用 gcloud compute addresses create 命令创建地址资源。

  • 验证您是否已安装 Google Cloud CLI 406.0.0 版或更高版本:

    gcloud version | head -n1
    

    如果您安装的是早期 gcloud CLI 版本,请更新版本:

    gcloud components update --version=406.0.0
    

为 Secure Web Proxy 配置静态 IP 地址

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud NAT 页面。

    前往 Cloud NAT

  2. 找到 Secure Web Proxy 实例使用的 Cloud NAT 网关。其名称为 swg-autogen-nat,并且与相应区域和虚拟私有云网络中的 Cloud NAT(名称采用 swg-autogen-router-YYYY 格式)相关联。

  3. 如需前往 Cloud NAT 网关的详情页面,请点击 swg-autogen-nat 网关名称。系统会打开 Cloud NAT 网关详情页面。

  4. 点击修改。系统随即会打开修改 Cloud NAT 网关页面。

  5. 对于 Cloud NAT IP 地址,将设置从自动(推荐)更改为手动

  6. 对于 IP 地址,请选择您预留的静态 IP 地址。如需了解详情,请参阅为 Secure Web Proxy 配置 Cloud NAT IP

    如需添加多个 IP 地址,请点击 添加 IP 地址按钮。

  7. 展开高级配置部分,然后选中启用动态端口分配复选框。

  8. 对于每个虚拟机的最少端口数,我们建议您输入 2048

  9. 对于每个虚拟机的端口数上限,我们建议您输入 4096

  10. 点击保存

  11. 保存更改后,请验证以下内容:

    1. 在 Cloud NAT 网关详情页面上,检查IP 地址部分是否列出了您手动选择的静态 IP 地址。

    2. 检查是否已启用动态端口分配,以及每个虚拟机 (VM) 的端口数下限和上限是否正确(即您之前配置的值)。

Cloud Shell

  1. 如需确定在预配 Secure Web Proxy 实例时分配的 Cloud Router 名称,请使用 gcloud compute routers list 命令

    gcloud compute routers list \
        --region REGION \
        --filter="network:(NETWORK_NAME) AND name:(swg-autogen-router-*)" \
        --format="get(name)"
    

    替换以下内容:

    • REGION:为您的 Secure Web Proxy 实例部署 Cloud Router 的区域
    • NETWORK_NAME:您的 VPC 网络的名称

    输出类似于以下内容:

    swg-autogen-router-1
    
  2. 如需列出在预配 Secure Web Proxy 实例时分配的自动预配的外部 IP 地址,请使用 gcloud compute routers get-status 命令

    gcloud compute routers get-status ROUTER_NAME  \
        --region=REGION
    

    输出类似于以下内容:

    kind: compute#routerStatusResponse
    result:
      natStatus:
      - autoAllocatedNatIps:
        - 34.144.80.46
        - 34.144.83.75
        - 34.144.88.111
        - 34.144.94.113
        minExtraNatIpsNeeded: 0
        name: swg-autogen-nat
        numVmEndpointsWithNatMappings: 3
      network: https://www.googleapis.com/compute/projects/PROJECT_NAME/global/networks/NETWORK_NAME
    

    此输出包括以下值:

    • PROJECT_NAME:您的 Google Cloud项目的名称
    • NETWORK_NAME:您的 VPC 网络的名称
  3. 如需更新 Cloud NAT 网关以使用预定义的 IP 范围,请使用 gcloud compute routers nats update 命令

    gcloud compute routers nats update swg-autogen-nat  \
        --router=ROUTER_NAME \
        --nat-external-ip-pool=IPv4_ADDRESSES... \
        --region=REGION
    

    IPv4_ADDRESSES 替换为您打算使用的外部 IPv4 地址资源名称,以英文逗号 (,) 分隔。

  4. 如需验证您的 IP 范围是否已分配给 Cloud NAT 网关,请使用 gcloud compute routers nats describe 命令

    gcloud compute routers nats describe swg-autogen-nat \
        --router=ROUTER_NAME  \
        --region=REGION
    

    输出类似于以下内容:

    enableEndpointIndependentMapping: false
    icmpIdleTimeoutSec: 30
    logConfig:
      enable: false
      filter: ALL
    name: swg-autogen-nat
    natIpAllocateOption: MANUAL_ONLY
    natIps:
    - https://www.googleapis.com/compute/projects/PROJECT_NAME/regions/REGION/addresses/ADDRESS
    sourceSubnetworkIpRangesToNat: ALL_SUBNETWORKS_ALL_IP_RANGES
    

    此输出包括以下值:

    • PROJECT_NAME:您的 Google Cloud项目的名称
    • REGION:部署 Cloud NAT 网关的区域
    • ADDRESS:静态 IPv4 地址资源的名称
  5. 如需更新 Cloud NAT 网关以使用动态端口分配 (DPA) 模式,请使用 gcloud compute routers nats update 命令。 DPA 模式可让 Secure Web Proxy 实例使用分配的 IP 地址。

    gcloud compute routers nats update swg-autogen-nat  \
        --router=ROUTER_NAME \
        --min-ports-per-vm=2048 \
        --max-ports-per-vm=4096 \
        --enable-dynamic-port-allocation \
        --region=REGION
    

    对于 --min-ports-per-vm--max-ports-per-vm 标志,我们建议您将其值分别设置为 20484096

    使用 Metrics Explorer 监控以下各项的指标数据,并根据需要调整 DPA 的最小值和最大值:

    • Cloud NAT Gateway - Port usage
    • Cloud NAT Gateway - New connection count
    • Cloud NAT Gateway - Open connections
  6. 如需验证是否已启用 DPA,以及是否已设置端口数下限和上限,请使用 gcloud compute routers nats describe 命令

    gcloud compute routers nats describe swg-autogen-nat \
        --router=ROUTER_NAME \
        --region=REGION
    

    检查输出中是否包含 natIpAllocateOption: MANUAL_ONLY,以验证 natIps 列表是否包含您的静态 IP 地址。

    输出类似于以下内容:

    enableDynamicPortAllocation: true
    enableEndpointIndependentMapping: false
    endpointTypes:
    - ENDPOINT_TYPE_SWG
    logConfig:
      enable: true
      filter: ERRORS_ONLY
    maxPortsPerVm: 4096
    minPortsPerVm: 2048
    name: swg-autogen-nat
    natIpAllocateOption: MANUAL_ONLY
    natIps:
    - https://www.googleapis.com/compute/projects/PROJECT_NAME/regions/REGION/addresses/ADDRESS
    sourceSubnetworkIpRangesToNat: ALL_SUBNETWORKS_ALL_IP_RANGES
    type: PUBLIC
    

    此输出包括以下值:

    • PROJECT_NAME:您的 Google Cloud项目的名称
    • REGION:部署 Cloud NAT 网关的区域
    • ADDRESS:静态 IPv4 地址资源的名称

接下来怎么做?