使用 VPC 网络对等互连

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

如需了解详情,请参阅 VPC 网络对等互连

创建对等互连配置

在开始之前,您必须知道要与之建立对等互连的 VPC 网络的名称。如果该网络位于另一个项目中,则您还必须知道该项目的项目 ID。 您无法列出您的 VPC 网络的对等互连请求。如有必要,请询问您想要与之建立对等互连的网络的管理员,以获取网络和项目名称。

对等互连配置可确立连接到另一个 VPC 网络的意图。在您的网络和另一个网络没有针对对方的对等互连配置之前,它们不会连接。在另一个网络设立与您的网络建立对等互连的相应配置之后,这两个网络中的对等互连状态都将更改为 ACTIVE,并且相互连接。如果另一个网络中没有匹配的对等互连配置,则对等互连状态保持为 INACTIVE,这表示您的网络未连接到另一个网络。

在对等互连网络中,Google Cloud 每次仅允许执行一项与对等互连相关的操作。例如,如果您与一个网络设置了对等互连,随后立即尝试设置另一个网络,则操作会失败,并显示以下消息:Error: There is a peering operation in progress on the local or peer network. Try again later.

连接后,这两个网络将始终交换子网路由。如果一个对等互连网络配置为导出静态和动态 IPv4 自定义路由和动态 IPv6 自定义路由,则可以选择从该网络导入这些路由。如需了解详情,请参阅导入和导出自定义路由

控制台

  1. 在 Google Cloud Console 中,转到 VPC 网络对等互连页面。
    转到 VPC 网络对等互连
  2. 点击创建连接
  3. 点击继续
  4. 名称字段中,输入对等互连配置的名称。
  5. 您的 VPC 网络下方,选择您要建立对等互连的网络。
  6. 选择要与之建立对等互连的网络。

    • 如果您要与之建立对等互连的网络位于同一项目中,请选择在项目 [NAME-OF-YOUR-PROJECT] 中 (In project [NAME-OF-YOUR-PROJECT]),然后选择要与之建立对等互连的网络。
    • 如果您要与之建立对等互连的网络位于其他项目中,请选择在另一个项目中。指定包含您要与之建立对等互连的网络的项目 ID 以及 VPC 网络的名称。
  7. IP 栈类型下,指定应在对等互连的网络之间交换哪些子网路由:

    • IPv4(单栈):仅交换 IPv4 路由。
    • IPv4 和 IPv6(双栈):同时交换 IPv4 和 IPv6 路由。
  8. 如需导入或导出 IPv4 和 IPv6 自定义路由,请选择以下一个或两个选项:

    • 导入自定义路由:从对等网络导入自定义路由。对等网络必须为要导入的路由启用自定义路由导出。
    • 导出自定义路由:将自定义路由导出到对等网络。对等网络必须为要导出的路由启用自定义路由导入。
  9. 如果您的网络或对等网络在其子网中使用专用公共 IPv4 范围,则这些路由默认导出,但不会默认导入。如需导入专用公共 IPv4 子网路由,请选择:

    • 导入包含公共 IP 的子网路由,以导入由其他网络导出的专用公共 IP 子网路由
  10. 点击创建

gcloud

创建 VPC 网络对等互连连接。

gcloud compute networks peerings create PEERING_NAME \
    --network=NETWORK \
    --peer-project=PEER_PROJECT_ID \
    --peer-network=PEER_NETWORK_NAME \
    [--stack-type=STACK_TYPE] \
    [--import-custom-routes] \
    [--export-custom-routes] \
    [--import-subnet-routes-with-public-ip] \
    [--export-subnet-routes-with-public-ip]

