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

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

默认情况下,SecureWebProxy 实例的 RoutingMode 值为 EXPLICIT_ROUTING_MODE,这意味着您必须配置工作负载,才能明确地将 HTTP(S) 流量发送到 Secure Web Proxy。您可以将安全 Web 代理实例的 RoutingMode 设置为 NEXT_HOP_ROUTING_MODE,这样便可定义将流量定向到安全 Web 代理实例的路由,而无需配置各个客户端以指向安全 Web 代理实例。

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

为 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 代理”页面

  2. 点击 创建安全 Web 代理。

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

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

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

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

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

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

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

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

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

  12. 点击创建。

Cloud Shell

  1. 使用文本编辑器创建 gateway.yaml 文件。

  2. 将以下代码添加到 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
    

    可选:如需将网关配置为监听所有端口(从 1 到 65535),请在 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
    

    可选:如需允许其他 Google Cloud区域的客户端应用连接到您的代理,请在创建 Secure Web Proxy 实例时启用全球访问权限。

    在 gateway.yaml 文件中,添加 allowGlobalAccess 字段并将其设置为 true。

    重要提示:您只能在创建 Secure Web Proxy 实例时启用 allowGlobalAccess。此设置之后无法配置。

    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
    allowGlobalAccess: true
    
  3. 创建 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 地址范围的流量定向到安全 Web 代理实例。首次配置基于政策的路由时,您还必须配置另一条基于政策的路由作为默认路由。

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

创建静态路由

如需将流量路由到 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_IP:gateway.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_MODE 的 SecureWebProxy 实例支持 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 实例。