路由

Google Cloud 路由定义了网络流量从虚拟机实例到其他目的地所采用的路径。这些目的地可以位于您的 Google Cloud Virtual Private Cloud (VPC) 网络中(例如在另一虚拟机中),也可位于该网络之外。

在 VPC 网络中,路由包含单个目的地前缀(采用 CIDR 格式)和单个下一个跃点。当 VPC 网络中的实例发送数据包时,如果数据包的目的地地址在路由的目的地范围内,Google Cloud 会将数据包传递到路由的下一个跃点。

本页面简要介绍了路由在 Google Cloud 中的工作原理。

在 Google Cloud 中进行路由

每个 VPC 网络都使用一种可伸缩的分布式虚拟路由机制。未向该网络分配任何物理设备。某些路由可以选择性地应用,但 VPC 网络的路由表是在 VPC 网络层级定义的。

每个虚拟机实例都有一个控制器,可以从网络路由表中获知所有适用的路由。离开虚拟机的每个数据包都将按照某种路由顺序传递到适用的路由的下一个合适跃点。当您添加或删除路由时,系统会使用最终一致的设计将这组更改传播到虚拟机控制器。

路由类型

下表总结了 Google Cloud 如何对 VPC 网络中的路由进行分类。

类型和目的地 下一个跃点 备注
系统生成的路由
系统生成的默认路由
0.0.0.0/0 (IPv4)
::/0 (IPv6)
default-internet-gateway 适用于整个 VPC 网络

可以移除或替换
子网路由
自动为每个子网 IP 地址范围创建
VPC 网络
用于将数据包转发到虚拟机和内部负载均衡器

由 Google Cloud 在子网生命周期事件期间自动创建、更新和移除。

本地子网路由适用于整个 VPC 网络。

自定义路由
静态路由
支持各种目的地
将数据包转发到静态路由下一个跃点 如需详细了解每个静态路由下一个跃点,请参阅以下内容的注意事项:
动态路由
与子网路由或静态路由不冲突的目的地
Cloud Router 路由器上的 BGP 会话的对等端 路由根据 VPC 网络中 Cloud Router 路由器的已知路由自动添加和移除。

路由根据 VPC 网络的动态路由模式应用于虚拟机。
VPC 网络对等互连路由
对等互连子网路由
表示使用 VPC 网络对等互连连接的其他 VPC 网络中的子网 IP 地址范围
对等 VPC 网络中的下一个跃点

VPC 网络对等互连提供了交换子网路由的选项

由 Google Cloud 在子网生命周期事件期间自动创建、更新和移除。

导入的对等互连子网路由适用于整个 VPC 网络。

对等互连静态和动态路由
使用 VPC 网络对等互连连接的其他 VPC 网络中的静态或动态路由
对等 VPC 网络中的下一个跃点

VPC 网络对等互连提供了交换静态路由的选项

导入的对等互连静态路由适用于整个 VPC 网络。

VPC 网络对等互连提供了交换动态路由的选项

导入的对等互连动态路由根据导出路由的 VPC 网络的动态路由模式应用于 VPC 网络的一个区域或所有区域。

Network Connectivity Center 路由
Network Connectivity Center 子网路由
表示 VPC Spoke 中的子网 IP 地址范围(连接到 Network Connectivity Center Hub 的不同 VPC 网络)
Network Connectivity Center Hub

Network Connectivity Center Spoke 管理员可以 排除子网路由的导出

由 Google Cloud 在子网生命周期事件期间自动创建、更新和移除。

导入的 Network Connectivity Center 子网路由适用于整个 VPC 网络。

基于政策的路由
基于政策的路由
基于政策的路由可以应用于基于来源 IP 地址、目标 IP 地址、协议或它们的组合的数据包。

系统会在评估其他路由之前评估基于政策的路由。基于政策的路由可以应用于网络中的所有虚拟机、网络标记选择的某些虚拟机,或者通过您指定的 Cloud Interconnect VLAN 连接进入 VPC 网络的流量。

基于政策的路由绝不会通过 VPC 网络对等互连进行交换。

系统生成的默认路由

创建 VPC 网络时,它会包含系统生成的 IPv4 默认路由 (0.0.0.0/0)。如果在 VPC 网络中创建具有外部 IPv6 地址范围的双栈子网,则系统生成的 IPv6 默认路由 (::/0) 会被添加到该网络(如果该路由尚不存在)。默认路由有以下用途:

只有当目的地更具体的路由不适用于数据包时,Google Cloud 才会使用默认路由。如需了解如何根据目的地具体程度和路由优先级来选择路由,请参阅路由顺序

如果要将网络与互联网完全隔离,或者需要将默认路由替换为自定义路由,则可以删除默认路由

  • 仅限 IPv4:如果要将互联网流量路由到不同的下一个跃点,可以将默认路由替换为自定义静态路由或自定义动态路由。例如,您可以将默认路由替换为下一个跃点为代理虚拟机的自定义静态路由。

  • IPv4 和 IPv6:如果您删除默认路由但不替换它,流向未被其他路由覆盖的 IP 地址范围的数据包会被丢弃。

子网路由

子网路由定义了 VPC 网络中指向虚拟机和内部负载均衡器等资源的路径。

每个子网至少有一个子网路由,其目的地与子网的主要 IPv4 范围一致。如果子网具有次要 IP 范围,则每个次要 IP 地址范围都有一个对应的子网路由。如果子网具有 IPv6 范围,则 IPv6 地址范围具有相应的子网路由。如需详细了解子网 IP 范围,请参阅子网