替换以下内容:

  • PEERING_NAME:对等互连配置的名称。
  • NETWORK:项目中您想要对等互连的网络的名称
  • PEER_PROJECT_ID:包含您要与之建立对等互连的网络的项目的 ID。
  • PEER_NETWORK_NAME:您要与之建立对等互连的网络的名称。
  • STACK_TYPE:对等互连连接的堆栈类型。指定 IPV4_ONLY 以仅交换 IPv4 路由。或者,指定 IPV4_IPV6 以同时交换 IPv4 和 IPv6 路由。IPV4_ONLY 为默认值。
  • --import-custom-routes 指示网络接受来自对等互连网络的自定义路由。对等互连网络必须先导出路由。
  • --export-custom-routes 指示网络将自定义路由导出到对等互连网络。必须将对等互连网络设置为导入路由。
  • --import-subnet-routes-with-public-ip 指示网络在对等互连网络在其子网中使用专用公共 IPv4 地址的情况下接受该网络的子网路由。对等互连网络必须先导出路由。
  • --export-subnet-routes-with-public-ip 指示网络导出包含专用公共 IP 地址的子网路由。必须将对等互连网络设置为导入路由。

Terraform

您可以使用 Terraform 模块来创建对等互连配置。

module "peering1" {
  source        = "terraform-google-modules/network/google//modules/network-peering"
  version       = "~> 9.0"
  local_network = var.local_network # Replace with self link to VPC network "foobar" in quotes
  peer_network  = var.peer_network  # Replace with self link to VPC network "other" in quotes
}

对于两个对等互连的 VPC 网络,每个页内链接都包含项目 ID 和 VPC 网络的名称。要获取 VPC 网络的页内链接,您可以在每个 VPC 网络的项目中使用 gcloud compute networks describe 命令或 networks.get 方法。

创建从 local_networkpeer_network 的对等互连时,对等互连关系是双向的。从 peer_networklocal_network 的对等互连将自动创建。

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令

验证流量是否在对等互连的 VPC 网络之间传递

您可以使用 VPC 流日志来查看虚拟机实例发送和接收的网络流。您还可以使用防火墙规则日志记录来验证流量是否在网络之间传递。创建允许(或拒绝)对等互连网络之间流量的 VPC 防火墙规则,并为这些规则启用防火墙规则日志记录。之后,您便可以使用 Cloud Logging 查看有哪些防火墙规则命中。

更新对等连接

更新现有 VPC 网络对等互连连接时,您可以执行以下操作:

  • 更改 VPC 网络是向对等互连 VPC 网络导出或导入自定义路由还是专用公共 IPv4 子网路由。
  • 更新现有对等互连连接,以启用或停用对等互连网络之间的 IPv6 路由交换。

仅当对等互连网络也导出路由时,您的网络才会导入路由,并且仅当对等互连网络导入路由时,才会接收路由。

控制台

  1. 在 Google Cloud Console 中,转到 VPC 网络对等互连页面。
    转到 VPC 网络对等互连
  2. 选择要更新的对等互连连接。
  3. 点击修改
  4. 更新 IP 栈类型选择,以指定应在对等互连网络之间交换哪些子网路由:
    • IPv4(单栈):停止通过对等互连进行的现有 IPv6 路由交换,并继续仅交换 IPv4 路由。
    • IPv4 和 IPv6(双栈):开始交换 IPv4 和 IPv6 路由,前提是匹配的对等互连连接也将 IP 栈类型设置为 IPv4 和 IPv6(双栈)
  5. 如需导入或导出 IPv4 和 IPv6 自定义路由,请选择以下一个或两个选项:
    • 导入自定义路由:导入其他网络导出的自定义路由
    • 导出自定义路由:将自定义路由导出到另一个网络。其他网络必须导入路由才能看到它们。
  6. 如果您的网络或对等网络在其子网中使用专用公共 IPv4 范围,则这些路由默认导出,但不会默认导入。如需导入专用公共 IPv4 子网路由,请选择:
    • 导入包含公共 IP 的子网路由,以导入由其他网络导出的专用公共 IP 子网路由
    • 点击保存

gcloud

gcloud compute networks peerings update PEERING_NAME \
    --network=NETWORK \
    [--stack-type=STACK_TYPE] \
    [--import-custom-routes] \
    [--export-custom-routes] \
    [--export-subnet-routes-with-public-ip] \
    [--import-subnet-routes-with-public-ip]

