Google Cloud Virtual Private Cloud (VPC) 网络的路由是虚拟的,分布式并且可扩展的,VPC 网络中没有任何物理路由设备。Google Cloud 将来自虚拟机中的网络流量直接发送到 VPC 网络内部或外部的目的地。与其他云提供商不同的是,GCP 通过在软件中分离数据平面、控制平面和管理平面来增强网络可靠性,简化网络管理并促进网络基础设施的快速变化。这样有助于缩短企业将产品和服务推向市场所需的时间,从而提供竞争优势。
本博客从虚拟机 (VM) 的角度探讨了各种路由的可用选项,使您能够无缝访问:
部署在同一 VPC 或对等 VPC 内的应用程序(基于微服务或 VM)
Google Cloud 提供的托管服务,例如 BigQuery、Cloud SQL 以及 Vertex AI Platform
托管在 Google Cloud 上的 SaaS 解决方案
托管在本地或其他云超大规模服务器中的服务
能够通过互联网访问的公共或私有服务
此外,我们还探讨了基于策略的路由如何促进 Google Cloud 中 VPC 内的流量检查。
路由类型和下一跳
Google Cloud VPC 路由有三个主要元素构成:无类别域间路由(CIDR)格式的目标前缀、下一跳和优先级。除了仅依赖目标 IP 地址之外,基于策略的路由还允许根据其他因素(例如协议和源 IP 地址)选择下一跳,从而可以将防火墙等设备插入网络转发路径中。
下图显示了来自 Google Cloud 中虚拟机的数据包潜在下一跳目的地。其中包括虚拟机、IP 地址、负载均衡器和 VPN 隧道等目的地。它还说明了 Google Cloud 中可用的不同类型的路由条目。
图 1:来自虚拟机数据包的路由类型和跳转选项
以下部分描述了各种类型的路由和每种类型路由的下一跳及其用例。
系统生成的路由
1a. 子网路由
子网路由指定了到达匹配目标的 Google Cloud 子网的目标路径,用于 VPC 网络内的虚拟机、Private Service Connect (PSC)端点和内部负载均衡器等资源。其创建和删除与子网的生命周期相关。子网路由有三种类型:本地、对等互连和 Network Connectivity Center (NCC)子网路由。
假设您正在开发一个使用多种服务的电子商务应用程序。在与处理订单的客户端计算机相同的子网内,您可以方便地与多种服务进行通信:
A. 托管在同一子网中的产品目录服务
B. 托管在单独子网中的负载均衡订单验证服务
C. 使用 PSC 终端节点位于不同 VPC/组织中的第三方支付处理服务
D. 托管在 VPC spoke 中的通用货件处理服务,即 NCC Hub,尽管 VPC spoke(vpc1 和 NCC 的其他 VPC 网络)之间的 IP 地址重叠,但仍可使用私有 NAT 访问
Google Cloud 为所有这些场景提供了开箱即用的路由,不需要任何额外的自定义路由配置。
1b. 系统生成的默认路由
当您创建 VPC 网络时,系统会为最广泛的目标 0.0.0.0/0 生成默认路由,并将默认互联网网关作为下一跳。默认互联网网关有助于访问远程 IP 地址、默认域的 Google API 以及私有域 private.googleapis.com 和 restricted.googleapis.com。
您可以删除此默认路由,也可以替换为具有更具体目标或不同下一跳的自定义静态路由。例如要使用私有域(private.googleapis.com)访问 Google API,可以创建一个目标为 199.36.153.8/30,下一跳为默认互联网网关的静态路由。有关更多信息,请查看系统生成的默认路由。
自定义路由
2a. 静态路由
您可以根据需要为指定的目标 CIDR 范围创建静态路由。此路由可以将数据包定向到各种目标。这包括默认互联网网关、虚拟机(VM)、IP 地址、VPN 隧道或内部直通负载均衡器。您可以控制数据包的路径并优化网络流量。请注意,目标 CIDR 范围不能与本地、对等和网络连接中心子网路由冲突。有关更多信息,请查看有关静态路由的文档。
#Create a custom static route gcloud compute routes create route1 \\ --network=vpc1 \\ --destination-range=10.200.0.0/24 \\ --priority=100 \\ --next-hop-address=10.20.0.2 |
VPC1 路由表:
2b. 动态路由
动态路由由 Cloud Router 根据通过边界网关协议(BGP)收到的消息创建、更新和删除。下一跳可以是 VLAN 连接、Cloud VPN 隧道或 Network Connectivity Center 中的路由器设备 VM 实例。根据 VPC 路由模式(区域或全局),这些动态路由将应用于 VPC 网络的单个区域或所有区域中的资源。请参阅创建 HA VPN 网关以连接 VPC 网络,以创建 HA VPN 网关来连接两个 VPC 网络并在它们之间动态交换路由。
以下是通过 BGP 会话接收的动态路由的示例。
VPC 网络对等互连路由
当 VPC 网络通过 VPC 对等连接与另一个 VPC 网络相连时,对等子网路由定义到达对等网络中资源的路径。子网路由始终交换且无法禁用,私用的公共 IPv4 地址的 IPv4 子网路由除外。请参阅路由交换选项文档以更加深入的了解与对等网络共享子网、静态和动态路由的各种方法。此外需要注意的是,根据对等路由类型,每个网络或对等组的子网、静态和动态路由数量具有配额。
#VPC peering #create a network and a subnetwork gcloud compute networks create vpc2 --subnet-mode=custom gcloud compute networks subnets create subneta --network=vpc2 \\ --range=10.10.100.0/24 \\ --region=us-east1 #create peerings between vpc1 and vpc2 gcloud compute networks peerings create vpc1-vpc2-peering --network=vpc1 --peer-network=vpc2 gcloud compute networks peerings create vpc2-vpc1-peering --network=vpc2 --peer-network=vpc1 |
us-east1 区域的 VPC1 路由:
us-east1 区域的 VPC2 路由:
Network Connectivity Center 路由
Network Connectivity Center 支持连接到名为 hub 的集中管理资源的 spoke 资源之间提供网络连接。Network Connectivity Center 支持两种类型的 spoke:VPC spoke 和 Hybrid spoke(VLAN、VPN 隧道或路由器设备 VM)。借助 Network Connectivity Center,您可以在 VPC 网络之间、本地到 VPC 网络(站点到云)或使用 Google 网络作为广域网(站点到站点)的外部站点之间实现连接。
Network Connectivity Center 子网路由是连接到 Network Connectivity Center Hub 的 VPC spoke 中的子网 IP 地址范围。以下是 VPC 路由表和 Network Connectivity Center 中心路由表的示例,其中包含两个 VPC spoke(ncc-spoke1 支持 vpc1,ncc-spoke2 支持 vpc3)的中心(ncc-hub1)的下一跳。每个 VPC spoke的 VPC 网络路由表和 Network Connectivity Center 中心路由表都会由 Google Cloud 自动更新。
由于 CIDR 范围与其他 spoke 重叠,VPC spoke 可以跳过导出其任何子网。如果您使用 gcloud 命令,可以使用 –exclude-export-ranges 选项完成此操作。
gcloud compute networks create vpc3 --subnet-mode=custom gcloud compute networks subnets create subnetb --network=vpc3 --range=10.10.50.0/24 --region=us-east1 # NCC hub and VPC spokes gcloud network-connectivity hubs create ncc-hub1 gcloud network-connectivity spokes linked-vpc-network create ncc-spoke1 \\ --hub=ncc-hub1 \\ --vpc-network=vpc1 \\ --global gcloud network-connectivity spokes linked-vpc-network create ncc-spoke2 \\ --hub=ncc-hub1 \\ --vpc-network=vpc3 \\ --global |
VPC 网络 (vpc1) 的 VPC 路由表
VPC 网络 (vpc3) 的 VPC 路由表
Hub 路由表:
基于策略的路由 (PBR)
到目前为止,您已经了解了如何根据数据包的目标 IP 地址确定下一跳。除此之外,基于策略的路由还允许您根据数据包的协议和源 IP 地址以及目标 IP 地址指定下一跳。在这种情况下,流量被重定向到内部直通网络负载均衡器,这使得防火墙等设备能够插入网络流量路径,因为基于策略的路由在评估其他路由之前进行评估。请注意,除了策略路由,任何其他路由类型的目标都不允许与本地、对等或 Network Connectivity Center 子网路由的目标匹配或适合。
在以下示例中,默认情况下,本地子网路由将流量从 VM1 发送到 VM2。添加基于策略的路由之后,VM1 到 VM2 的流量现在将重定向到 L4 负载均衡器,该负载均衡器将流量转发到使用托管实例组实现的网络虚拟设备(NVA)。在 NVA 中,流量将接受检查,然后才被允许到达其最终目的地 VM2。
#Create a Policy based route (PBR) from VM1 to VM2 gcloud network-connectivity policy-based-routes create pbr1 \\ --source-range=10.10.0.2/32 \\ --destination-range=10.10.0.3/32 \\ --ip-protocol=ALL \\ --protocol-version=IPv4 \\ --network="projects/PROJECT_ID/global/networks/vpc1" \\ --next-hop-ilb-ip=10.10.10.20 \\ --description='intra-vpc traffic inspection route' \\ --priority=500 \\ --tags=client |
VPC1 route table:
该基于策略的路由可以扩展为检查来自虚拟机的任何出站流量,但有一些例外。例如,Google Cloud 不支持使用基于策略的路由将流量路由到 Google API 和服务。
基于策略的路由可应用于所有虚拟机或通过网络标记选择的特定虚拟机,或应用于通过 Cloud Interconnect VLAN 连接进入 VPC 网络的流量。基于策略的路由不会通过 VPC 网络对等互连进行交换。
特殊路由路径
VPC 网络为某些服务提供特殊路由,这些路由既不会出现在您的 VPC 网络路由表中,也无法移除。例如,对外部直通网络负载均衡器的响应或健康检查。但是,可以使用 VPC 防火墙规则或 Cloud NGFW 防火墙策略允许或拒绝流量。
决策表
下表总结了虚拟机(VM)访问 Google Cloud、本地或其他云中托管的服务可能方案,以及每种方案的潜在路由选项。
场景 | 路由选项 |
外部负载均衡器、Google 前端、身份感知代理 (IAP)、Cloud DNS、Service Directory、运行状况检查、无服务器 VPC 访问、全球 Google API 的 PSC 端点的路径 | 特殊路由路径 |
托管在同一个 VPC 中的服务 | 系统生成的子网路由 |
托管在另一个 VPC 中的服务 |
|
Google API |
|
互联网 | 系统生成的默认或自定义静态路由到默认互联网网关 |
服务托管在其他云或本地 | 动态路由 |
VPC 内流量检查 | 基于策略的路由 |
结论与后续步骤
在这篇博文中,您已经了解了 Google Cloud 中为来自虚拟机的数据包提供的各种路由类型,这些路由类型可帮助您根据工作负载需求开发网络拓扑。有关详细信息请参阅在 Google Cloud 中进行路由公开文档。您可能还想尝试基于策略的路由进行流量检查,并在实践:通过 SD-WAN 设备从 NCC 站点到云端中亲身体验一些 Network Connectivity Center 功能。
文章信息
相关推荐