子网路由始终具有最具体的目的地。即使其他路由具有更高的优先级,子网路由也无法被其他路由替换。这是因为 Google Cloud 在选择路由时会先考虑目的地具体程度,再考虑优先级。Google Cloud 使用 0 作为所有子网路由的优先级。

与静态路由的交互

本地子网路由和导入的对等互连子网路由通过以下方式与自定义静态路由进行交互:

  • Google Cloud 不允许创建其目的地与任何子网路由或对等互连子网路由的目的地相同或范围更小的自定义静态路由。例如:

    • 如果 10.70.1.0/24 目的地存在本地子网路由或对等互连子网路由,则您无法为 10.70.1.0/2410.70.1.0/2510.70.1.128/2510.70.1.0/24 范围内的任何其他目的地创建新的自定义静态路由。

    • 如果 2001:0db8:0a0b:0c0d::/64 目的地存在本地子网路由或对等互连子网路由,则您无法为 2001:0db8:0a0b:0c0d::/642001:0db8:0a0b:0c0d::/64 范围内的任何目的地(例如 2001:0db8:0a0b:0c0d::/96)创建新的自定义静态路由。

  • 反之,Google Cloud 不允许创建其目的地与现有自定义静态路由的目的地完全匹配或范围更广的新子网路由或对等互连子网路由(包含现有自定义静态路由的目的地)。例如:

    • 如果 VPC 网络的 10.70.1.128/25 目的地存在自定义静态路由,Google Cloud 会禁止创建具有主要或次要子网 IPv4 地址范围 10.70.1.128/2510.70.1.0/24 或具有包含 10.70.1.128/25 中所有 IPv4 地址的任何其他范围的任何子网路由或对等互连子网路由。

    • 如果 VPC 网络的 2001:0db8:0a0b:0c0d::/96 目的地存在自定义静态路由,Google Cloud 会禁止创建具有 IPv6 地址范围 2001:0db8:0a0b:0c0d::/64 或具有包含 2001:0db8:0a0b:0c0d::/96 中所有 IPv6 地址的任何其他范围的任何双栈子网路由或对等互连子网路由。

与动态路由的交互

本地子网路由和导入的对等互连子网路由通过以下方式与 Cloud Router 路由器交互:

  • 当 Cloud Router 路由器得知与现有子网或对等互连子网路由的目的地完全匹配的前缀时,Google Cloud 不会为冲突的前缀创建任何自定义动态路由。例如,如果存在具有目的地 10.70.1.0/24 的子网或对等互连子网路由,并且 VPC 网络中的 Cloud Router 路由器通过 BGP 收到 10.70.1.0/24 前缀,则 Google Cloud 会使用该子网或对等互连子网路由,并且不会为 10.70.1.0/24 创建任何自定义动态路由。

    • 在创建子网或对等互连子网路由(其目的地与 VPC 网络中 Cloud Router 路由器所知的前缀完全匹配)时,Google Cloud 会移除冲突前缀的自定义动态路由,以便为子网或对等互连子网路由腾出空间。
  • 当 Cloud Router 路由器得知现有子网或对等互连子网路由的目的地范围内的前缀时,Google Cloud 不会为冲突的前缀创建任何自定义动态路由。例如,如果存在具有目的地 10.70.1.0/24 的子网或对等互连子网路由,并且 VPC 网络中的 Cloud Router 路由器通过 BGP 接收 10.70.1.0/2510.70.1.128/25 前缀,则 Google Cloud 会使用子网或对等互连子网路由,并且不会为 10.70.1.0/2510.70.1.128/25 创建任何自定义动态路由。

    • 在创建子网或对等互连子网路由(其目的地包含 VPC 网络中 Cloud Router 路由器所知的前缀)时,Google Cloud 会移除冲突前缀的自定义动态路由,以便为子网或对等互连子网路由腾出空间。

子网路由的生命周期

当您创建、修改或删除子网或其子网 IP 地址范围时,系统会创建、更新和删除子网路由:

  • 添加子网时,Google Cloud 会为该子网的主要 IP 地址范围创建相应的子网路由。

  • 自动模式 VPC 网络会为每个自动创建的子网的主要 IP 范围创建子网路由。仅当您将自动模式 VPC 网络转换为自定义模式时,才能删除这些子网。

  • 除非修改或删除子网,否则无法删除子网路由:

    • 从子网中移除次要范围时,将自动删除该次要范围的子网路由。

    • 当您删除子网时,系统将同时自动删除主要范围和次要范围的所有子网路由。不能以任何其他方式删除子网主要范围的子网路由。

VPC 网络中的子网路由的数量受子网 IP 范围数上限(主要和次要)的限制

动态路由

Cloud Router 路由器根据收到的边界网关协议 (BGP) 消息和您指定的 Cloud Router 路由器自定义已知路由指示 VPC 网络创建、更新和移除动态路由。Cloud Router 路由器控制平面会根据 VPC 网络的动态路由模式在区域级层安装动态路由:

  • 如果 VPC 网络使用区域动态路由模式,则每个区域中的 Cloud Router 路由器仅在 Cloud Router 路由器所在区域中创建动态路由。

  • 如果 VPC 网络使用全球动态路由模式,则每个区域中的 Cloud Router 路由器会在 VPC 网络的所有区域中创建动态路由。

动态路由的下一个跃点可以是以下之一:

如果动态路由的下一个跃点无法访问,则管理其 BGP 会话的 Cloud Router 路由器会在满足以下条件之一时指示 VPC 网络移除动态路由:

