VPC 网络对等互连概览

Google Cloud VPC 网络对等互连允许跨两个 Virtual Private Cloud (VPC) 网络的内部 IP 地址连接(无论它们是否属于同一个项目或组织)。

VPC 网络对等互连使您可以连接 VPC 网络,以便不同 VPC 网络中的工作负载可在内部进行通信。流量保留在 Google 的网络中,不会通过公共互联网。

VPC 网络对等互连在以下环境中非常有用:

  • Google Cloud 中的 SaaS(软件即服务)生态系统。您可以在组织内部和组织之间的不同 VPC 网络中以私密方式提供服务。
  • 具有需要使用内部 IP 地址进行通信的多个网络管理网域的组织。

如果您的组织中有多个网络管理网域,则 VPC 网络对等互连允许您使用内部 IP 地址跨 VPC 网络提供服务。如果您向其他组织提供服务,则 VPC 网络对等互连允许您使用内部 IP 地址向这些组织提供这些服务。 如果您希望向其他企业提供服务,则能够跨不同组织提供服务这一点非常有用;如果您拥有或控制多个组织,这一点也非常有用。

与使用外部 IP 地址或 VPN 连接网络相比,VPC 网络对等互连有多项优势,其中包括:

  • 网络延迟:仅使用内部地址的连接可提供比使用外部地址的连接更低的延迟。
  • 网络安全:服务所有者不需要向公共互联网公开其服务,自然也无需应对相关风险。
  • 网络费用:对于使用外部 IP 通信的网络,即使流量处于同一可用区内,Google Cloud 也会按出站流量带宽价格收费。但是,如果网络采用对等互连,则可以使用内部 IP 进行通信,从而节省了出站流量费用。常规网络价格仍然适用于所有流量。

如需了解如何创建对等互连连接,请参阅使用 VPC 网络对等互连

关键属性

对等互连的 VPC 网络具有以下关键属性:

  • VPC 网络对等互连可与 Compute EngineGKEApp Engine 柔性环境配合使用。
  • 对等互连的 VPC 网络在管理上保持独立。路由、防火墙、VPN 和其他流量管理工具分别在各个 VPC 网络中加以管理和应用。
  • 对等互连关联资源的每一方都是独立设置的。只有当双方的配置匹配时,对等互连才是有效的。任何一方都可以随时选择删除对等互连关联资源。
  • 您可以为一个 VPC 网络配置对等互连以及导入和导出自定义路由的选项,即使在创建另一个 VPC 网络之前也可以如此。但是,路由交换只有在双方都已配置之后才会进行。
  • VPC 对等方会始终交换不使用以非公开方式重复使用的公共 IP 地址的子网路由。网络必须明确导入使用以非公开方式重复使用的公共 IP 地址的子网路由,然后才能接收这些路由。
  • 您可以交换自定义路由(静态路由和动态路由),具体取决于对等互连配置是配置为导入还是导出自定义路由。如需了解详情,请参阅导入和导出自定义路由
  • 子网路由和静态路由都是全球性的。动态路由可以是区域性的,也可以是全球性的,具体取决于 VPC 网络的动态路由模式。
  • 给定的 VPC 网络可以与多个 VPC 网络对等互连,但是存在限制
  • Compute Network Admin (roles/compute.networkAdmin) 角色中包含用于创建和删除 VPC 网络对等互连的 IAM 权限
  • 对等互连流量(在对等互连网络之间通信的流量)与同一网络中的不公开流量具有相同的延迟时间、吞吐量和可用性。
  • 对等互连流量的结算政策与同一网络中的不公开流量的结算政策相同。
  • 如果您是组织政策管理员,则您可以使用组织政策来限制哪些 VPC 网络可与组织中的 VPC 网络对等互连。您可以拒绝与特定 VPC 网络或与特定文件夹或组织中的 VPC 网络的对等互连连接。该限制条件适用于新的对等互连配置,不会影响现有连接。即使新政策拒绝新连接,现有的对等互连连接仍可继续有效。如需了解详情,请参阅 constraints/compute.restrictVpcPeering 限制条件。

