将安全 Web 代理部署为下一个跃点

本页概述了如何 创建 Secure Web Proxy 政策,然后介绍了如何 为您的 Secure Web Proxy 实例配置下一个跃点路由。此外,本页还介绍了如何为下一个跃点配置 静态路由基于政策的路由

默认情况下,SecureWebProxy 实例的 RoutingMode 值为 EXPLICIT_ROUTING_MODE,这意味着您必须将工作负载配置为显式向 Secure Web Proxy 发送 HTTP(S) 流量。您可以将 Secure Web Proxy 实例的 RoutingMode 设置为 NEXT_HOP_ROUTING_MODE,而不是配置指向 Secure Web Proxy 实例的各个客户端,这样您就可以定义将流量定向到 Secure Web Proxy 实例的路由。

Secure Web Proxy 实例部署为下一个 跃点时,您可以让网关侦听所有端口 (从 165535),从而简化动态环境或 使用多个端口的服务的配置。

为 Secure Web Proxy 配置下一个跃点路由

本部分介绍了创建 Secure Web Proxy 政策 的步骤,以及将Secure Web Proxy 实例部署为下一个跃点的过程。

创建 Secure Web Proxy 政策

  1. 完成所有必需的前提条件步骤
  2. 创建 Secure Web Proxy 政策
  3. 创建 Secure Web Proxy 规则

将 Secure Web Proxy 实例部署为下一个跃点

控制台

  1. 在 Google Cloud 控制台中,前往 Web 代理 页面。

    前往 Web 代理

  2. 点击 创建安全 Web 代理

  3. 输入要创建的 Web 代理的名称,例如 myswp

  4. 输入 Web 代理的说明,例如 My new swp

  5. 对于路由模式,选择下一个跃点选项。

  6. 区域 列表中,选择要在其中创建 Web 代理的区域。

  7. 网络 列表中,选择要在其中创建 Web 代理的网络。

  8. 子网 列表中,选择要在其中创建 Web 代理的子网。

  9. 可选:输入 Secure Web Proxy IP 地址。您可以输入在上一步中创建的子网中的 Secure Web Proxy IP 地址范围内的 IP 地址。如果您未输入 IP 地址,则 Secure Web Proxy 实例会自动从所选子网中选择 IP 地址。

  10. 证书 列表中,选择要用于创建 Web 代理的证书。

  11. 政策 列表中,选择您创建的要与 Web 代理关联的政策。

  12. 点击创建

Cloud Shell

  1. 创建 gateway.yaml 文件。

    name: projects/PROJECT_ID/locations/REGION/gateways/swp1
    type: SECURE_WEB_GATEWAY
    addresses: ["IP_ADDRESS"]
    ports: [443, 80]
    gatewaySecurityPolicy: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/policy1
    network: projects/PROJECT_ID/global/networks/NETWORK
    subnetwork: projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK
    routingMode: NEXT_HOP_ROUTING_MODE
    

    可选:如需将网关配置为侦听所有端口 (从 165535),请在 gateway.yaml 文件中添加 all_ports 字段,并将其设置为 true。此功能处于 预览版阶段。

    如需了解与使用 all_ports功能相关的限制,请参阅限制

    name: projects/PROJECT_ID/locations/REGION/gateways/swp1
    type: SECURE_WEB_GATEWAY
    addresses: ["IP_ADDRESS"]
    all_ports: true
    gatewaySecurityPolicy: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/policy1
    network: projects/PROJECT_ID/global/networks/NETWORK
    subnetwork: projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK
    routingMode: NEXT_HOP_ROUTING_MODE
    
  2. 创建 Secure Web Proxy 实例。

    gcloud network-services gateways import swp1 \
      --source=gateway.yaml \
      --location=REGION
    

    Secure Web Proxy 实例可能需要几分钟时间才能部署。

为下一个跃点创建路由

创建 Secure Web Proxy 实例后,您可以为下一个跃点配置 静态路由基于政策的路由

  • 静态路由会将网络中的流量定向到同一区域中的 Secure Web Proxy 实例。如需将 Secure Web Proxy 设置为下一个跃点来设置静态路由,您必须配置 网络标记
  • 借助基于政策的路由,您可以将流量从来源 IP 地址范围定向到 Secure Web Proxy 实例。首次配置基于政策的路由时,您还必须将另一个基于政策的路由配置为默认路由。

以下两个部分介绍了如何创建静态路由和基于政策的路由。

创建静态路由

如需将流量路由到 Secure Web Proxy 实例,请使用 gcloud compute routes create 命令设置静态路由。您必须将静态路由与网络标记相关联,并在所有来源资源上使用相同的网络标记,以帮助确保其流量重定向到 Secure Web Proxy 实例。静态路由不允许您定义来源 IP 地址范围。

如需详细了解静态路由在 Google Cloud中的工作方式,请参阅 静态路由

gcloud

使用以下命令创建静态路由。

gcloud compute routes create STATIC_ROUTE_NAME \
    --network=NETWORK_NAME \
    --next-hop-ilb=SWP_IP \
    --destination-range=DESTINATION_RANGE \
    --priority=PRIORITY \
    --tags=TAGS \
    --project=PROJECT
 