Google Cloud 会解决动态路由与本地和对等互连子网路由之间的冲突,如与动态路由的交互中所述。

对等互连子网路由

对等互连子网路由定义了另一个 VPC 网络中通过 VPC 网络对等互连连接的子网内的资源的路径。如需了解详情,请参阅交换子网路由的选项

本地子网和对等互连子网路由不能重叠。如需了解详情,请参阅子网和对等互连子网路由交互

每个对等互连组的子网路由数量由每个对等互连组每个网络的子网范围配额控制。

对等互连静态和动态路由

使用 VPC 网络对等互连连接两个 VPC 网络时,您可以从一个网络导出静态和动态路由,并导入另一个网络中。如需了解详情,请参阅以下主题:

每个对等互连组的静态路由数和每个对等互连组每个区域的动态路由数受每个网络的静态和动态路由配额的限制。

适用范围和顺序

适用的路由

每个实例都有一组适用的路由,它们是 VPC 网络中所有路由的子集。适用的路由是数据包在从实例发送时可能采用的出站流量路径。

  • 路由回代理负载均衡器、健康检查系统和其他 Google 服务时,特殊返回路径适用。如需了解详情,请参阅负载均衡器返回路径。这些路由不会显示在任何路由表中。

  • 基于政策的路由可以应用于从 Compute Engine 虚拟机实例发送的数据包,也可以应用于 Cloud Interconnect VLAN 连接收到的数据包。仅当数据包与基于政策的路由的条件匹配时,基于政策的路由才适用。

  • 本地和对等互连子网路由适用于所有实例。除基于政策的路由之外,其他路由类型的目的地不能与本地或对等互连子网路由的目的地匹配或相符。如需详细了解子网、静态和动态路由之间的冲突解决,请参阅子网和静态路由交互以及子网和动态路由交互

  • 自定义静态路由可适用于所有实例或特定实例。具有标记特性的静态路由适用于具有相同网络标记的实例。如果路由没有网络标记,则适用于网络中的所有实例。

  • 动态路由适用于基于 VPC 网络的动态路由模式的实例。

特殊返回路径

VPC 网络具有针对特定服务的特殊路由。这些路由是在您的 VPC 网络外部但在 Google 的生产网络中定义的。它们不会显示在您的 VPC 网络路由表中。您无法移除或替换它们,即使删除或替换 VPC 网络中的默认路由也是如此。但是,您可以使用 VPC 防火墙规则、网络防火墙政策或分层防火墙政策来允许或拒绝数据包。

负载均衡器返回路径

Google Cloud 在您的 VPC 网络外部使用特殊路由在以下各项之间传送数据包:

  • 客户端系统和负载均衡器后端(适用于外部直通网络负载均衡器)
  • 代理系统和负载均衡器后端(适用于外部代理负载均衡器)
  • 健康检查探测器和负载均衡器后端
Google Front End (GFE) 代理和后端之间的路径

全球外部应用负载均衡器传统应用负载均衡器经典版代理网络负载均衡器全球外部代理网络负载均衡器使用 Google Front End (GFE) 系统作为代理。

当客户端向负载均衡器发送请求时,GFE 会终止第一个 TCP 连接。然后,GFE 会打开与后端虚拟机的第二个 TCP 连接。Google Cloud 使用 VPC 网络外部定义的路由在 GFE 代理和后端虚拟机之间路由数据包。

外部直通网络负载均衡器后端的路径

对于外部直通式网络负载均衡器,Google Cloud 使用 VPC 网络外部定义的路由在客户端和后端虚拟机之间路由数据包。

所有负载均衡器类型的健康检查

从 Google Cloud 健康检查探测系统发送的数据包使用探测 IP 范围和防火墙规则中记录的数据包来源。

IAP

Google Cloud 包括每个 VPC 网络中 35.235.240.0/20 的路由,以支持使用 IAP 进行 TCP 转发。Google 的生产网络使用 35.235.240.0/20 作为仅限内部使用的范围。35.235.240.0/20 的下一个跃点完全位于 Google 的生产网络中。

Cloud DNS 和 Service Directory

Google Cloud 包括每个 VPC 网络中 35.199.192.0/19 的路由,以支持 Cloud DNS 使用专用路由的转发目标、Cloud DNS 使用专用路由的备用域名服务器Service Directory 的专用网络访问。Google 的生产网络使用 35.199.192.0/19 作为仅限内部使用的范围。35.199.192.0/19 的下一个跃点完全位于 Google 的生产网络中。

无服务器 VPC 访问通道

Google Cloud 包括每个 VPC 网络中 35.199.224.0/19 的路由,以支持无服务器 VPC 访问通道。Google 的生产网络使用 35.199.224.0/19 作为仅限内部使用的范围。35.199.224.0/19 的下一个跃点完全位于 Google 的生产网络中。

路由顺序

