使用路由

本页面介绍如何为 Google Cloud Platform (GCP) VPC 网络创建和管理路由。本页面假定您熟悉路由概览中所述的不同 GCP 路由类型及其特征。

每个新网络都具有两种由系统生成的路由:默认路由(您可以将其移除或替换);以及子网路由(每个子网具有一个对应的子网路由)。除非删除相应的子网本身,否则无法移除子网路由。

除了由系统生成的路由外,您还可以创建其他自定义静态路由

检查路由

列出 VPC 网络的路由

您可以使用以下任一方法查看路由:

Console

要列出所有网络的路由,请执行以下操作:

  1. 转到 Google Cloud Platform Console 中的“路由”页面。
    转到“路由”页面
  2. 您可以使用“过滤路由”文本框来限制显示的路由。例如,您可以输入 VPC 网络的名称,然后按 Enter 键,以显示特定网络的路由。
  3. “全部”标签可显示所有类型的路由。如果仅查看自定义动态路由,请点击动态标签。

gcloud

要列出默认路由子网路由自定义静态路由,请使用以下 gcloud 命令,将 [NETWORK_NAME] 替换为您的网络名称:

gcloud compute routes list --filter="network=[NETWORK_NAME]"

gcloud compute routes list 不会显示自定义动态路由。要查看动态路由,您必须查询那个获悉该路由的 Cloud Router 的状态。请使用以下命令作为模板,将 [CLOUD_ROUTER_NAME] 替换为 Cloud Router 的名称,并将 [REGION] 替换为其区域:

gcloud compute routers get-status [CLOUD_ROUTER_NAME] \
    --region=[REGION] \
    --format="flattened(result.bestRoutes)"

描述路由

要查看系统生成的路由和自定义静态路由(包括目标和下一个跃点)的详细信息,请执行以下操作:

Console

  1. 转到 Google Cloud Platform Console 中的“路由”页面。
    转到“路由”页面
  2. 点击某个路由的名称。

gcloud

要查看系统生成的路由和自定义静态路由的详细信息,请使用以下 gcloud 命令,并将 [ROUTE_NAME] 替换为要检查的路由的名称:

gcloud compute routes describe [ROUTE_NAME] --format="flattened()"

虚拟机路由

您可以按照本部分中的说明,来查看虚拟机实例的给定网络接口的适用路由和有效路由。有效路由是考虑路由顺序的适用路由的子集。

网络接口的适用路由

您可以通过 GCP Console 来查看虚拟机网络接口的适用路由。这种查看方式会将可用于出站流量的路由的列表缩小到一定的范围。

要查看虚拟机的特定网络接口的适用路由,请执行以下操作:

  1. 转到 Google Cloud Platform Console 中的“虚拟机实例”页面。
    转到“虚拟机实例”页面
  2. 在列表中找到虚拟机实例。在更多操作菜单 () 中,选择查看网络详情
  3. 如果某个实例具有多个网络接口,请在网络接口详情部分选择要查看的网络接口。
  4. 点击路由标签,以查看适用于该网络接口的所有路由(按路由名称排序)。

路由分析和有效路由

路由分析可帮助您确定有效路由,这种分析会将适用的路由和路由顺序纳入考虑范围。路由会按目标 IP 范围列出,因此您可以确定使用哪种适用的路由将流量发送到给定目标范围。

例如,一个网络接口可能会使用多个适用的路由。如需了解详细信息,请参阅路由概览中的路由顺序

要按路由适用性和路由顺序查看路由,请使用路由分析:

  1. 转到 Google Cloud Platform Console 中的“虚拟机实例”页面,并找到要查看的实例。
    转到“虚拟机实例”页面
  2. 在该实例的更多操作菜单 () 中,选择查看网络详情
  3. 如果某个实例具有多个网络接口,请在网络接口详情部分选择要查看的网络接口。
  4. 网络分析部分,选择路由分析标签。
  5. 查看出现的表(按照从最具体的 IP 地址范围到最宽泛的 IP 地址范围的顺序排列),以确定适用于给定目标范围的路由。

路由分析标签的示例输出如下:

虚拟机实例的有效路由(点击可放大)
虚拟机实例的有效路由(点击可放大)

添加和移除路由

添加静态路由

请按照以下步骤创建新的静态路由。在创建之前,请确保您熟悉以下内容:

  • 自定义静态路由的目标范围和 VPC 网络中任何子网路由的目标范围都不能相同,而且前者不能比后者更具体。

    • 使用 VPC 网络对等互连来连接两个 VPC 网络时,一个网络中的自定义静态路由的目标和两个网络中任何子网路由的目标都不能相同,而且前者不能比后者更具体。GCP 会拒绝在这方面与子网路由相冲突的自定义静态路由。
  • 为避免在使用自动模式网络时发生冲突,请不要创建目标在 10.128.0.0/9 范围内的静态路由。如需了解详情,请查看为自动模式网络保留的 IP 范围

  • 自定义静态路由的目标不能与任何内部分配的范围重叠。

