VPC 网络对等互连

Google Cloud VPC 网络对等互连连接两个 Virtual Private Cloud (VPC) 网络,以便每个网络中的资源相互通信。对等互连的 VPC 网络可以位于同一项目、同一组织的不同项目或不同组织的不同项目中。

规范

借助 VPC 网络对等互连,您可以执行以下操作:

连接性

  • VPC 网络对等互连支持连接VPC 网络,但不支持连接旧版网络。
  • VPC 网络对等互连在 VPC 网络对之间提供内部 IPv4 和 IPv6 连接。对等互连流量(在对等互连网络之间传输的流量)与同一 VPC 网络中的流量具有相同的延迟时间、吞吐量和可用性。
    • VPC 网络对等互连不提供传递性路由。例如,如果 VPC 网络 net-anet-b 使用 VPC 网络对等互连进行连接,并且 VPC 网络 net-anet-c 也使用 VPC 网络对等互连进行连接,则 VPC 网络对等互连不会提供 net-bnet-c 之间的连接。
    • 您无法使用 VPC 网络对等互连连接两个自动模式的 VPC 网络。这是因为对等互连的 VPC 网络始终交换使用专用内部 IPv4 地址的子网路由,并且自动模式 VPC 网络中的每个子网都使用在 10.128.0.0/9 CIDR 块范围内的子网 IP 地址范围。
    • 您可以将自定义模式 VPC 网络连接到自动模式 VPC 网络,只要该自定义模式 VPC 网络没有任何在 10.128.0.0/9 范围内的子网 IP 地址范围。
  • 当 VPC 网络对等互连交换通向目的地外部 IPv6 地址的路由时,还会提供与以下资源的目的地外部 IPv6 地址范围的特定外部 IPv6 连接:
    • 双栈虚拟机 (VM) 实例网络接口
    • 用于外部协议转发的转发规则
    • 外部直通式网络负载均衡器的转发规则
  • VPC 网络对等互连同时支持 IPv4 和 IPv6 连接。您可以在包含双栈子网的 VPC 网络上配置 VPC 网络对等互连。

管理

  • 对等互连的 VPC 网络在管理上保持独立。根据对等互连配置,仅会交换路由。
  • 如需建立对等互连连接,每个 VPC 网络的网络管理员必须创建与其他 VPC 网络的对等互连连接。任一 VPC 网络的网络管理员都可以断开对等互连连接。
  • 对等互连关联资源的每一方都是独立设置的。只有当双方的配置匹配时,对等互连才是有效的。任何一方都可以随时选择删除对等互连关联资源。
  • 创建对等互连连接不会为您授予其他 VPC 网络的任何 Identity and Access Management (IAM) 角色。例如,如果您具有一个网络的 Compute Network Admin 角色或 Compute Security Admin 角色,则不会成为另一个网络的网络管理员或安全管理员。

IAM 权限

  • Compute Network Admin 角色 (roles/compute.networkAdmin) 具有用于创建和删除 VPC 网络对等互连的 IAM 权限
  • 如果自定义角色提供以下权限,您可以使用该自定义角色:
    • compute.networks.addPeering
    • compute.networks.updatePeering
    • compute.networks.removePeering
    • compute.networks.listPeeringRoutes

网络安全

VPC 网络对等互连不会交换 VPC 防火墙规则防火墙政策

对于 VPC 防火墙规则:

  • 使用网络标记定义其目标的防火墙规则仅会解析为防火墙规则的 VPC 网络中的实例。虽然对等互连的 VPC 网络的安全管理员可以使用相同的网络标记来定义对等互连 VPC 网络中的防火墙规则的目标,对等互连 VPC 中的防火墙规则的目标不包括您的 VPC 网络中的实例。同样,使用网络标记定义其来源的入站防火墙规则仅会解析为防火墙规则的 VPC 网络中的实例。

  • 使用服务账号定义其目标的防火墙规则仅会解析为防火墙规则的 VPC 网络中的实例。根据 IAM 权限,对等互连 VPC 网络的安全管理员可能可以使用同一服务账号来定义对等互连 VPC 网络中的防火墙规则的目标,但对等互连 VPC 网络中的防火墙规则的目标不包括 VPC 网络中的实例。同样,使用服务账号定义其来源的入站防火墙规则只会解析为防火墙规则的 VPC 网络中的实例。