替换以下内容:

  • STATIC_ROUTE_NAME:静态路由的名称
  • NETWORK_NAME:网络的名称
  • SWP_IPgateway.yaml 文件中指定的子网中 SecureWebProxy 实例的 IP 地址
  • DESTINATION_RANGE:您要将流量重定向到的 IP 地址范围。例如,使用 0.0.0.0/0 将所有互联网流量路由到 Secure Web Proxy 实例
  • PRIORITY:路由的优先级;数字越大,优先级越低。确保路由的优先级在数值上低于默认互联网路由(通常为 1000
  • TAGS:您将与 Secure Web Proxy 实例搭配使用的标记的逗号分隔列表
  • PROJECT:项目的 ID

在相应子网中创建虚拟机,并在路由中指定网络标记

gcloud compute instances create swp-nexthop-test-vm \
    --subnet=SUBNETWORK \
    --zone=ZONE \
    --image-project=debian-cloud \
    --image-family=debian-11 \
    --tags=TAGS

替换以下内容:

  • SUBNETWORK:您为 Web 代理配置的子网
  • ZONE:测试虚拟机实例的可用区
  • TAGS:您将与 Secure Web Proxy 实例搭配使用的标记的逗号分隔列表

创建基于政策的路由

除了静态路由之外,您还可以使用 network-connectivity policy-based-routes create 命令设置基于政策的路由。您还需要创建一个基于政策的路由作为默认路由,以便为网络中虚拟机 (VM) 实例之间的流量启用默认路由。如需详细了解基于政策的路由在 Google Cloud中的工作方式,请参阅基于政策的路由

启用 默认路由的路由的优先级必须高于 (数值上低于)将流量定向到 Secure Web Proxy 实例的基于政策的路由的优先级。如果您创建的基于政策的路由的优先级高于启用默认路由的路由,则该路由的优先级高于所有其他 VPC 路由。

使用以下示例创建将流量定向到 Secure Web Proxy 实例的基于政策的路由。

gcloud

使用以下命令创建基于政策的路由。

gcloud network-connectivity policy-based-routes create POLICY_BASED_ROUTE_NAME \
    --network="projects/PROJECT/global/networks/NETWORK_NAME" \
    --next-hop-ilb-ip=SWP_IP \
    --protocol-version="IPV4" \
    --destination-range=DESTINATION_RANGE \
    --source-range=SOURCE_RANGE \
    --priority=2 \
    --project=PROJECT
 

替换以下内容:

  • POLICY_BASED_ROUTE_NAME:基于政策的路由的名称
  • NETWORK_NAME:网络的名称
  • SWP_IP:Secure Web Proxy 实例的 IP 地址
  • DESTINATION_RANGE:您要将流量重定向到的 IP 地址范围
  • SOURCE_RANGE:您要将流量重定向到的 IP 地址范围
  • PROJECT:项目的 ID

接下来,按照以下步骤创建默认路由基于政策的路由。

gcloud

使用以下命令创建默认路由基于政策的路由。

gcloud network-connectivity policy-based-routes create DEFAULT_POLICY_BASED_ROUTE_NAME \
    --network="projects/PROJECT/global/networks/NETWORK_NAME" \
    --next-hop-other-routes="DEFAULT_ROUTING" \
    --protocol-version="IPV4" \
    --destination-range=DESTINATION_RANGE \
    --source-range=SOURCE_RANGE \
    --priority=1 \
    --project=PROJECT
 

替换以下内容:

  • DEFAULT_POLICY_BASED_ROUTE_NAME:基于政策的路由的名称
  • NETWORK_NAME:网络的名称
  • DESTINATION_RANGE:您要将流量重定向到的 IP 地址范围
  • SOURCE_RANGE:您要将流量重定向到的 IP 地址范围
  • PROJECT:项目的 ID

部署后核对清单

将 Secure Web Proxy 实例配置为下一个跃点后,无论您配置的是 静态路由还是基于政策的路由 ,都请确保完成以下任务:

  • 确认存在通往互联网网关的 默认路由
  • 向指向 Secure Web Proxy 实例(作为下一个跃点)的 静态路由添加正确的 网络标记
  • 为指向 Secure Web Proxy 实例(作为下一个跃点)的默认路由定义适当的优先级。
  • 由于 Secure Web Proxy 是一项区域服务,因此请确保客户端流量源自与 Secure Web Proxy 实例相同的区域。

限制

  • RoutingMode 设置为 NEXT_HOP_ROUTING_MODESecureWebProxy 实例支持 HTTP(S) 和 TCP 代理流量。其他类型的流量(包括跨区域流量)会被丢弃,且不会收到通知。
  • 当您使用 next-hop-ilb 时,如果目标下一个跃点是 Secure Web Proxy 实例,则适用于内部直通网络负载平衡器的限制也适用于下一个跃点。如需了解详情,请参阅 静态路由的下一个跃点和功能表。
  • 来自虚拟机 (VM) 的所有流量(包括后台流量和更新)如果与下一个跃点路由匹配,都将路由到 Secure Web Proxy 实例。
  • 对于某个区域中的 VPC 网络,您只能部署一个 Secure Web Proxy 作为下一个跃点 (SWPaNH) 实例。
  • 使用 all_ports 功能时,存在以下限制:
    • all_ports 功能仅适用于 type: SECURE_WEB_GATEWAY 的网关。
    • 只有在 routingMode 设置为 NEXT_HOP_ROUTING_MODE 时,您才能使用 all_ports: true 配置。
    • 您不能同时为同一网关资源指定 all_ports: true 配置并在端口字段中列出各个端口。您必须仅使用一种类型的端口配置,而不能同时使用两种。
    • 在给定的网络和区域内,您不能同时部署一个处于下一个跃点模式且配置为 all_ports: true 的 Secure Web Proxy 实例,以及另一个处于任何其他模式的 Secure Web Proxy 实例。