本页概述了如何创建 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 政策
将 Secure Web Proxy 实例部署为下一个跃点
控制台
在 Google Cloud 控制台中,前往网络代理页面。
点击 创建安全 Web 代理。
输入要创建的网络代理的名称,例如
myswp。输入 Web 代理的说明,例如
My new swp。对于路由模式,选择下一个跃点选项。
在区域列表中,选择要创建 Web 代理的区域。
在网络列表中,选择要在其中创建 Web 代理的网络。
在子网列表中,选择要在其中创建 Web 代理的子网。
可选:输入 Secure Web Proxy IP 地址。您可以输入上一步中创建的子网中安全 Web 代理 IP 地址范围内的 IP 地址。 如果您未输入 IP 地址,安全 Web 代理实例会自动从所选子网中选择一个 IP 地址。
在证书列表中,选择要用于创建 Web 代理的证书。
在政策列表中,选择您创建的要与 Web 代理相关联的政策。
点击创建。
Cloud Shell
使用文本编辑器创建
gateway.yaml文件。将以下代码添加到
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创建 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:路由的优先级;数字越大,优先级越低。确保您的路由的优先级在数值上低于默认互联网路由,后者通常为1000TAGS:您将与 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 实例。