网络防火墙政策中的规则可以使用与网络标记不同的安全标记来标识目标和来源:

  • 当使用标记为网络防火墙政策中的入站或出站规则指定目标时,标记只能识别其范围限定为的 VPC 网络中的目标。

  • 当使用标记为网络防火墙政策中的入站规则指定来源时,标记可以识别其范围限定为的 VPC 网络以及与其范围限定为的 VPC 网络连接的任何对等互连 VPC 网络中的来源。如需了解详情,请参阅防火墙的标记

每个 VPC 网络都包含隐式防火墙规则。由于隐式拒绝入站防火墙规则,每个 VPC 网络的安全管理员必须在防火墙政策中创建入站允许防火墙规则或规则。这些规则的来源可以包括对等互连 VPC 网络的 IP 地址范围。

由于隐式允许出站防火墙规则,您无需创建出站允许防火墙规则或防火墙政策中的规则,即可允许数据包发送到对等互连 VPC 网络中的目的地,除非您的网络包含出站拒绝规则。

DNS 支持

对等互连 VPC 网络中的资源不能使用由本地 VPC 网络创建的 Compute Engine 内部 DNS 名称

对等互连的 VPC 网络不能使用仅针对本地 VPC 网络获得授权的 Cloud DNS 托管式专用区域。如需使 DNS 名称可用于对等互连 VPC 网络中的资源,请使用以下方法之一:

内部负载均衡器支持

本地 VPC 网络中的客户端可以访问对等 VPC 网络中的内部负载均衡器。如需了解详情,请参阅以下负载均衡器文档的使用 VPC 网络对等互连部分:

对等互连的网络可以交换将内部直通式网络负载均衡器用作下一个跃点的静态路由。如需了解详情,请参阅路由交换选项

对等互连组和配额

VPC 对等互连配额取决于一个称为对等互连组的概念。每个 VPC 网络都有自己的对等互连组,其中包含自身以及使用 VPC 网络对等互连与该 VPC 网络连接的所有其他 VPC 网络。在最简单的场景中,如果两个 VPC 网络 net-anet-b 彼此对等互连,则有两个对等互连组:一个从 net-a 的角度来看,另一个从 net-b 的角度来看。

如需详细了解 VPC 网络对等互连配额,请参阅:

路由交换选项

当一个 VPC 网络与对等互连 VPC 网络共享本地路由时,它会导出这些路由。然后,对等互连的 VPC 网络可以导入路由。子网路由(使用以非公开方式使用的公共 IPv4 地址的 IPv4 子网路由除外)始终会交换。

通过 VPC 网络对等互连配置,您可以控制以下各项:

  • 是否交换 IPv6 路由。
  • 是否导出或导入使用以非公开方式使用的公共 IPv4 地址的子网的路由。
  • 静态和动态路由是否会同时导出或导入。

您可以在建立对等互连之前或在对等互连连接处于活跃状态时更新配置。

VPC 网络对等互连不提供:

  • 用于控制特定子网路由、静态路由和动态路由交换的精细方法。
  • 对交换基于政策的路由的支持。

用于交换子网路由的选项

下表介绍了子网路由的路由交换选项:

路由类型 路由导出条件 路由导入条件
使用专用 IPv4 地址范围的 IPv4 子网路由(主要和次要 IPv4 子网范围) 始终会导出

无法停用
始终会导入

无法停用
使用以非公开方式使用的公共 IPv4 地址范围的 IPv4 子网路由(主要和次要 IPv4 子网范围) 默认会导出

通过使用 --export-subnet-routes-with-public-ip 标志控制导出
默认不会导入

通过使用 --import-subnet-routes-with-public-ip 标志控制导入
内部 IPv6 子网范围
(ipv6-access-type=INTERNAL)
默认不会导出

通过设置 --stack-type=IPV4_IPV6 启用导出
默认不会导入

通过设置 --stack-type=IPV4_IPV6 启用导入
外部 IPv6 子网范围
(ipv6-access-type=EXTERNAL)
默认不会导出

通过设置 --stack-type=IPV4_IPV6 启用导出
默认不会导入