限制

在与 VPC 网络进行对等互连时,请考虑以下限制:

  • 一个对等互连 VPC 网络中的子网 CIDR 范围不能与另一个对等互连网络中的静态路由重叠。此规则涵盖子网路由和静态路由。Google Cloud 会在以下情况检查重叠情况,并在发生重叠时生成错误。
    • 当您首次与 VPC 网络进行对等互连时
    • 当您在对等互连 VPC 网络中创建静态路由时
    • 在您在对等互连 VPC 网络中新建子网时
  • 动态路由可以与对等互连网络中的子网路由重叠。对于动态路由,系统将以静默方式丢弃与来自对等网络的子网路由重叠的目标范围。Google Cloud 使用子网路由。
  • VPC 网络对等互连仅支持 VPC 网络。旧版网络不支持对等互连。
  • 您无法停用子网路由交换或选择要交换的子网路由。建立对等互连后,可以通过直接对等互连的网络访问子网 IP 地址内的所有资源。VPC 网络对等互连未提供精细的路由控件来过滤出可以通过对等互连网络访问哪些子网 CIDR 范围。如果需要,您必须使用防火墙规则来过滤流量。以下类型的端点和资源可通过任何直接对等互连的网络访问:
    • 所有子网中的虚拟机 (VM) 内部 IP
    • 所有子网中经过内部负载平衡处理的 IP
  • 只有直接对等互连的网络才能进行通信。不支持传递性对等互连。换句话说,如果 VPC 网络 N1 与 N2 和 N3 对等互连,但是 N2 和 N3 未直接连接,则 VPC 网络 N2 不能与 VPC 网络 N3 通过 VPC 网络对等互连进行通信。
  • 您不能在一个对等互连的网络中使用另一个对等互连网络的标记或服务帐号。
  • 在一个网络内创建的 Compute Engine 内部 DNS 名称不能通过对等互连的网络访问。使用 IP 地址访问对等互连网络中的虚拟机实例。
  • 默认情况下,与 IP 别名配合使用时,支持将 VPC 网络对等互连与 GKE 配合使用。如果不使用 IP 别名,则可以导出自定义路由,以便能够从对等互连网络访问 GKE 容器。

路由顺序

仔细检查路由顺序,了解 Google Cloud 如何解决对等互连组网络之间的路由冲突。

导入和导出自定义路由

不使用以非公开方式重复使用的公共 IP 地址的子网路由始终在对等互连的网络之间进行交换。如果两个网络中的网络管理员都具有相应的对等互连配置,则您还可以交换自定义路由(包括静态和动态路由)以及以非公开方式重复使用公共 IP 地址的子网路由。

如果您导入自定义路由,则仅当对等网络导出自定义路由时,您的 VPC 网络才能接收这些路由。同样,如果您导出自定义路由,则仅当对等网络导入自定义路由时,该网络才能接收这些路由。

导入或导出自定义路由时,网络仅与直接对等方交换自定义路由。例如,如果您的 VPC 网络与多个网络对等互连,则您的网络从一个对等互连的网络导入的路由不会导出到其他对等互连的网络。

创建或修改对等互连配置时,您可以选择导入路由和/或导出路由。对等互连网络管理员在交换路由之前必须对其对等互连配置进行类似配置。此过程可确保在交换自定义路由之前这两个网络管理员明确同意交换自定义路由。

交换自定义路由的优点

通过与对等互连的 VPC 网络共享自定义路由,网络可以直接通过其对等互连的网络了解路由。例如,如果更新了对等互连的网络中的自定义路由,则您的 VPC 网络会自动了解并使用更新的自定义路由,而无需您执行任何操作。

在以下场景中,交换自定义路由可能很有帮助:

  • 如果您具有不包含 VPC 本机地址的 GKE 集群,则可能具有多个将流量定向到托管容器的虚拟机实例的静态路由。您可以导出这些静态路由,以便能够从对等互连的网络访问这些容器。
  • 如果您具有 VPN 隧道互连,则可以共享自定义路由,使对等网络能够访问您的本地网络。对于动态路由,您必须在您的 VPC 网络中添加 Cloud Router 路由器自定义路由通告,以向您的本地网络通告对等互连的网络子网。