更新以下内容:

  • PEERING_NAME:现有对等互连连接的名称。
  • NETWORK:您的项目中对等互连的网络的名称。
  • STACK_TYPE:对等互连连接的堆栈类型。
    • 指定 IPV4_ONLY 以停止通过对等互连进行现有的 IPv6 路由交换,并继续仅交换 IPv4 路由。
    • 指定 IPV4_IPV6 以开始同时交换 IPv4 和 IPv6 路由,前提是匹配的对等互连连接也将 stack_type 设置为 IPV4_IPV6
  • --import-custom-routes 指示网络接受来自对等互连网络的自定义路由。对等互连网络必须先导出路由。
  • --export-custom-routes 指示网络将自定义路由导出到对等互连网络。必须将对等互连网络设置为导入路由。
  • --import-subnet-routes-with-public-ip 指示网络在对等互连网络在其子网中使用专用公共 IPv4 地址的情况下接受该网络的子网路由。对等互连网络必须先导出路由。
  • --export-subnet-routes-with-public-ip 指示网络导出包含专用公共 IP 地址的子网路由。必须将对等互连网络设置为导入路由。

列出对等互连连接

列出现有对等互连连接,以查看其状态及其是导入还是导出自定义路由。

控制台

  1. 在 Google Cloud Console 中,转到 VPC 网络对等互连页面。
    转到 VPC 网络对等互连
  2. 选择对等互连连接以查看其详细信息。

gcloud

gcloud compute networks peerings list

列出来自对等互连连接的路由

您可以列出您的 VPC 网络从对等互连的 VPC 网络导入或向对等互连的 VPC 网络导出的动态路由。对于导出的路由,您可以检查对等互连网络是接受还是拒绝您的自定义路由。对于导入的路由,您可以检查您的网络是接受还是拒绝来自对等互连网络的自定义路由。

您在每个区域看到的路由数量可能不同。如需了解详情,请参阅问题排查

控制台

  1. 在 Google Cloud Console 中,转到 VPC 网络对等互连页面。
    转到 VPC 网络对等互连
  2. 选择对等互连连接以查看其详细信息。
  3. 查看您的网络正在导入或导出的自定义路由。使用区域选择器查看特定区域中的动态路由。子网和静态路由都是全球性的,并且针对所有区域显示。

    • 要查看导入的自定义路由,请选择导入的路由标签。
    • 如需查看导出的自定义路由,请选择导出的路由标签。

gcloud

gcloud compute networks peerings list-routes PEERING_NAME \
    --network=NETWORK \
    --region=REGION \
    --direction=DIRECTION

更新以下内容:

  • PEERING_NAME:现有对等互连连接的名称。
  • NETWORK:您的项目中对等互连的网络的名称。
  • REGION:您要列出所有动态路由的区域。子网和静态路由都是全球性的,并且针对所有区域显示。
  • DIRECTION:指定要列出导入的 (incoming) 还是导出的 (outgoing) 路由。

删除 VPC 网络对等互连连接

您或对等互连 VPC 网络的网络管理员可以删除对等互连配置。删除对等互连配置后,对等互连连接在另一个网络中会切换为 INACTIVE,并且在这两个网络之间共享的所有路由都会被移除。

控制台

  1. 转到 Google Cloud Console 中的“VPC 网络对等互连”页面。
    转到 VPC 网络对等互连
  2. 选中要移除的对等互连旁边的复选框。
  3. 点击删除

gcloud

gcloud compute networks peerings delete PEERING_NAME \
    --network=NETWORK

更新以下内容:

  • PEERING_NAME:要删除的对等互连连接的名称。
  • NETWORK:您的项目中对等互连的网络的名称。

示例 VPC 网络对等互连设置

请考虑以下情况:组织 organization-a 需要在 project-anetwork-aproject-bnetwork-b 之间建立 VPC 网络对等互连。为了成功建立 VPC 网络对等互连,network-anetwork-b 的管理员必须分别配置对等互连关联。

步骤 1:网络 a 与网络 b 对等互连