以下过程对 VPC 网络路由选择行为进行建模,从上一部分中介绍的适用路由开始。

  1. 特殊返回路径:特殊返回路径不会显示在您的 VPC 网络的路由表中。您在 VPC 网络中配置的路由不适用于某些 Google Cloud 负载均衡器、健康检查系统、Identity-Aware Proxy (IAP) 和 Cloud DNS 代理的响应数据包。如需了解详情,请参阅特殊返回路径

    如果特殊返回路径适用,则路由选择模型仅包含特殊返回路径。所有其他路由均会被忽略,评估会在此步骤停止。

  2. 基于政策的路由:系统会在特殊返回路径之后但其他类型的路由之前评估基于政策的路由。如果 VPC 网络中不存在基于政策的路由,则 Google Cloud 会跳过此步骤并继续执行“最具体的目标”这一步骤。

    • Google Cloud 仅根据优先级评估基于政策的路由。Google Cloud 为每个基于政策的路由评估数据包的来源和目标,从一个或多个优先级最高的路由开始。如果数据包的特征与基于政策的路由不匹配,Google Cloud 会忽略基于政策的路由,并继续评估已排序列表中的下一个基于政策的路由。下一个要评估的基于政策的路由可能与与无主的基于政策的路由具有相同优先级,也可能优先级更低。

    • 如果在评估路由选择模型中的所有基于政策的路由后,数据包的特征与任何基于政策的路由都不匹配,则 Google Cloud 会忽略所有基于政策的路由,并继续执行“最具体的目标”这一步骤。

    • 如果数据包的特征与优先级最高的基于政策的路由匹配,则 Google Cloud 会首先忽略所有优先级较低的基于政策的路由。如果列表中保留了两个或多个基于政策的路由,则 Google Cloud 会评估其余具有相同优先级的其余基于政策的路由。如果数据包的特征不匹配,Google Cloud 会忽略所有基于政策的路由。完成此步骤后,您的路由选择模型可能会包含一个或多个基于政策的路由。

      • 如果您的路由选择模型包含两个或更多匹配的优先级最高的基于政策的路由,则 Google Cloud 会使用内部算法来选择单个基于政策的路由。所选基于政策的路由可能不是数据包来源或目标的最具体匹配项。为避免这种歧义,我们建议您创建具有独特优先级的基于政策的路由。

      • 如果您的路由选择模型仅包含一个优先级最高的基于政策的路由,而该路由配置为跳过其他基于政策的路由,则 Google Cloud 会在“最具体的目标”这一步骤中评估非基于政策的路由,并忽略所有基于政策的路由。

      • 如果您的路由选择模型仅包含一个优先级最高的基于政策的路由,而该路由未配置为跳过其他基于政策的路由,则 Google Cloud 会将数据包传送到下一个跃点内部直通网络负载均衡器,并忽略所有非基于政策的路由。

  3. 最具体的目标:Google Cloud 会确定哪些适用路由具有包含数据包的目标 IP 地址的最具体目标。Google Cloud 会忽略目标不太明确的所有其他路线。例如,10.240.1.0/24 是比 10.240.0.0/16 更具体的目标。最具体的目的地可以是任何类型的路由;但是,根据定义,子网路由对等互连子网路由特殊返回路径是最具体的。

    完成此步骤后,您的路由选择模型不会包含任何特殊的返回路径或基于政策的路由。它仅包含具有最具体目的地的路由。

  4. 单个 VPC 网络中的下一个跃点:仅当您要对其路由行为进行建模的 VPC 网络使用 VPC 网络对等互连连接到一个或多个 VPC 网络时,此步骤才适用。使用 VPC 网络对等互连时,对等互连组的多个网络中可能存在具有相同目的地的自定义路由。在此步骤中建模的要求是 Google Cloud 选择全都位于单个 VPC 网络中的下一个跃点。

    • 如果路由模型中的一个或多个路由在您要建模的 VPC 网络内具有下一个跃点,请忽略在对等网络中具有下一个跃点的所有路由。在这种情况下,Google Cloud 仅会使用本地 VPC 网络中的下一个跃点,即使一个或多个对等 VPC 网络中存在同一目的地的下一个跃点也是如此。

    • 如果路由模型中的任何路由在您要建模的 VPC 网络中都没有下一个跃点,并且所有下一个跃点都存在于多个对等网络中,则 Google Cloud 会使用内部算法来选择一个具有最具体目的地的下一个跃点的对等网络。此时不会考虑路由优先级。此外,如果您的 VPC 网络与新的 VPC 网络对等互连,或者它与现有对等 VPC 网络断开连接,则为下一个跃点选择的 VPC 网络可能会更改。

    完成此步骤后,您的路由选择模型会仅包含具有最具体目的地的路由,并且这些路由的下一个跃点全都位于单个 VPC 网络中。

  5. 忽略下一个跃点未运行的自定义静态路由:此步骤对 Google Cloud 忽略它认为未运行的下一个跃点的两种情况进行建模。此步骤仅适用于自定义静态路由。而自定义动态路由则使用 BGP 通告自动添加和移除。

    • 如果下一个跃点虚拟机已停止或删除,则 Google Cloud 将忽略每个下一个跃点虚拟机实例(next-hop-instancenext-hop-address)。如需了解详情,请参阅下一个跃点实例的注意事项部分中的“停止或删除实例时的行为”。如果路由模型包含其下一个跃点虚拟机已停止或删除的静态路由,请将这些路由从模型中移除。

    • 如果隧道没有第 1 阶段 (IKE) 安全关联 (SA),则 Google Cloud 将忽略使用下一个跃点传统 VPN 隧道的每个自定义静态路由。如需了解详情,请参阅传统 VPN 文档中的路由顺序。如果您的路由模型包含下一个跃点是没有建立 IKE SA 的传统 VPN 隧道的静态路由,请从模型中移除这些路由。

  6. 忽略低优先级路由:此步骤会对 Google Cloud 如何舍弃除优先级最高的路由之外的其他所有路由进行建模。

    完成此步骤后,您的路由选择模型可能为空,也可能包含一个或多个路由。如果您的模型确实包含路由,则所有路由都具有以下特征:

    • 相同的最具体的目的地
    • 下一个跃点全部位于一个 VPC 网络中 - 本地 VPC 网络或单个对等 VPC 网络
    • 关停未知的下一个跃点
    • 相同的最高优先级
  7. 仅选择最有利的偏好类别:Google Cloud 会避免不同类型的下一个跃点之间的 ECMP 路由。您可以通过考虑下表中所述的偏好类别系统来对此行为进行建模。此步骤会优化路由模型,使其仅包含具有相同路由类型或相同路由类型和下一个跃点类型组合的路由。

    偏好类别 类别和下一个跃点组合
    第一选择(最高偏好) 具有正在运行的下一个跃点实例(next-hop-instancenext-hop-address)或已建立 IKE SA 的下一个跃点传统 VPN 隧道的自定义静态路由
    第二选择 从任何 Cloud Router 路由器的任何 BGP 会话获知的自定义动态路由
    第三选择 具有内部直通式网络负载均衡器下一个跃点的单个自定义静态路由
    Google Cloud 会使用内部算法来选择单个下一个跃点内部直通式网络负载均衡器,并忽略具有相同优先级的其他内部直通式网络负载均衡器下一个跃点。如需了解详情,请参阅内部直通式网络负载均衡器下一个跃点的注意事项部分中的“相同的目的地和多个下一个跃点内部直通式网络负载均衡器”。
    第四选择 使用 default-internet-gateway 下一个跃点的自定义静态路由

    在此步骤结束时,路由模型中可能有零个路由、一个路由、两个或更多路由。

  8. 发送或丢弃数据包:发生的情况取决于路由模型中剩余的路由数量:

    • 如果路由模型为空,则数据包会因 ICMP 目的地或网络不可达错误而被丢弃。Google Cloud 绝不会回退到可能具有运行中下一个跃点的不太具体的路由。

    • 如果路由模型包含单个路由,则 Google Cloud 会将数据包发送到下一个跃点。对于虚拟机下一个跃点,Google Cloud 不会验证虚拟机下一个跃点是否可以处理数据包。如需了解详情,请参阅实例和内部直通式网络负载均衡器下一个跃点的注意事项。如果单个路由是子网路由或对等互连子网路由,并且数据包的目标 IP 地址没有 Google Cloud 资源,则数据包会予以丢弃。

    • 如果路由模型包含两个或更多路由,则这些路由共享同一个最具体的目的地,位于单个 VPC 网络中,具有关停未知的下一个跃点,具有相同最高优先级,并且属于一种路由类型和下一个跃点组合(偏好类别)。Google Cloud 会使用哈希算法在下一个跃点之间分配数据包,从而实现等价多路径 (ECMP)。系统会根据下一个跃点的当前数量,在发送每个数据包时为其进行哈希计算。如果数据包包含端口信息,则 Google Cloud 使用五元组哈希值;否则使用三元组哈希值。如果路由模型在发送后续数据包时更改,则即使哈希值相同,Google Cloud 也可能会将这些数据包定向到其他下一个跃点。