注意事项

配置导入或导出自定义路由时,请考虑以下行为:

  • 在对等互连时,Google Cloud 会检查是否有任何子网 IP 范围与另一个网络中的子网 IP 范围重叠。如果存在重叠,则不会建立对等互连。此重叠检查仅适用于 VPC 子网范围。不检查静态和动态路由。如果继续进行对等互连,则静态和动态路由将按原样导出。
  • 静态和动态路由都会同时导出或导入。您不能选择仅导入或导出一种类型的路由。
  • 从一个 VPC 网络导入的自定义路由不能以传递方式导出到另一个对等互连的 VPC 网络。
  • 以下路由不会导入和导出:
    • 带标记的路由永不会在对等网络之间交换。带标记的路由是使用网络标记限定于特定虚拟机实例的自定义静态路由。网络标记只能在创建它们的 VPC 网络中进行解析。
    • 下一个跃点指向默认互联网网关的静态路由永不会交换。例如,下一个跃点为默认互联网网关的默认路由 (0.0.0.0/0) 不会在对等网络之间交换。
  • 导入的路由可能会导致流量发生意外更改,例如对路由顺序的更改。如需了解详情,请参阅路由顺序
  • 当 VPC 网络从对等网络导入自定义路由时,目标范围会按原样导入。但是,导入的路由的下一个跃点将设置为对等互连连接的名称。流量会被路由到在其中定义了实际的下一个跃点的对等互连网络。

VPC 网络对等互连场景中的网络功能

以下部分演示了 VPC 网络对等互连在某些情况下的行为。

在对等互连时重叠子网

在对等互连时,Google Cloud 会检查两个 VPC 网络或任何对等互连网络之间是否存在任何 IP 范围重叠的子网。如果存在重叠,则不会建立对等互连。由于虚拟机实例之间创建了全网状连接,因此对等互连 VPC 网络中的子网不能有重叠的 IP 范围,否则就会导致路由问题。

两个对等互连方之间重叠的子网 IP 范围(点击可放大)
两个对等互连方之间重叠的子网 IP 范围(点击可放大)

如果在给定 VPC 网络的对等互连方之间存在具有重叠 IP 范围的任何子网,则会导致路由冲突。例如,假设 VPC 网络 N1 已经与 VPC 网络 N2 建立对等互连,这时 VPC 网络 N3 又尝试与 N2 建立对等互连,这是无效的对等互连,因为 N3 有一个子网 Subnet_5,其 IP 范围与网络 N1 中的 Subnet_1 重叠。

三个对等互连方之间重叠的子网 IP 范围(点击可放大)
三个对等互连方之间重叠的子网 IP 范围(点击可放大)

创建或扩展子网时重叠子网

创建 VPC 子网或扩展子网 IP 范围时,Google Cloud 会执行检查,以确保新子网范围不会与同一 VPC 网络或直接对等互连的 VPC 网络中的子网 IP 范围重叠。如果存在重叠,创建或扩展操作将会失败。例如,在下图的网络 N2 中新建子网 subnet_3 时,IP 范围不得与直接对等互连网络 N1 中定义的 IP 范围重叠。

子网创建检查(点击可放大)
子网创建检查(点击可放大)

Google Cloud 还可确保在具有共同对等互连网络的多个 VPC 网络之间,不允许重叠的子网 IP 范围。如果存在重叠,创建或扩展操作将会失败。例如,在下图的网络 N3 中新建子网 subnet_5 时,IP 范围不得与直接对等互连网络 N2 中定义的 IP 范围重叠,也不得与网络 N1 中的 IP 范围重叠(因为 N1 已经与 N2 建立了对等互连)。

三个对等互连方之间的子网创建检查(点击可放大)
三个对等互连方之间的子网创建检查(点击可放大)

从对等网络进行本地访问