project-a 中具有适当 IAM 权限的用户将 network-a 配置为与 network-b 对等互连。例如,具有 roles/editorroles/compute.networkAdmin 角色的用户可以配置对等互连。

从网络 a 到网络 b 的对等互连
从网络 a 到网络 b 的对等互连(点击可放大)

在开始之前,您需要希望与之对等互连的网络的项目 ID 和网络名称。

控制台

  1. 转到 Google Cloud Console 中的“VPC 网络对等互连”页面。
    转到 VPC 网络对等互连
  2. 点击创建连接
  3. 点击继续
  4. 输入 peer-ab 作为连接这一端的名称
  5. 您的 VPC 网络下,选择想要对等互连的网络。
  6. 除非您希望在同一项目内建立对等互连,否则请将对等互连 VPC 网络单选按钮设置为 In another project
  7. 指定另一个项目的项目 ID
  8. 指定另一个网络的 VPC 网络名称
  9. 选择导入自定义路由导出自定义路由
  10. 点击创建

gcloud

gcloud compute networks peerings create peer-ab \
    --network=network-a \
    --peer-project=project-b \
    --peer-network=network-b \
    --import-custom-routes \
    --export-custom-routes

此时,对等互连状态保持为 INACTIVE,因为 project-bnetwork-b 中缺少匹配的配置。

当对等互连状态变为 ACTIVE 时,VPC 网络对等互连会自动交换子网路由。Google Cloud 还会通过对等互连连接导入或导出自定义路由(静态路由和动态路由),从而交换这些路由。必须将这两个网络配置为在共享自定义路由之前交换这些路由。如需了解详情,请参阅导入和导出自定义路由

如需查看当前对等互连状态,请查看对等互连连接:

控制台

  1. 转到 Google Cloud Console 中的“VPC 网络对等互连”页面。
    转到 VPC 网络对等互连
  2. 状态显示“正在等待对等互连网络连接”。

gcloud

gcloud compute networks peerings list --network network-a

步骤 2:网络 b 与网络 a 对等互连

project-b 中,必须由一名 NetworkAdmin 或具有适当 IAM 权限的用户将匹配的配置设置为从 network-bnetwork-a,使对等互连的状态在两端均变为 ACTIVE

从网络 b 到网络 a 的对等互连(点击可放大)
从网络 a 到网络 b 的对等互连(点击可放大)

控制台

  1. 转到 Google Cloud Console 中的“VPC 网络对等互连”页面。
    转到 VPC 网络对等互连
  2. 点击创建连接
  3. 点击继续
  4. 输入 peer-ba 作为连接这一端的名称
  5. 您的 VPC 网络下,选择想要对等互连的网络。
  6. 除非您希望在同一项目内建立对等互连,否则请将对等互连 VPC 网络单选按钮设置为 In another project
  7. 指定另一个项目的项目 ID
  8. 指定另一个网络的 VPC 网络名称
  9. 选择导入自定义路由导出自定义路由
  10. 点击创建

gcloud

gcloud compute networks peerings create peer-ba \
     --network=network-b \
     --peer-project=project-a \
     --peer-network=network-a \
     --import-custom-routes \
     --export-custom-routes

步骤 3:VPC 网络对等互连变为 ACTIVE

一旦对等互连变为 ACTIVE 状态,子网路由和自定义路由便会进行交换。以下流量流已设置完成:

  • 在对等互连网络中的虚拟机实例之间:全网状连接。
  • 从一个网络中的虚拟机实例到对等互连网络中的内部直通式网络负载均衡器端点
对等互连处于 ACTIVE 状态(点击可放大)
对等互连处于 ACTIVE 状态(点击可放大)

控制台

  1. 转到 Google Cloud Console 中的“VPC 网络对等互连”页面。
    转到 VPC 网络对等互连
  2. 状态显示“已连接”。
  3. 转到另一个项目的“VPC 网络对等互连”页面,确定它同样显示“已连接”。

gcloud

gcloud compute networks peerings list --network network-a

到对等互连网络 CIDR 前缀的路由现可在 VPC 网络对等互连之间可见。这些路由是为活跃对等互连连接生成的隐式路由。它们没有对应的路由资源。以下过程显示了 project-a 所有 VPC 网络的路由。