静态路由

您可以通过以下两种方式之一来创建静态路由:

如 VPC 网络对等互连文档中的交换自定义静态路由的选项中所述,您可以与对等互连的 VPC 网络交换静态路由。

路由参数

静态路由支持以下属性:

  • 名称说明。这些字段用于标识路由。名称为必填字段,但说明是选填字段。项目中的每个路由都必须具有唯一的名称。

  • 网络。每个路由必须恰好与一个 VPC 网络关联。

  • 下一个跃点。下一个跃点标识数据包发送到的网络资源。所有下一个跃点类型都支持 IPv4 目的地,一些下一个跃点类型支持 IPv6 目的地。如需了解详情,请参阅下一个跃点和功能

  • 目的地范围。目标范围是单个 IPv4 或 IPv6 CIDR 表示法。静态路由的目的地必须遵循与静态路由的交互以及子网和静态路由的交互中所述的规则。IPv4 静态路由的最广泛的可能目的地是 0.0.0.0/0。IPv6 静态路由的最广泛的可能目的地是 ::/0

  • 优先级。数字越小表明优先级越高。可能的最高优先级为 0,可能的最低优先级为 65,535

  • 网络标记。 静态路由只能应用于 VPC 网络中由网络标记标识的选定虚拟机实例。 如果您不指定网络标记,则 Google Cloud 会将静态路由应用于网络中的所有实例。使用 VPC 网络对等互连时,绝不会交换带有标记的静态路由

下一个跃点和特性

下表总结了下一个跃点类型支持的静态路由功能:

下一个跃点类型 IPv4 IPv6 ECMP1
下一个跃点网关 (next-hop-gateway)
指定默认互联网网关以定义指向外部 IP 地址的路径。
按名称和可用区的下一个跃点实例 (next-hop-instance)
将数据包发送到按名称和可用区标识且位于同一项目中的下一个跃点虚拟机作为路由。如需了解详情,请参阅下一个跃点实例的注意事项
按地址划分的下一个跃点实例 (next-hop-address)
将数据包发送到由其网络接口的主要 IPv4 地址标识的下一个跃点虚拟机。如需了解详情,请参阅下一个跃点实例的注意事项
按转发规则名称和区域标识的下一个跃点内部直通式网络负载均衡器 (next-hop-ilb)
将数据包发送到转发规则的名称和区域标识的内部直通网络负载均衡器的后端。如需了解详情,请参阅内部直通式网络负载均衡器下一个跃点的注意事项
按地址标识的下一个跃点内部直通网络负载均衡器 (next-hop-ilb)
将数据包发送到由负载均衡器的转发规则的 IP 地址标识的内部直通网络负载均衡器的后端。如需了解详情,请参阅内部直通式网络负载均衡器下一个跃点的注意事项
下一个跃点传统 VPN 隧道 (next-hop-vpn-tunnel)
使用基于政策的路由或基于路由的 VPN将数据包发送到下一个跃点传统 VPN 隧道。如需了解详情,请参阅传统 VPN 隧道下一个跃点的注意事项
1等价多路径 (ECMP) 意味着两个或更多静态路由可以共享相同的目标范围和优先级。虽然您可以在具有相同目标、相同优先级和默认互联网网关下一个跃点的 VPC 网络中创建两个或更多静态路由,但其效果与使用该目标的默认互联网网关下一跃点和优先级的单个静态路由相同。