您可以使用 Cloud VPN 或 Cloud Interconnect 将本地网络安全地连接到 VPC 网络。如果导出自定义路由,则对等互连的 VPC 网络也可以连接到您的本地网络。在本地端,您必须创建路由,使流向 VPC 网络的流量定向到 VPN 隧道。

高可用性 VPN 和 Cloud Interconnect 需要使用动态路由。传统 VPN 隧道可以使用静态路由,也可以使用动态路由;但是,传统 VPN 隧道的某些用例已被弃用

对于动态路由,请使用 Cloud Router 路由器,通过使用边界网关协议 (BGP) 动态更新 VPC 网络与本地网络之间的路由。Cloud Router 路由器可以获知和传播其地区内的路由或 VPC 网络内所有地区中的路由。此行为取决于 VPC 网络的动态路由模式,该模式可以是地区性的,也可以是全球性的。

以下用例展示了在对等互连的 VPC 网络中的资源导入和导出自定义路由后,能够如何访问这些资源。每个示例均展示了对等互连的两个网络(network-anetwork-b)。network-b 的动态路由模式在一个示例中是地区性的,在另一个示例中是全球性的。

区域动态路由

如果使用地区动态路由,则只有与 Cloud Router 路由器位于同一地区的资源才能访问本地网络。此限制适用于 Cloud Router 路由器的 VPC 网络以及任何对等互连的 VPC 网络,无论对等互连的 VPC 网络的动态路由模式为何都适用。在以下示例中,network-b 包含 VPN 隧道(也可以是互连)和 Cloud Router 路由器。network-b 的动态路由模式设置为地区性。在对等互连网络中,subnet-anetwork-b 中的 Cloud Router 路由器位于同一区域。

建立对等互连连接后,network-a 可以访问 network-b 中的 VPN 隧道。此访问仅限于与 Cloud Router 路由器位于同一地区的子网。例如,虚拟机实例 vm-a 可以连接该 VPN 隧道,因为它与 Cloud Router 路由器位于同一区地区。其他地区中的虚拟机实例无法连接该隧道。

Cloud Router 路由器不会从对等互连的 VPC 网络中获知和传播路由。因此,您必须在 Cloud Router 路由器上具有自定义路由通告,该通告会将 10.8.1.0/24 范围传播到 BGP 会话上的本地网络。

下表汇总了 network-anetwork-b 在导入和导出自定义路由时生成的路由:

网络 目标 下一个跃点 来源
network-a 0.0.0.0/0 互联网网关 本地
10.8.1.0/24 network-a 本地
10.30.0.0/16 虚拟机 a1 本地
10.8.2.0/24 peering-a-to-b 对等
10.10.0.0/16
(仅限于 us-west1 的动态路由)
peering-a-to-b 对等
network-b 0.0.0.0/0 互联网网关 本地
10.8.2.0/24 network-b 本地
10.10.0.0/16
(仅限于 us-west1 的动态路由)
vpn-b 本地
10.8.1.0/24 peering-b-to-a 对等
10.30.0.0/16 peering-b-to-a 对等

全球动态路由

如果 network-b 启用全球动态路由,则所有地区中的资源都可以访问本地网络。这适用于 Cloud Router 路由器的 VPC 网络以及任何对等互连 VPC 网络,无论对等互连的 VPC 网络的动态路由模式为何都适用。

在以下示例中,network-a 中的资源可以访问 network-b 中的 VPN 隧道,无论这些资源位于什么地区都是如此。例如,即使 vm-a2 与 VPN 隧道位于不同地区,虚拟机实例 vm-a1vm-a2 也能够访问本地网络。

Cloud Router 路由器还必须包含自定义路由通告,以便向 BGP 会话上的本地网络通告 10.8.1.0/2410.9.1.0/24 范围。

下表汇总了 network-anetwork-b 在导入和导出自定义路由时生成的路由:

