在 VPC 网络中测试连接

Connectivity Tests 的一个常见用例是在相同或对等虚拟私有云 (VPC) 网络中的两个 Compute Engine 虚拟机 (VM) 实例之间进行测试。

对于此类测试,Connectivity Tests 会使用配置分析和动态验证来评估可达性。如需分析配置,Connectivity Tests 会识别并评估跟踪记录路径。

本页面上的跟踪记录图表使用以下图例中描述的符号。
符号 名称 含义
灰色菱形
数据包跟踪图表的图例:灰色菱形。
Checkpoint Connectivity Tests 的决策点会检查配置,并确定是否应转发、递送或丢弃跟踪记录数据包。
蓝色矩形
数据包跟踪图表的图例:蓝色矩形。
跃点 跟踪记录数据包的转发路径中的一个步骤,表示将数据包转发到 VPC 网络中的下一个跃点的 Google Cloud 资源(例如,到 Cloud Load Balancing 代理或到 Cloud VPN 隧道)。
橙色六边形
数据包跟踪图表的图例:橙色六边形。
端点 跟踪记录数据包的来源或目标。

下图显示了两个虚拟机实例之间的典型跟踪记录路径。Match routes 对象可以表示在单个 VPC 网络中或在两个对等 VPC 网络之间定向流量的路由。

从源虚拟机到目标虚拟机的跟踪记录。
从源虚拟机到目标虚拟机的跟踪记录

以下步骤描述了与跟踪图表中的每个点对应的检查点。在每个检查点,检查可能会失败。查询结果会显示每次失败的原因。如需查看测试状态和消息的完整列表,请参阅解读配置分析状态

  1. Connectivity Tests 会验证来源虚拟机是否可以发送具有指定来源 IP 地址(或者可以默认为仿冒检查过程)的出站流量数据包。

  2. 当往返虚拟机实例的模拟数据包使用并非归该实例拥有的 IP 地址时,连接测试将执行仿冒检查。虚拟机拥有的 IP 地址包含所有虚拟机内部 IP 地址和次要 IP 地址。

    如果该地址似乎是来自外部流量的地址(也称为外部地址),则该 IP 地址无法通过仿冒检查。

  3. 为确定是否可以从来源发送跟踪记录数据包,Connectivity Tests 会验证相应的出站防火墙规则。在此过程中,Connectivity Tests 首先评估存在的任何分层防火墙政策规则。如需详细了解分层防火墙规则政策和 VPC 防火墙规则如何影响连接,请参阅分层防火墙政策示例

  4. Connectivity Tests 根据路由顺序查找(匹配)目标 IP 地址的路由。如果没有其他路由可用于目标虚拟机实例,则 Connectivity Tests 将使用将下一个跃点作为互联网网关的默认静态路由。所有 VPC 网络都使用此默认路由(除非您将其移除)。

  5. Connectivity Tests 可验证网站的入站流量防火墙规则是否允许数据包到达目标虚拟机。 同样,Connectivity Tests 首先评估存在的任何分层防火墙政策规则。

  6. 如果需要,Connectivity Tests 会对到达第二个虚拟机的数据包进行仿冒检查。

  7. Connectivity Tests 会验证目标虚拟机是否可以接收具有指定目标 IP 地址的数据包。如果此地址是外部 IP 地址,则目标虚拟机必须启用 IP 转发。外部 IP 地址是不属于虚拟机的地址。

Google Cloud Console 中的以下屏幕截图显示了虚拟机到虚拟机测试的结果。

配置分析显示结果数据包可递送(在 API 响应中,此标签对应于 Deliver 的最终状态)。

此结果表明,配置分析已验证了从源虚拟机到目标虚拟机的路径中每个 Google Cloud 资源的网络连接性。 在这种情况下,路由包括两条 VPC 防火墙规则:一条是隐式 VPC 防火墙规则(名为 default),一条是为此 VPC 网络创建的规则。

此外,Connectivity Tests 还可使用主动探测来动态验证目的地虚拟机是否可访问。最后一个数据包传输结果字段会显示此结果的详细信息。

用于虚拟机间跟踪记录的 Cloud Console 屏幕截图。
用于虚拟机间跟踪记录的 Cloud Console 屏幕截图

您可以展开跟踪记录路径中的每张卡片,以查看更多详细信息。