通过设置 --stack-type=IPV4_IPV6 启用导入

用于交换静态路由的选项

下表介绍了静态路由的路由交换选项。

路由类型 路由导出条件 路由导入条件
带有网络标记的静态路由(所有下一个跃点类型 无法导出 无法导入
使用默认互联网网关的下一个跃点的静态路由 无法导出 无法导入
使用不同于默认互联网网关的下一个跃点的 IPv4 静态路由(不带网络标记) 默认不会导出

通过使用 --export-custom-routes 标志控制导出
默认不会导入

通过使用 --import-custom-routes 标志控制导入
使用虚拟机实例作为下一个跃点的 IPv6 静态路由(不带网络标记) 默认不会导出

当对等互连的栈类型设置为 --stack-type=IPV4_IPV6 时,通过使用 --export-custom-routes 标志控制导出
默认不会导入

当对等互连的栈类型设置为 --stack-type=IPV4_IPV6 时,通过使用 --import-custom-routes 标志控制导入

用于交换动态路由的选项

下表介绍了动态路由的路由交换选项。

路由类型 路由导出条件 路由导入条件
动态 IPv4 路由 默认不会导出

通过使用 --export-custom-routes 标志控制导出
默认不会导入

通过使用 --import-custom-routes 标志控制导入
动态 IPv6 路由 默认不会导出

当对等互连的栈类型设置为 --stack-type=IPV4_IPV6 时,通过使用 --export-custom-routes 标志控制导出
默认不会导入

当对等互连的栈类型设置为 --stack-type=IPV4_IPV6 时,通过使用 --import-custom-routes 标志控制导入

交换静态和动态路由的优点

当一个 VPC 网络导出静态和动态路由,而另一个 VPC 网络导入这些路由时,导入网络可以将数据包直接发送到其下一个跃点位于对等 VPC 网络的每个已导入静态或动态路由的下一个跃点。

本地 VPC 网络的网络管理员可以使用 --export-custom-routes 标志同时控制该网络的静态和动态路由的导出。相应对等互连 VPC 网络的网络管理员可以使用 --import-custom-routes 标志控制这些静态和动态路由的导入。如需了解详情,请参阅忽略的路由子网路由和对等互连子网路由交互以及子网和静态路由交互

在以下场景中,从对等互连的 VPC 网络导入静态和动态路由非常有用:

  • 如果对等互连的 VPC 网络包含基于路由的 GKE 集群,并且您需要将数据包发送到这些集群中的 Pod。Pod IP 地址是作为对等互连 VPC 网络中的静态路由的目的地范围实现的。
  • 如果您需要在本地网络与对等互连的 VPC 网络之间提供连接。假设本地 VPC 网络包含具有下一个跃点 Cloud VPN 隧道、Cloud Interconnect 连接 (VLAN) 或连接到本地网络的路由器设备的动态路由。要提供从对等互连 VPC 网络到本地网络的路径,本地 VPC 网络的网络管理员可启用自定义路由导出,而对等互连的 VPC 网络的网络管理员可启用自定义路由导入。如需提供从本地网络到对等互连 VPC 网络的路径,本地 VPC 网络的网络管理员必须在为连接到本地网络的 Cloud VPN 隧道、Cloud Interconnect 连接 (VLAN) 或路由器设备管理 BGP 会话的 Cloud Router 路由器上使用 Cloud Router 路由器自定义路由通告。这些自定义路由通告的内容必须包含对等互连 VPC 网络的子网 IP 地址范围。

忽略的路由

即使 VPC 网络导入路由,在以下情况下,它也可能会忽略导入的路由:

  • 如果本地 VPC 网络具有目的地相同或更具体(子网掩码更长)的路由,则本地 VPC 网络始终使用其本地路由。

  • 如果本地 VPC 网络不包含数据包目的地的最具体路由,但两个或更多个对等互连 VPC 网络包含该数据包的同一个最具体的目的地,则 Google Cloud 会使用内部算法,仅从一个对等互连的 VPC 网络中选择下一个跃点。此选择在考虑路线优先级之前进行,您无法配置此行为。最佳实践是避免进行此配置,因为添加或移除对等互连的 VPC 网络可能会导致路由顺序发生意外更改。

如需详细了解上述情况,请参阅路由顺序

对于双栈对等互连,如果导入 IPv6 路由的本地 VPC 网络没有任何双栈子网,则它从对等互连的 VPC 网络接收的 IPv6 路由都无法使用。此外,如果设置了 constraints/compute.disableAllIpv6 组织政策限制条件,则网络管理员可能无法创建双栈子网。

子网路由和对等互连子网路由交互

对等互连的 VPC 网络中的 IPv4 子网路由不能重叠:

  • 对等互连禁止相同的 IPv4 子网路由。例如,两个对等互连的 VPC 网络都不能同时具有其目的地为 100.64.0.0/10 的 IPv4 子网路由。
  • 对等互连禁止子网路由包含在对等互连子网路由中。例如,如果本地 VPC 网络具有其目的地为 100.64.0.0/24 的子网路由,则对等互连的 VPC 网络都不能具有其目的地为 100.64.0.0/10 的子网路由。

在以下情况下,Google Cloud 会对 IPv4 子网路由强制实施上述条件:

  • 首次使用 VPC 网络对等互连连接 VPC 网络时。
  • 网络对等互连时。
  • 进行对等互连配置更改时,例如,启用导入具有以非公开方式使用的公共 IP 地址的子网 IPv4 路由功能。

在您对等互连网络时,如果以下任何操作导致重叠,Google Cloud 会返回错误:

IPv6 子网路由(内部和外部)根据定义是唯一的。两个 VPC 网络不能使用相同的内部或外部 IPv6 子网范围。例如,如果一个 VPC 网络使用 fc:1000:1000:1000::/64 作为 IPv6 子网范围,则 Google Cloud 中的其他任何 VPC 网络都不能使用 fc:1000:1000:1000::/64,无论这些 VPC 网络是否使用 VPC 网络对等互连进行连接。

子网和静态路由交互

Google Cloud 要求子网路由和对等互连子网路由具有最具体的目的地 IPv4 或 IPv6 范围。在任何 VPC 网络中,本地静态路由的目的地都不能与本地子网路由完全匹配,也不能在其范围内。如需更详细地了解此场景,请参阅与静态路由的交互

此概念通过以下两条规则扩展到 VPC 网络对等互连:

  • 本地静态路由的目的地不能与对等互连子网路由完全匹配,也不能在其范围内。如果存在本地静态路由,Google Cloud 会强制执行以下各项:

    • 如果对等互连配置导致导入有冲突的子网路由,则您无法与已包含如下子网路由的 VPC 网络建立新的对等互连连接:该子网路由与本地子网路由的目的地完全匹配或包含该目的地。例如:

      • 如果存在目的地为 10.0.0.0/24 的本地静态路由,则您无法与包含如下 IPv4 子网路由的 VPC 网络建立新的对等互连连接:该子网路由的目的地与 10.0.0.0/24 完全匹配或包含 10.0.0.0/24(例如 10.0.0.0/8)。

      • 当预期的对等互连堆栈类型为 IPV4_IPV6 时,如果存在目标为 2001:0db8:0a0b:0c0d::/96 的本地静态路由,则您无法与包含 2001:0db8:0a0b:0c0d::/96 的 VPC 网络建立新的对等互连连接,其 IPv6 子网路由目标与它完全匹配或包含它。在这种情况下,唯一可能的子网 IPv6 地址范围是 2001:0db8:0a0b:0c0d::/64,因为 Google Cloud 中的子网 IPv6 地址范围必须使用 64 位子网掩码长度。

    • 如果更新后的对等互连配置导致导入有冲突的子网路由,则无法更新现有对等互连连接。例如:

      • 假设两个 VPC 网络已建立对等互连,但它们目前没有使用以非公开方式使用的公共 IPv4 地址范围导出和导入 IPv4 子网路由。第一个 VPC 网络中存在目的地为 11.0.0.0/24 的本地静态路由,而对等互连的 VPC 网络中存在目的地为 11.0.0.0/8 的子网路由。您无法同时将对等互连的 VPC 网络配置为使用以非公开方式使用的公共 IPv4 地址导出子网路由,并将第一个 VPC 网络配置为使用以非公开方式使用的公共 IPv4 地址导入子网路由。

      • 假设两个 VPC 网络已建立对等互连,并且对等互连栈类型仅为 IPv4。第一个 VPC 网络中存在目的地为 2001:0db8:0a0b:0c0d::/96 的本地静态路由,而对等互连的 VPC 网络中存在目的地为 2001:0db8:0a0b:0c0d::/64 的 IPv6 子网路由。您无法将对等互连栈类型更改为 IPV4_IPV6

    • 反之,如果 VPC 网络已使用 VPC 网络对等互连连接,则您无法执行以下操作:

      • 创建其目的地与导入的对等互连子网路由完全匹配或在其范围内的新的本地静态路由。

      • 在对等互连的 VPC 网络中创建与现有的本地静态路由完全匹配或包含该静态路由的新子网地址范围。

  • 对等互连静态路由的目的地不能与本地子网路由完全匹配,也不能在其范围内。如果存在本地子网路由,Google Cloud 会禁止以下各项:

    • 如果对等互连配置导致从对等方导入静态路由,则您无法与已包含与本地 VPC 网络子网路由的目的地完全匹配或在其范围内的静态路由的 VPC 网络建立新的对等互连连接。例如:

      • 如果存在 10.0.0.0/8 的本地子网路由,则您无法使用目标与 10.0.0.0/8 完全匹配或在 10.0.0.0/8 范围内的静态路由与 VPC 网络建立对等互连连接(例如 10.0.0.0/24)。

      • 当预期的对等互连栈类型为 IPV4_IPV6 时,如果存在 2001:0db8:0a0b:0c0d::/64 的本地子网路由,则您无法与包含其目的地与 2001:0db8:0a0b:0c0d::/64 完全匹配或在 2001:0db8:0a0b:0c0d::/64 范围内(例如 2001:0db8:0a0b:0c0d::/96)的静态路由的 VPC 网络建立对等互连连接。

    • 如果更新后的对等互连配置导致导入有冲突的静态路由,则无法更新现有对等互连连接。

    • 反之,如果 VPC 网络已使用 VPC 网络对等互连连接,则您无法执行以下操作:

      • 创建其目的地与导入的对等互连静态路由完全匹配或包含该静态路由的新的本地子网路由。
      • 在对等互连的 VPC 网络中创建其目的地与现有的本地子网路由完全匹配或在其范围内的新静态路由。

动态路由模式的影响

VPC 网络的动态路由模式决定了应用从该网络中的 Cloud Router 路由器获知的前缀作为本地动态路由的区域。如需详细了解此行为,请参阅动态路由模式的影响

此概念已扩展到 VPC 网络对等互连。导出 VPC 网络(包含获知这些动态路由前缀的 Cloud Router 路由器的网络)的动态路由模式决定了可以在对等网络中对其进行编程的对等互连动态路由的区域:

  • 如果导出 VPC 网络的动态路由模式为区域级模式,则该网络仅会导出获知前缀的 Cloud Router 路由器所在区域中的动态路由。

  • 如果导出 VPC 网络的动态路由模式为全球模式,则该网络会导出所有区域中的动态路由。

在这两种情况下,导入 VPC 网络的动态路由模式都无关紧要。

如需查看说明此行为的示例,请参阅本地 VPC 网络和具有本地连接的对等 VPC 网络

子网和动态路由交互

本地或对等互连子网路由与动态路由之间的冲突按与动态路由的交互中所述进行解决。

VPC 网络对等互连示例

以下示例演示了两个常见的 VPC 网络对等互连场景。

本地 VPC 网络和具有本地连接的对等 VPC 网络

在此示例中,设置了以下网络对等互连:

  • network-anetwork-b 对等互连,network-bnetwork-a 对等互连。
  • network-a 包含两个子网,其中每个子网位于单独的区域中。network-b 包含单个子网。
  • network-b 使用动态路由通过 Cloud VPN 隧道连接到本地网络。(如果隧道被替换为 Cloud Interconnect VLAN 连接,这些原则同样适用。)
  • network-b 的对等互连连接使用 --export-custom-routes 标志进行配置,network-a 的对等互连连接使用 --import-custom-routes 标志进行配置。

为了提供从本地到 network-anetwork-b 中的子网的连接,network-b 中的 Cloud Router 路由器必须配置为使用自定义路由通告。例如,Cloud Router 路由器仅会通告自定义前缀 custom-prefix-1,其中包含 network-b 中的子网范围和 network-a 中的子网范围。

us-west1 中的 Cloud Router 路由器从本地路由器获知 on-premises-prefixon-premises-prefix 不会造成任何冲突,因为它的范围比子网路由和对等互连子网路由更广泛。换言之,on-premises-prefix 与任何子网路由或对等互连子网路由都不完全匹配,也不在其范围内。

下表汇总了上述示例中指定的网络配置:

网络名称 网络组件 IPv4 范围 IPv6 范围 区域

network-a

subnet-a

10.0.0.0/24

fc:1000:1000:1000::/64

us-west1

network-a

subnet-b

10.0.1.0/24

fc:1000:1000:1001::/64

europe-north 1

network-b

subnet-c

10.0.2.0/23

fc:1000:1000:1002::/64

us-west1

network-b

Cloud Router

10.0.0.0/22

fc:1000:1000:1000::/64

us-west1

本地网络

本地路由器

10.0.0.0/8

fc:1000:1000:1000::/56

不适用

无论 network-a 的动态路由模式如何,以下路由特征都适用:

  • network-b 的动态路由模式为全球模式时,network-b 中的 Cloud Router 路由器获知的 On-premises prefix 会作为动态路由添加到 network-b 的所有区域中,并作为对等互连动态路由添加到 network-a 的所有区域中。如果防火墙规则配置正确,则 vm-a1vm-a2vm-b 可以与具有 IPv4 地址 10.5.6.7(或 IPv6 地址 fc:1000:1000:10a0:29b::)的本地资源进行通信。

  • 如果 network-b 的动态路由模式更改为区域级模式,则 network-b 中的 Cloud Router 路由器获知的 On-premises prefix 仅会作为动态路由添加到 network-bus-west1 区域中,并作为对等互连动态路由添加到 network-aus-west1 区域中。如果防火墙规则配置正确,则只有 vm-a1vm-b 才能与具有 IPv4 地址 10.5.6.7(或 IPv6 地址 fc:1000:1000:10a0:29b::)的本地资源通信,因为这是 Cloud Router 路由器所在区域中的唯一虚拟机。

中转网络

在以下示例中,network-b 充当中转网络

  • network-anetwork-b 对等互连,network-bnetwork-a 对等互连。
  • network-cnetwork-b 对等互连,network-bnetwork-c 对等互连。
  • network-b 使用动态路由通过 Cloud VPN 隧道连接到本地网络。如果隧道被替换为 Cloud Interconnect VLAN 连接,这些原则同样适用。
    • 为了提供从本地到 network-anetwork-bnetwork-c 中的子网的连接,network-b 中的 Cloud Router 路由器配置为使用自定义路由通告。例如,Cloud Router 路由器会通告 network-b 中的子网路由以及包含 network-anetwork-c 中的子网路由的自定义前缀。
    • 根据子网和动态路由交互network-b 中的 Cloud Router 路由器会获知本地前缀,并在 network-b 中创建动态路由。
  • network-bnetwork-a 以及从 network-bnetwork-c 的对等互连连接使用 --export-custom-routes 标志进行配置。从 network-anetwork-b 以及从 network-cnetwork-b 的对等互连连接使用 --import-custom-routes 标志进行配置。
    • 根据子网和动态路由交互network-b 中的 Cloud Router 路由器还会在 network-anetwork-c 中创建对等互连动态路由。

如果防火墙配置正确,则可能出现以下连接场景:

  • network-a 中的虚拟机实例可以访问 network-b 中的其他虚拟机和本地系统。
  • network-c 中的虚拟机实例可以访问 network-b 中的其他虚拟机和本地系统。
  • network-b 中的虚拟机实例可以访问 network-anetwork-c 中的其他虚拟机以及本地网络中的系统。

由于 VPC 网络对等互连不具有传递性,因此除非您也使用 VPC 网络对等互连连接网络 network-anetwork-c,否则 network-anetwork-c 中的虚拟机实例无法相互通信。

价格

常规网络价格适用于 VPC 网络对等互连。

后续步骤