网络 目标 下一个跃点 来源
network-a 0.0.0.0/0 互联网网关 本地
10.8.1.0/24 network-a 本地
10.9.1.0/24 network-a 本地
10.30.0.0/16 虚拟机 a1 本地
10.8.2.0/24 peering-a-to-b 对等
10.10.0.0/16
(全球动态路由)
peering-a-to-b 对等
network-b 0.0.0.0/0 互联网网关 本地
10.8.2.0/24 network-b 本地
10.10.0.0/16
(全球动态路由)
vpn-b 本地
10.8.1.0/24 peering-b-to-a 对等
10.9.1.0/24 peering-b-to-a 对等
10.30.0.0/16 peering-b-to-a 对等

VPC 网络作为中转网络

假设您的 VPC 网络与本地网络之间存在单个本地连接(例如 VPN 隧道或互连)。您希望与其他 VPC 网络共享此连接,这样您就无需为所有其他 VPC 网络重新创建本地连接。

您可以将其他 VPC 网络与您的 VPC 网络(也称为中转网络)对等互连,以便其他网络可以使用本地连接。所有对等互连的网络都可以利用本地连接,但无法通过中转网络将流量路由到另一个对等方。

以下示例中有三个 VPC 网络。 network-bnetwork-anetwork-c 建立了对等互连。所有网络均导出和导入自定义路由。network-b 充当 VPN 隧道所在的中转网络。

  • 默认情况下,用于管理连接到 network-b 中 Cloud VPN 网关的隧道的路由的 Cloud Router 路由器会自动通告 network-b 中子网 的 IP 地址范围

  • 通向本地目的地的路由会由用于管理连接到 network-b 中 Cloud VPN 网关的隧道的路由的 Cloud Router 路由器作为 network-b 中的自定义动态路由进行安装。

  • 您必须通过在用于管理连接到 network-b 中 Cloud VPN 网关的隧道的路由的 Cloud Router 路由器上配置自定义路由通告,来添加 network-anetwork-c 中子网的 IP 地址范围。

  • 自定义动态路由(通向本地目的地)使用与 network-anetwork-c 的 VPC 网络对等互连进行交换,因为 network-b 配置为导出自定义路由,其他两个网络配置为导入自定义路由。

  • 此示例提供了以下可达性:

    • network-a 中的虚拟机实例可以访问 network-b 中的其他虚拟机和本地网络中的系统。
    • network-b 中的虚拟机实例可以访问 network-anetwork-c 中的其他虚拟机以及本地网络中的系统。
    • network-c 中的虚拟机实例可以访问 network-b 中的其他虚拟机和本地网络中的系统。
    • 由于 VPC 网络对等互连不具有传递性,因此除非您也将网络 network-anetwork-c 建立对等互连,否则 network-anetwork-c 中的虚拟机实例无法相互通信。

内部负载平衡器

如果满足以下条件,则对等网络中的虚拟机实例可以访问 VPC 网络中内部 TCP/UDP 负载平衡器的内部 IP 地址:

  • 如果在内部 TCP/UDP 负载平衡器上停用了全球访问权限,则客户端必须与负载平衡器位于同一地区。客户端还必须与负载平衡器位于同一 VPC 网络中,或者位于使用 VPC 网络对等互连连接到负载平衡器 VPC 网络的 VPC 网络中。

  • 如果在内部 TCP/UDP 负载平衡器上启用了全球访问权限,则客户端可以位于任何地区中。客户端仍必须与负载平衡器位于同一 VPC 网络中,或者位于使用 VPC 网络对等互连连接到负载平衡器 VPC 网络的 VPC 网络中。

  • 应用于负载平衡器后端虚拟机的入站防火墙规则允许来自对等网络中来源的流量。这些入站防火墙规则必须在包含负载平衡器的 VPC 网络中创建。

如需了解详情,请参阅:

防火墙规则

使用 VPC 网络对等互连连接网络时,防火墙规则不会在两者之间交换。要允许来自对等网络中虚拟机实例的入站流量,您必须创建入站允许防火墙规则。默认情况下,流向虚拟机的入站流量会被隐式拒绝入站规则阻止。

如果您需要将访问权限仅限于您的 VPC 网络中的其他虚拟机,请确保您的入站允许防火墙规则来源仅识别您的 VPC 网络中的虚拟机而非来自对等网络中的虚拟机。例如,您可以仅为您的 VPC 网络中的子网指定来源 IP 范围。