以下示例展示了入站流量防火墙规则的展开卡片。此卡片包含有关 VPC 网络、防火墙规则(允许)的已配置操作以及规则优先级的信息。

入站流量防火墙规则卡片已展开。
入站流量防火墙规则卡片已展开

当跟踪记录包含下一个跃点为对等 VPC 网络的 VPC 网络路由时,跟踪记录的起点不是虚拟机实例,而是 VPC 网络。由于您测试的 IP 地址来自网络范围而不是虚拟机实例,因此这种类型的跟踪记录可在网络级别验证防火墙规则和路由。

对等网络可以存在于相同或不同的项目中。以下跟踪记录示例展示了不同项目中的对等网络。

通过不同项目中可访问的对等 VPC 网络的虚拟机间跟踪记录。
通过不同项目中的可访问对等 VPC 网络的虚拟机间跟踪记录

VPC 网络测试失败

下表列出了 VPC 网络中测试的常见失败。

失败类型 说明 跟踪记录结果
被防火墙规则阻止 离开来源或目标端点的流量被分层防火墙政策规则或 VPC 防火墙规则阻止。
  • 如果连接被分层防火墙政策规则阻止,则跟踪记录包含政策的名称。运行测试的人员可能无权查看政策详细信息。如需详细了解这种情况,请参阅排查分层防火墙政策问题
  • 如果连接被 VPC 防火墙规则阻止,则跟踪记录会列出相关入站或出站防火墙规则的名称。
没有匹配的路由 找不到到目标端点的路由。
  • 如果来源和目标虚拟机实例位于不同的 VPC 网络中,并且这些网络未对等互连,则分析确定数据包可丢弃
  • 如果虚拟机位于同一网络中,但找不到匹配的路由,则流量将通过默认静态路由发送,且下一个跃点指向互联网网关。在这种情况下,流量始终不会到达目标虚拟机,并且分析确定数据包可丢弃
  • 如果没有指向互联网网关的路由,分析将确定数据包可丢弃
实例未运行 目标虚拟机实例存在,但未处于运行状态。 分析确定数据包可丢弃
下一个跃点无效 为该虚拟机实例配置的下一个跃点不再存在,并且到该实例的路由无效。 分析确定数据包可丢弃

以下屏幕截图展示了由于连接被入站分层防火墙政策规则阻止而失败的跟踪记录。

被分层防火墙政策规则阻止的跟踪记录的 Cloud Console 屏幕截图。
被分层防火墙政策规则阻止的跟踪记录的 Cloud Console 屏幕截图

共享 VPC 网络测试失败

在共享 VPC 网络中,没有对主机项目或服务项目的权限可能导致下表中列出的测试失败。

失败类型 行为 跟踪记录结果
仅对宿主项目的权限 您无法运行跟踪记录,因为您没有对目标 IP 地址所在的服务项目的权限。 配置分析显示结果配置分析已取消(在 API 响应中,此标签对应于最终状态 Abort)。
仅对服务项目的权限

您没有权限,因此无法运行跟踪记录或在 Cloud Console 中选择宿主项目网络。

由于宿主项目拥有网络配置,因此如果没有对宿主项目中的 VPC 防火墙规则、网络路由或 IP 地址的访问权限,就无法继续对服务项目中的资源进行跟踪记录。

总体可达性结果为 Undetermined,因为 Connectivity Tests 无法确定数据包是否可以递送到目标。

VPC 网络对等互连测试失败

使用 VPC 网络对等互连,如果没有从 primary 网络访问 peered 网络的 Google Cloud 项目的权限,则可能导致下表中列出的测试失败。

失败类型 行为 跟踪记录结果
您没有对对等 VPC 网络中项目配置的权限。 Connectivity Tests 只能跟踪主网络项目中的配置。 配置分析显示数据包可转发的结果。此结果表示数据包将离开网络并发送到您无权访问的网络。在这种情况下,数据包已转发到对等网络网关。在 API 响应中,此状态对应于 最终状态 Forward

以下跟踪路径显示了对等 VPC 网络的此失败。

通过不同项目中不可访问的对等 VPC 网络的虚拟机间跟踪记录。
通过不同项目中的不可访问对等 VPC 网络的虚拟机间跟踪记录

后续步骤