下一个跃点项目和网络

静态路由的下一个跃点与 VPC 网络和项目相关联:

  • 网络:除了下表所示,下一个跃点的 VPC 网络必须与路由的 VPC 网络匹配。

  • 项目:除下表所示外,下一个跃点必须位于包含下一个跃点的 VPC 网络的项目(独立项目或共享 VPC 宿主项目)中。一些下一个跃点可能位于共享 VPC 服务项目中。

下一个跃点类型 可以位于对等互连的 VPC 网络中 可以位于共享 VPC 服务项目中
下一个跃点网关 (next-hop-gateway)
按名称的下一个跃点实例 (next-hop-instance)
按地址划分的下一个跃点实例 (next-hop-address)
按转发规则名称和区域标识的下一个跃点内部直通网络负载均衡器 (next-hop-ilb)
按地址标识的下一个跃点内部直通网络负载均衡器 (next-hop-ilb)
下一个跃点传统 VPN 隧道 (next-hop-vpn-tunnel)

实例和内部直通式网络负载均衡器下一个跃点共同的注意事项

基于实例的路由是指下一个跃点为虚拟机实例(next-hop-instancenext-hop-address)的静态路由。

内部下一个跃点网络负载均衡器作为下一个跃点是指下一个跃点为内部直通式网络负载均衡器 (next-hop-ilb) 的静态路由。

将基于实例的路由或内部直通式网络负载均衡器配置为下一个跃点时,请遵循以下准则:

  • 您必须将后端虚拟机或下一个跃点实例配置为转发来自任何来源 IP 地址的数据包。如需配置转发,请在创建虚拟机时基于每个虚拟机启用 IP 转发 (can-ip-forward)。对于作为代管式实例组的一部分自动创建的虚拟机,请在实例组使用的实例模板中启用 IP 转发。除了路由数据包所需的任何操作系统配置以外,您还必须更改上述配置。

  • 您必须适当配置后端虚拟机或下一个跃点实例上运行的软件。例如,您必须根据制造商的说明配置充当路由器或防火墙的第三方设备虚拟机。

  • 后端虚拟机或下一个跃点实例必须具有适当的防火墙规则。您必须配置适用于所路由的数据包的防火墙规则。请注意以下几点:

    • 适用于执行路由功能的实例的入站流量防火墙规则必须包含路由数据包来源的 IP 地址。隐式拒绝入站流量规则会阻止所有传入的数据包,因此您必须至少创建自定义入站流量允许防火墙规则。
    • 适用于执行路由功能的实例的出站流量防火墙规则必须包含路由数据包目标的 IP 地址。隐式允许出站流量规则允许此操作,除非您创建了特定的出站流量拒绝规则来替换它。
    • 在创建防火墙规则时,请考虑后端虚拟机或下一个跃点实例是否执行网络地址转换 (NAT)。

    如需了解详情,请参阅隐式防火墙规则

  • 后端虚拟机或下一个跃点实例发送的数据包的来源区域是后端虚拟机或下一个跃点实例所在的区域。 例如,由后端虚拟机或 us-west1 中的下一个跃点实例处理的数据包可以发送到只能在 us-west1 进行访问的目的地,即使后端虚拟机或下一个跃点实例最初从不同于 us-west1 的区域中的资源接收数据包也是如此。只能在与发送数据包的虚拟机相同的区域中访问的资源示例:

    • 内部直通式网络负载均衡器、内部应用负载均衡器和关闭全球访问权限的区域内部代理网络负载均衡器
    • Cloud VPN 隧道、Cloud Interconnect VLAN 连接和 Network Connectivity Router 设备虚拟机(如果 VPC 网络使用区域动态路由)