如需限制对内部 TCP/UDP 负载平衡器的访问权限,请创建应用于负载平衡器后端虚拟机的入站防火墙规则。

共享 VPC

VPC 网络对等互连允许与共享 VPC 建立对等互连。共享 VPC 宿主项目是指允许其他项目使用其某个网络的项目。下图展示了此设置。

建立了网络对等互连的共享 VPC(点击可放大)
建立了网络对等互连的共享 VPC(点击可放大)

网络 SVPC 位于宿主项目 P1 中的共享 VPC 网络内。服务项目 P3 和 P4 能够将虚拟机实例挂接到网络 SVPC。网络 SVPC 与网络 A 对等互连。因此:

  • 使用网络 SVPC 的共享 VPC 服务项目中的虚拟机实例(VM3 和 VM4)与关联到网络 A 的任意端点具有不公开的内部 IP 连接。
  • 关联到网络 A 的虚拟机实例与关联到网络 SVPC 的任意端点具有不公开的内部 IP 连接(无论这些端点处于宿主项目还是服务项目中)。

可以在两个共享 VPC 网络之间建立 VPC 网络对等互连。

每个虚拟机实例有多个网络接口

一个虚拟机实例可以有多个网络接口,每个 VPC 网络中有一个。对于这些实例,Google Cloud 会分配基于目的地的 IP 路由,以使每个接口从它所在的子网获取路由。此外,Google Cloud 还提供指向主要网络接口的默认路由。通过基于目的地的路由,所有未定向到实例的任何子网的流量都会从主要网络接口中流出。如需了解详情,请参阅使用多个网络接口的 DHCP 行为

如果您的对等网络包含具有多个网络接口的虚拟机实例,您可能需要将默认的基于目的地的路由政策更改为基于来源的路由政策。如需了解详情,请参阅配置政策路由

以下情景演示了虚拟机实例何时可能需要或可能不需要基于来源的路由政策

需要路由政策

在以下示例中,vm1 需要基于来源的路由政策,以便 vm1vm2 可以成功通信。如果没有路由政策,则所有流量都会从 vm1-nic0 流向 network-a,除非流量定向到 nic1 所在的 subnet-b。这意味着从 vm1 定向到 network-c 的流量会被丢弃或发送到不正确的目的地,因为虚拟机实例始终会将流量从其主要接口发出。

路由政策要求取决于子网 IP 范围

在以下示例中,vm1 的主网络接口位于与另一个网络对等互连的网络中。您无需对 vm1 配置政策路由。

在以下示例中,vm1-nic1vm2-nic0 位于重叠的子网中。 建立对等互连后,Google Cloud 仅会检查对等方之间重叠的 IP 范围,而不检查实例包含网络接口的其他网络之间重叠的 IP 范围。为确保 vm1vm2 之间的通信正常,您必须为 vm1-nic0 添加基于来源的路由政策。

多个接口之间的对等互连

以下示例展示了一个具有多个网络接口的虚拟机实例,其中每个网络接口均位于对等互连的网络中。在这种情况下,vm1 不需要基于来源的路由政策。离开虚拟机实例流向各子网的流量使用相应的网络接口。

如果 vm1 将流量发送到 vm2-nic1 的 IP 地址,则流量会进入 nic1,但会从 nic0 中流出。同样,如果 vm3 将流量发送到 vm2-nic0 的 IP 地址,则流量会进入 nic0,但会从 nic1 中流出。

子网次要范围

子网具有单个主要 IP 地址范围和(可选)一个或多个次要 IP 地址范围。对于每个子网 IP 地址范围,Google Cloud 都会创建一个子网路由。在您使用 VPC 网络对等互连时,Google Cloud 始终会在两个对等互连网络之间交换不使用以非公开方式重复使用的公共 IP 地址的子网路由。如果每个网络中的防火墙规则允许通信,则一个网络中的虚拟机实例可以与对等互连网络中的实例通信。

建立对等互连关系后,Google Cloud 会检查子网的主要和次要范围是否与对等互连网络中的其他范围不重叠。

后续步骤