Console

  1. 转到 Google Cloud Platform Console 中的“路由”页面。
    转到“路由”页面
  2. 点击创建路由
  3. 指定该路由的名称说明
  4. 选择将应用该路由的现有网络
  5. 指定目标 IP 范围以定义该路由的目标。
  6. 指定该路由的优先级。只有在多个路由具有等效目标时,才会使用优先级来确定路由顺序。如需了解详情,请参阅静态路由参数
  7. 要使该路由仅适用于具有匹配网络标记的部分实例,请在实例标记字段中指定标记。如果将此字段留空,则该路由将适用于网络中的所有实例。
  8. 为该路由选择下一个跃点
    • 默认互联网网关可创建通向互联网的路由。
    • 指定实例允许您按名称选择实例。流量将路由到该实例(或同一地区中具有相同名称的任何替换实例),即使该实例的 IP 地址发生更改也是如此。
    • 指定 IP 地址允许您输入 VPC 网络中现有实例的 IP 地址。如需了解有效的下一个跃点 IP 地址的重要限制,请参阅静态路由的下一个跃点
    • 指定 VPN 隧道允许您选择现有的 Cloud VPN 隧道作为下一个跃点。隧道必须使用基于政策的路由,或者必须是基于路由的 VPN
  9. 点击创建

gcloud

使用以下 gcloud 命令创建新的自定义静态路由:

gcloud compute routes create [ROUTE_NAME] \
    --destination-range=[DEST_RANGE] \
    --network=[NETWORK] \
    [NEXT_HOP_SPECIFICATION]

将占位符替换为有效值:

  • [ROUTE_NAME] 是该路由的名称。
  • [DESTINATION_RANGE] 表示该路由适用的目标 IP 地址。最宽泛的目标是 0.0.0.0/0
  • [NETWORK] 是包含该路由的 VPC 网络的名称。
  • [NEXT_HOP_SPECIFICATION] 表示自定义静态路由的下一个跃点。您必须将下面其中一项指定为下一个跃点。如需了解不同类型的下一个跃点,请参阅路由概览中的静态路由的下一个跃点
    • --next-hop-gateway=default-internet-gateway:通过此类型的下一个跃点,可将流量发送到 VPC 网络之外,包括发送到互联网或专用 Google 访问权限的 IP 地址。
    • --next-hop-instance=[INSTANCE_NAME]--next-hop-instance-zone=[ZONE]:通过此类型的下一个跃点,可按名称和地区将流量定向到现有虚拟机实例。流量将被发送到与路由位于同一网络中的虚拟机网络接口的主要内部 IP 地址。如需了解目标虚拟机的注意事项,请参阅实例充当下一个跃点
    • --next-hop-address=[ADDRESS]:通过此类型的下一个跃点,可将流量定向到现有虚拟机实例的 IP 地址。如需了解目标虚拟机的注意事项,请参阅实例充当下一个跃点
    • --next-hop-vpn-tunnel=[VPN_TUNNEL_NAME]--next-hop-vpn-tunnel-region=[REGION]:通过此类型的下一个跃点,可将流量定向到使用静态路由的 Cloud VPN 隧道。

要使自定义静态路由仅适用于部分虚拟机(按网络标记),请添加 --tags 标志并指定一个或多个网络标记。如需详细了解网络标记与自定义静态路由如何协同工作,请参阅路由概览中的适用路由

如需详细了解 gcloud 语法,请参阅 SDK 文档

删除路由

您可以删除由系统生成的默认路由或任何自定义静态路由。对于其他类型的路由:

  • 除非删除相应的子网,否则无法删除子网路由

  • 要删除 Cloud Router 获悉的动态路由,您需要配置其 BGP 对等路由器以停止路由通告。

Console

  1. 转到 Google Cloud Platform Console 中的“路由”页面。
    转到“路由”页面
  2. 选中要删除的规则旁边的复选框。
  3. 点击删除
  4. 再次点击删除进行确认。

gcloud

使用以下 gcloud 命令删除自定义静态路由,将 [ROUTE_NAME] 替换为要移除的路由的名称:

gcloud compute routes delete [ROUTE_NAME]

操作顺序

在您发出添加或删除路由的请求时,您的更改将被暂存,然后以最终一致的方式传播到网络中的各个实例。如果更改请求的状态为 PENDINGRUNNING,则表示该请求尚未处理。处理完毕后,更改请求的状态为 DONE

如果您发出一系列更改请求,则更改可能按任何顺序应用。您提交更改请求的顺序不一定就是服务处理请求的顺序。此外,不同实例可能会在不同时间实施这些更改。

为实例启用 IP 转发

默认情况下,GCP 会对数据包执行严格的来源和目标检查,以便:

  • 只有在数据包的来源与网络中某个实例接口的内部 IP 地址相匹配时,该虚拟机实例才能发送数据包。
  • 只有在数据包的目标与网络中某个实例接口的 IP 地址相匹配时,数据包才会传送给该实例。

要将某个虚拟机用作路由的下一个跃点,该虚拟机必须能够接收目标并非该虚拟机自身的数据包。由于虚拟机要转发这些数据包,所以数据包的来源不同于该虚拟机自己的内部 IP。为了实现此目标,您必须为虚拟机启用 IP 转发。启用 IP 转发后,GCP 不会强制执行数据包来源和目标检查。

Console

  1. 转到“虚拟机实例”页面。
    转到“虚拟机实例”页面
  2. 点击创建实例
  3. 点击管理、磁盘、网络、SSH 密钥
  4. 点击网络
  5. 点击修改按钮以选择网络接口。
  6. 对于网络接口,从 IP 转发菜单中选择开启
  7. 指定任何其他实例参数。
  8. 点击创建

gcloud

使用 gcloud 创建实例时,请在命令中添加 --can-ip-forward 标志:

gcloud compute instances create ... --can-ip-forward

后续步骤

  • 要了解路由,请参阅路由概览
  • 要了解 GCP VPC 网络,请参阅 VPC 概览
  • 要了解如何创建和修改 VPC 网络,请参阅使用 VPC
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页