下一个跃点实例的注意事项

  • 由实例名称和可用区指定的下一个跃点 (next-hop-instance):当您创建具有由实例名称和可用区指定的下一个跃点实例的静态路由时,Google Cloud 会要求指定可用区中已存在同名的实例,并且该实例满足以下条件:

    • 该实例与路由位于同一项目中。
    • 该实例在路由的 VPC 网络(不是对等互连 VPC 网络)中具有网络接口 (NIC)。

    只要存在下一个跃点由实例名称和可用区指定的静态路由,则以下规则适用:

    • 如果出现以下任一情况,Google Cloud 会自动更新下一个跃点的编程:

      • 下一个跃点实例的主要内部 IPv4 地址发生变化,或者
      • 替换下一个跃点实例,并且替换实例具有相同的名称,位于同一可用区和项目中,并且在路由的 VPC 网络中具有网络接口。
    • 在以下情况下,Google Cloud 不会更新下一个跃点的编程:

      • 删除实例时
      • 分配给实例的 NIC 的 IPv6 地址范围发生变化
      • 取消分配实例的 IPv4 或 IPv6 地址时
  • 下一个跃点实例内部 IP 地址 (next-hop-address):当您创建具有内部 IPv4 地址指定的下一个跃点实例的静态路由时,Google Cloud 验证下一个跃点虚拟机 IPv4 地址是否在路由的 VPC 网络子网的 IPv4 范围内。但是,仅当下一个跃点地址是分配给路由 VPC 网络(而非对等互连 VPC 网络)中的虚拟机 NIC 的主要内部 IPv4 地址时,Google Cloud 才会对路由进行编程。

    当下一个跃点 IPv4 地址移至其他虚拟机时,只要替换虚拟机满足相同的要求,Google Cloud 会自动更新下一个跃点的编程。

  • 共享 VPC 服务项目中的下一个跃点实例:当您通过 IP 地址指定下一个跃点虚拟机时,虚拟机可以位于同一项目中作为路由(独立项目或共享 VPC 宿主项目)虚拟机可位于共享 VPC 服务项目中。按实例名称和可用区指定下一个跃点虚拟机时,下一个跃点虚拟机必须与路由和 VPC 网络位于同一项目(独立项目或共享 VPC 宿主项目)中。

  • 区域到区域成本和延迟:使用虚拟机作为下一个跃点时,下一个跃点位于某个区域的可用区中。使用下一个跃点的路由适用于同一 VPC 网络中的所有实例,或具有匹配网络标记的部分实例。Google Cloud 不会考虑使用实例作为下一个跃点的路由的区域距离,因此您可创建一个路由以将流量发送到其他区域中的下一个跃点虚拟机。如果将数据包从一个区域发送到另一个区域,则会增加出站数据传输成本并导致网络延迟。

  • 不执行健康检查,不执行配置验证:Google Cloud 绝不会检查下一个跃点实例是否满足实例和内部直通式网络负载均衡器下一个跃点共同的注意事项中所述的所有要求。如果通过配置实例的客机操作系统来停用虚拟机的网络接口,则不会使 Google Cloud 忽略下一个跃点实例。

  • 连接两个 VPC 网络时不进行对称哈希:使用在满足以下所有条件的配置中具有多个网络接口的两个或更多下一个跃点虚拟机时,Google Cloud 不会提供对称哈希:

    • 虚拟机在一个 VPC 网络中具有一个网络接口,在另一个 VPC 网络中具有另一个网络接口。
    • 在每个 VPC 网络中,同一目的地存在一组自定义静态路由(至少包含两个),这些路由使用相同的优先级,该组中的每个路由都会引用唯一的下一个跃点虚拟机。

    如果您使用具有多个接口的两个或更多虚拟机来连接 VPC 网络,并且要求同一虚拟机双向处理给定连接的数据包,则需要对称哈希,只有下一个跃点内部直通网络负载均衡器才支持对称哈希。如需详细了解对称哈希,请参阅内部直通式网络负载均衡器作为下一个跃点文档中的“对称哈希”

  • 停止或删除实例时的行为:Google Cloud 不会阻止您停止或删除静态路由下一个跃点虚拟机(由名称和可用区或内部地址指定)。当下一个跃点虚拟机未运行时,目的地的路由取决于同一目的地的其他路由是否存在以及这些其他路由是否具有正在运行的下一个跃点。如需了解此行为,请参考以下示例:

    • 当最高优先级路由的下一个跃点未运行时,目的地为 192.168.168.0/24 的数据包将发送到 route-vm-b 的下一个跃点。出现此路由的原因是 Google Cloud 会在考虑路由顺序忽略低优先级路由步骤之前忽略未运行的下一个跃点:

      • route-vm-a,目标 192.168.168.0/24,优先级为 10,下一个跃点虚拟机已停止
      • route-vm-b,目标 192.168.168.0/24,优先级为 20,下一个跃点虚拟机正在运行
      • route-vm-c,目标 192.168.168.0/24,优先级为 30,下一个跃点虚拟机正在运行
    • 目标在 192.168.168.0/24 范围内的数据包将在下一个示例中被丢弃,其中 192.168.168.0/24 路由的所有下一个跃点虚拟机均未运行,即使更宽泛的 192.168.0.0/16 的路由具有正在运行的下一个跃点虚拟机也是如此。数据包会被丢弃,因为 Google Cloud 在最具体的目标步骤中忽略具有更广泛(更短的子网掩码长度)目标范围的路由,这种情况发生在忽略下一个跃点未运行路由顺序的步骤的自定义静态路由之前:

      • route-vm-x,目标 192.168.168.0/24,优先级为 10,下一个跃点虚拟机已停止
      • route-vm-y,目标 192.168.168.0/24,优先级为 20,下一个跃点虚拟机已停止
      • route-vm-z,目标 192.168.0.0/16,优先级为 0,下一个跃点虚拟机正在运行