控制台

  1. 转到 Google Cloud Console 中的“路由”页面。
    转到“路由”

gcloud

gcloud compute routes list --project project-a

创建多个对等互连连接

请考虑以下情景:network-a 中的虚拟机实例需要访问两个不同的外部组织 SaaS1SaaS2 的服务。如需仅使用内部 IP 地址来访问这两个服务,需要两个对等互连连接:

  • network-aSaaS1 中的 network-b 对等互连
  • network-aSaaS2 中的 network-c 对等互连

使用 VPC 网络对等互连时,network-bnetwork-c 位于不同项目和不同组织无关紧要。

跨组织对等互连(点击可放大)
跨组织对等互连(点击可放大)

如需创建此设置,请创建两个不同的对等互连会话。

配额和限制

请参阅 VPC 网络对等互连配额和限制

问题排查

以下部分介绍如何排查 VPC 网络对等互连的问题。

对等虚拟机无法访问

在对等互连连接转为 ACTIVE 状态后,可能需要一分钟时间才能在对等互连的网络之间建立起所有流量流。具体所需时间取决于对等互连网络的规模。如果您最近设置了对等互连连接,请等待一分钟之后再试。此外,请确保没有防火墙规则禁止与对等互连 VPC 网络子网 CIDR 之间的访问。

在对等互连的网络之间未交换自定义路由

首先,列出来自对等互连连接的路由。如果您没有看到去往预期目标的路由,请执行以下检查:

  • 列出对等互连连接。找到具有所需目标范围的网络,并确保其对等互连状态为 ACTIVE。如果对等互连连接状态为 INACTIVE,则另一个网络中不存在您的网络的对等互连配置。如果另一个网络不由您管理,则需要与该网络的管理员协调。

  • 更新您的网络中的对等互连配置,将其配置为从另一个网络导入自定义路由。确保已将另一个网络配置为导出其自定义路由。

目标位置为对等网络的流量被丢弃

首先,列出对等互连连接,确保您的网络仍然连接到另一个网络。如果对等互连状态为 INACTIVE,则另一个网络中不存在您的网络的对等互连配置。如果另一个网络不由您管理,则需要联系该网络的管理员。

然后,列出来自对等互连连接的路由。您只能导入 VPC 网络对等互连限制允许的路由数。

流量正在发送到非预期的下一个跃点

检查路由顺序,查看是否选择了其他路由。

无法与特定 VPC 网络对等互连

如果您无法创建针对某些 VPC 网络的对等互连配置,可能有某项组织政策正在限制您的网络可以与之建立对等互连的 VPC 网络。在组织政策中,将该网络添加到允许的对等互连方列表中或与组织管理员联系。如需了解详情,请参阅 constraints/compute.restrictVpcPeering 限制条件。

将对等互连的 stack_type 更新为 IPV4_IPV6 后,未交换 IPv6 子网路由

确保将匹配的对等互连连接的 stack_type 值也设置为 IPV4_IPV6。对等互连连接的两端必须将 stack_type 设置为 IPV4_IPV6,然后才能交换 IPv6 路由和流量。

将对等互连的 stack_type 更新为 IPV4_IPV6 后,未导出 IPv6 动态路由

如需导出动态和静态 IPv6 路由,您必须在匹配的对等互连连接上启用 –export-custom-route–import-custom-route 标志。

启用自定义路由的导入和导出后,未交换 IPv6 静态和动态路由

确保两个对等互连都已将 stack_type 设置为 IPV4_IPV6

部分动态路由已导入,但我没有看到所有动态路由

请考虑以下事项:

  • 您在每个区域看到的路由数量可能不同。如果跨区域交换具有相同 IP 地址范围的多个路由,则仅导入具有最高优先级的路由。如果这些路由在同一区域交换,则会导入所有路由。

  • 当网络达到动态路由的每个对等互连组限制时,不会再导入任何路由。但是,无法确定省略了哪些路由。

后续步骤