内部直通式网络负载均衡器下一个跃点的注意事项

  • 支持的转发规则。 Google Cloud 仅支持下一个跃点内部直通式网络负载均衡器转发规则。Google Cloud 不支持其他负载均衡器、协议转发或作为 Private Service Connect 端点使用的下一个跃点转发规则。

  • 规范方法以及转发规则网络和项目。 您可以使用以下三种方法之一指定下一个跃点转发规则。您使用的规范方法决定了转发规则的网络必须与路由的网络匹配,以及转发规则位于哪个项目中:

    • 按转发规则名称 (--next-hop-ilb) 和区域 (--next-hop-ilb-region):按名称和区域指定下一个跃点转发规则时,转发规则的网络必须与该路由的 VPC 网络匹配。转发规则必须位于包含转发规则网络的同一项目中(独立项目或共享 VPC 宿主项目)。

    • 通过转发规则资源链接:转发规则的资源链接使用以下格式 /projects/PROJECT_ID/regions/REGION/forwardingRules/FORWARDING_RULE_NAME,其中 PROJECT_ID 是包含转发规则的项目的 ID,REGION 是转发规则的区域,FORWARDING_RULE_NAME 是转发规则的名称。通过资源链接指定下一个跃点转发规则时,转发规则的网络必须与路由的 VPC 网络匹配。转发规则可以位于包含转发规则网络的项目(独立项目或共享 VPC 宿主项目)共享 VPC 服务项目。

    • 通过转发规则 IPv4 地址:当您通过 IPv4 地址指定下一个跃点转发规则时,转发规则的网络可以是任一路由的 VPC 网络或对等互连 VPC 网络。转发规则可以位于包含转发规则网络的项目(独立项目或共享 VPC 宿主项目)或共享 VPC 服务项目。

  • 全球访问权限的影响。使用内部直通式网络负载均衡器下一个跃点的自定义静态路由在所有区域进行编程。下一个跃点是否可用取决于负载均衡器的全球访问权限设置。启用全球访问权限后,负载均衡器下一个跃点可在 VPC 网络的所有区域中访问。停用全球访问权限后,负载均衡器下一个跃点只能在与负载均衡器相同的区域中访问。停用全球访问权限后,系统会丢弃从另一个区域发送到使用内部直通式网络负载均衡器下一个跃点的路由的数据包。

  • 当所有后端运行状况不佳时。当内部直通式网络负载均衡器的所有后端都未通过健康检查时,使用该负载均衡器下一个跃点的路由仍然有效。该路由处理的数据包根据流量分配发送到其中一个下一个跃点负载均衡器的后端。

  • 不支持使用公共内部 IP 地址 (--purpose=SHARED_LOADBALANCER_VIP) 的转发规则。下一个跃点内部直通式负载均衡器和具有相同 IP 地址的内部直通式网络负载均衡器转发规则是互斥的功能。下一个跃点内部直通式网络负载均衡器必须使用负载均衡器的转发规则独有的 IP 地址,以便明确引用一个后端服务(一个负载均衡器)。转发规则可以使用公共内部 IP 地址来引用不同的后端服务(不同的内部直通式网络负载均衡器)。

  • 相同的目的地和多个下一个跃点内部直通式网络负载均衡器。如果您使用不同的内部直通式网络负载均衡器下一个跃点创建两个或多个目的地相同的自定义静态路由,则 Google Cloud 绝不会使用 ECMP 在负载均衡器下一个跃点之间分配流量。如果路由具有唯一的优先级,则 Google Cloud 会使用具有最高优先级的路由的下一个跃点内部直通式网络负载均衡器。如果路由具有相同的优先级,则 Google Cloud 仍会只选择一个下一个跃点内部直通式网络负载均衡器。在后一种情况下,如下图所示,Google Cloud 使用确定性的内部算法来选择单个下一个跃点转发规则 (forwarding-rule-a),并忽略具有相同优先级的其他路由。

    当具有不同内部直通式网络负载均衡器下一跃点的静态路由具有相同的优先级和目的地时,Google Cloud 会选择单个下一跃点。
  • 多个目的地、相同的下一个跃点内部直通式网络负载均衡器

    使用实例标记

    如果您使用实例标记(也称为网络标记),则可以将同一下一个跃点内部直通式网络负载均衡器用于多个自定义静态路由,这些路由具有相同的目的地和优先级。

    不使用实例标记:如果不使用网络标记,则无法创建多个具有相同目的地、优先级和内部直通式网络负载均衡器下一个跃点组合的自定义静态路由。例如,route-xroute-yroute-z 全都可以创建,但 route-x-copy 无法创建。

    不能使用相同的目的地、优先级和内部直通式网络负载均衡器下一跃点创建没有实例标记的静态路由。
  • 实例标记

    您可以指定实例标记(也称为网络标记),以使下一个跃点路由仅应用于已配置该标记的客户端实例。这样,您就可以选择用哪个带标记的下一个跃点路由填充哪些客户端实例,以及将流量路由到哪组设备。

    您无需将不同的客户端实例隔离到单独的 VPC 网络中,每个客户端实例均指向将一组设备作为前端的首选内部直通式网络负载均衡器。

  • 指向同一目的地前缀的多个路由。使用实例标记,您可以指定多个指向同一目的地的路由,并将不同内部负载均衡器作为下一个跃点。您可以为这些相同的目的地路由使用不同的实例标记或不同的优先级。

传统 VPN 隧道下一个跃点的注意事项

  • 区域到区域的费用和延迟:Google Cloud 不会考虑使用下一个跃点传统 VPN 隧道的路由的区域距离。将流量发送到其他区域中的下一个跃点传统 VPN 隧道会增加出站数据传输费用并导致网络延迟。最佳实践是将高可用性 VPN 隧道动态路由结合使用,因为该配置会考虑区域距离。

  • 传统 VPN 隧道未运行时的行为:在传统 VPN 隧道未运行时,其下一个跃点为传统 VPN 隧道的自定义静态路由不会自动移除。如需详细了解隧道未运行时会发生的情况,请参阅传统 VPN 文档中的隧道关停时

后续步骤