Connectivity Tests 配置分析在检查从指定来源到指定目的地的网络路径中每个 Google Cloud 资源的配置时,会经历一系列测试状态。使用此参考文档来解释这些状态。
如需详细了解 Connectivity Tests(包括有关实时数据平面分析的详细信息),请参阅概览。
测试状态
Connectivity Tests 配置分析按下列顺序提供以下测试状态的数据:
- 初始状态
- 配置检查状态
- 转发状态
- 转换状态
- 特殊状态
- 最终状态
- 总体可达性结果
有一些状态在每条跟踪中都出现,而其他状态仅在测试特定 Google Cloud 资源的配置或执行特定任务时出现。
最终状态和总体可达性结果提供了最重要的测试输出。
此外,测试输出可以包含与一种或多种状态相关联的 Google Cloud 资源的元数据;例如有关虚拟机 (VM) 实例的名称和 IP 地址的信息。
配置分析如何评估可达性
配置分析通过验证网络路径中的 Google Cloud 资源配置来模拟测试数据包。部分 无效网络配置的示例包括 Cloud Load Balancing 具有后端或网络路由不存在的转发规则。
在配置检查状态下, Connectivity Tests 会收集有关 网络路由,例如用户配置的路由、基于 BGP 的动态路由 或基于政策的路由然后,配置分析会根据 基于适用性和顺序的网络路由。
对于配置检查状态,verified
表示 Connectivity Tests 确认所测试的 Google Cloud 资源的配置有效。该配置允许模拟测试数据包继续通过被测试的网络路径。
对于入站和出站防火墙规则,verified
表示配置分析会确认防火墙规则有效。防火墙规则允许模拟测试数据包通过。
如果 Connectivity Tests 确定配置无效,则该数据包的最终状态为 Drop
。
总体可达性结果
配置分析提供了可达性状态的总体摘要,也称为结果。结果可以具有四个值:Reachable
、Unreachable
、Ambiguous
和 Undetermined
。
值表
下表描述了每种类型的总体可达性结果的值。
总体可达性结果 | 说明 |
---|---|
Reachable |
可能有两种情形。在这两种情况下,Connectivity Tests 均未发现任何配置问题。因此,这两种情况都被认为是 Reachable 。
|
Unreachable |
来源数据包有望在到达目的地之前被丢弃。所有跟踪记录的最终状态为 Drop 。 |
Ambiguous |
如果来源端点和目标端点不能唯一地标识网络中的测试位置,并且总体可达性结果包含混合了 在这种情况下,多个跟踪记录中的最终状态将返回不同的最终状态。 |
Undetermined |
无法确定可达性。一个跟踪记录的最终状态为 由于以下原因之一,无法确定从来源到目的地的可达性:
|
多条跟踪记录
每个配置分析都可以包含多条跟踪记录,并且这些跟踪记录的最终状态可能不相同。例如,如果为负载平衡器配置了 n
后端虚拟机实例,则发到 Google Cloud 负载平衡器 VIP 的数据包可能具有 n
跟踪记录。这些 n
跟踪记录可能没有相同的最终状态。
由于分析可以生成多个可能的跟踪记录,因此下述任一条件为 true:
- 如果只有一个跟踪记录结果,则总体可达性结果与跟踪的最终状态相同。
- 如果有多个跟踪记录结果,系统将根据所有跟踪记录中包含的最终状态的分布来计算总体可达性结果。
结果元数据
除了跟踪记录的总体可达性结果之外,每个测试结果还包含以下元数据:
- 测试状态得到验证的时间
- 测试失败或取消的错误详细信息
- 每个跟踪记录的跟踪详细信息
测试失败或取消的错误详细信息以代码和消息的形式显示在总体可达性结果中。例如,最终状态为 Abort
的测试可能会显示错误消息,例如 Failed to pull initial config. An internal error occurred.
初始状态
初始状态期间,配置分析从网络端点开始进行模拟。
消息 | 说明 |
---|---|
START_FROM_INSTANCE |
该数据包源自 Compute Engine 实例。Connectivity Tests 已填充 InstanceInfo 元数据。 |
START_FROM_INTERNET |
该数据包源自互联网。Connectivity Tests 已填充 EndpointInfo 元数据。 |
START_FROM_PRIVATE_NETWORK |
该数据包源自具有内部来源 IP 地址的 VPC 网络或本地网络。如果来源是用户可见的 VPC 网络,则 Connectivity Tests 将使用网络详细信息填充 NetworkInfo 元数据。 |
START_FROM_CLOUD_FUNCTION |
该数据包源自 Cloud Run 函数。
Connectivity Tests 已填充 CloudFunctionInfo 元数据。 |
START_FROM_CLOUD_RUN_REVISION |
数据包源自
Cloud Run 服务。
Connectivity Tests 已填充 CloudRunRevisionInfo 元数据。 |
START_FROM_APP_ENGINE_VERSION |
数据包源自 App Engine 标准环境服务的某个版本。
Connectivity Tests 已填充 AppEngineVersionInfo 元数据。 |
最终状态
有四种最终状态:Drop
、Abort
、Forward
和 Deliver
。以下每一个部分都有一个表,其中包含每个状态的消息和说明。
Drop
Connectivity Tests 丢弃了模拟的测试数据包,因为测试目的地由于以下原因而无法到达。
消息 | 说明 |
---|---|
UNKNOWN_EXTERNAL_ADDRESS |
无法将目标外部地址解析为已知目标。 |
FOREIGN_IP_DISALLOWED |
如果启用了 ip_forward ,则虚拟机实例只能发送或接收具有外部 IP 地址的数据包。换句话说,外部 IP 地址未通过仿冒检查。 |
FIREWALL_RULE |
因为防火墙规则而被丢弃,除非因为连接跟踪之故获得允许。 Connectivity Tests 可能会拒绝测试数据包,因为该数据包与阻止防火墙规则匹配。但是,由于防火墙规则的连接跟踪,实际的数据层面可能允许数据包通过。无论防火墙规则如何,连接跟踪都允许现有连接的数据包返回。 |
NO_ROUTE |
因为没有路由而被丢弃。 |
ROUTE_BLACKHOLE |
因为匹配路由的下一个跃点不存在而被丢弃。 |
ROUTE_WRONG_NETWORK |
数据包已发送到错误(意外的)网络,如检测无效或不一致的配置中所示。 |
PRIVATE_TRAFFIC_TO_INTERNET |
具有内部目标地址的数据包已发送到互联网网关。 |
PRIVATE_GOOGLE_ACCESS_DISALLOWED |
仅具有内部 IP 地址的虚拟机实例尝试访问 Google API 或 Google 服务,但未启用专用 Google 访问通道。 |
NO_EXTERNAL_ADDRESS |
仅具有内部 IP 地址的虚拟机实例尝试了通过下一个跃点是默认互联网网关的路由来访问外部主机。在子网中未启用 Cloud NAT 或没有使用其他类型的下一个跃点(例如代理虚拟机)的其他默认路由时,会出现这种情况。 |
UNKNOWN_INTERNAL_ADDRESS |
目标内部地址无法解析为已知目标。 |
FORWARDING_RULE_MISMATCH |
转发规则的协议和端口与数据包标头不匹配,或者数据包未源自或未定向到区域负载平衡器所在的区域。 |
FORWARDING_RULE_NO_INSTANCES |
转发规则未配置后端。 |
FIREWALL_BLOCKING_LOAD_BALANCER_BACKEND_HEALTH_CHECK |
防火墙规则阻止了对后端的健康检查探测,并导致后端无法用于来自负载均衡器的流量。 在测试 Cloud Load Balancing 的序列时,配置分析会验证现有防火墙规则是否已配置为允许将健康检查探测数据包发送到 Cloud Load Balancing 后端。此配置检查结果为 |
INSTANCE_NOT_RUNNING |
从非运行状态的虚拟机实例发送或发送给该实例的数据包。 |
TRAFFIC_TYPE_BLOCKED |
流量类型被阻止,用户无法配置防火墙规则来启用它。如需了解详情,请参阅始终禁止的流量。 |
GKE_MASTER_UNAUTHORIZED_ACCESS |
未授权访问 Google Kubernetes Engine 控制平面端点。如需了解详情,请参阅访问集群端点。 |
DROPPED_INSIDE_GKE_SERVICE |
数据包被丢弃在 Google Kubernetes Engine 服务中。 |
CLOUD_SQL_INSTANCE_UNAUTHORIZED_ACCESS |
未经授权,无法访问 Cloud SQL 实例端点。如需了解详情,请参阅使用授权网络进行授权。 |
DROPPED_INSIDE_CLOUD_SQL_SERVICE |
数据包被丢弃在 Cloud SQL 服务中。 |
GOOGLE_MANAGED_SERVICE_NO_PEERING |
由于源网络与 Google 管理的服务网络之间没有对等互连,数据包被丢弃。 |
CLOUD_SQL_INSTANCE_NO_IP_ADDRESS |
由于 Cloud SQL 实例既没有专用 IP 地址也没有公共 IP 地址,数据包被丢弃。 |
PSC_CONNECTION_NOT_ACCEPTED |
由于与使用 Private Service Connect 的已发布服务的连接未被接受,数据包被丢弃。 |
CLOUD_FUNCTION_NOT_ACTIVE |
数据包因 Cloud Run 函数未启用而被丢弃。 |
VPC_CONNECTOR_NOT_SET |
数据包被丢弃,因为 App Engine 标准环境服务、Cloud Run 函数或 Cloud Run 修订版本没有配置无服务器 VPC 访问通道连接器。 |
VPC_CONNECTOR_NOT_RUNNING |
由于无服务器 VPC 访问通道连接器未在运行,数据包被丢弃。 |
CLOUD_RUN_REVISION_NOT_READY |
数据包因为 Cloud Run 修订版本未被丢弃 无法处理流量。 |
取消
由于缺少基本信息(例如缺少网络配置的访问权限),配置分析已停止。
当 Connectivity Tests 没有正确的权限从服务项目的宿主项目中获取配置时,通常会产生此状态,如下表所示。
消息 | 说明 |
---|---|
UNKNOWN_NETWORK |
由于未知网络而被取消。此分析无法继续,因为在共享 VPC 网络中,运行测试的用户无权访问宿主项目的网络配置,包括防火墙规则和路由。 运行 Connectivity Tests 测试要求运行测试的用户可以读取宿主项目中的资源的配置(例如路由)。发生这种情况是因为网络资源是在宿主项目中分配的,而实际资源却存在于服务项目中。 |
UNKNOWN_IP |
分析被取消,因为分析所需的 IP 地址未知。这是由于用户输入错误,或配置分析无法根据提供的输入参数确定有效的端点。 在共享 VPC 网络中,运行测试的用户无权访问宿主项目的网络配置。根据服务项目中的 IP 地址进行测试需要此访问权限。 |
UNKNOWN_PROJECT |
由于无法从 Connectivity Tests 测试的输入中获得任何项目信息,因此分析被取消。这是由于用户输入错误或基于提供的输入参数,分析无法确定有效的项目。 |
PERMISSION_DENIED |
分析被取消,因为用户缺少访问运行测试所需的全部或部分网络配置的权限。 |
NO_SOURCE_LOCATION |
由于无法从测试输入中获得有效的来源端点,因此分析被取消。这是由于用户输入错误或基于提供的输入参数,分析无法确定有效的来源端点。 |
INVALID_ARGUMENT |
由于测试输入中指定的来源和/或目标端点无效,因此分析被取消。该消息的可能原因包括:
|
NO_EXTERNAL_IP |
由于流量是从公共 IP 地址发送到不具有外部 IP 地址的虚拟机实例,因此分析被取消。 |
UNINTENDED_DESTINATION |
分析被取消,因为没有任何一项跟踪记录能够匹配测试输入中指定的目标信息。 |
TRACE_TOO_LONG |
由于跟踪记录中的步骤数超过了特定限制,分析被取消。此问题可能是由路由循环引起的。 |
INTERNAL_ERROR |
因内部服务器错误而中止。 |
SOURCE_ENDPOINT_NOT_FOUND |
因找不到来源端点而中止。 |
MISMATCHED_SOURCE_NETWORK |
因来源网络与来源端点不匹配而中止。 |
DESTINATION_ENDPOINT_NOT_FOUND |
因找不到目标端点而中止。 |
MISMATCHED_DESTINATION_NETWORK |
因目标网络与目标端点不匹配而中止。 |
转发
分析在特定端点处停止,无法继续进行:
- 根据用户拥有权限的配置,分析已部分完成。
- 测试数据包已转发到未知配置的网络。
- 尚未根据已知配置丢弃测试目标,并且已将测试数据包转发到 Connectivity Tests 无法查看的网络。
消息 | 转发目的地 |
---|---|
PEERING_VPC |
到对等 VPC 网络 |
VPN_GATEWAY |
到 Cloud VPN 网关 |
INTERCONNECT |
到 Cloud Interconnect 连接 |
GKE_MASTER |
到 GKE 控制平面 |
IMPORTED_CUSTOM_ROUTE_NEXT_HOP |
从对等 VPC 网络导入的自定义路由的下一个跃点。 |
CLOUD_SQL_INSTANCE |
到 Cloud SQL 实例 |
递送
分析能够到达目的地并递送模拟测试数据包。
最终状态 Deliver
不能保证流量可以通过数据层面。该分析的目的是验证可能导致流量丢弃的配置问题。
消息 | 目的地 |
---|---|
INSTANCE |
Compute Engine 虚拟机实例 |
INTERNET |
互联网 |
GOOGLE_API |
Google API |
GKE_MASTER |
GKE 控制平面 |
CLOUD_SQL_INSTANCE |
Cloud SQL 实例 |
PSC_GOOGLE_API |
所有使用 Private Service Connect 的 Google API 和服务 |
PSC_VPC_SC |
使用 Private Service Connect 的 VPC Service Controls |
PSC_PUBLISHED_SERVICE |
使用 Private Service Connect 的已发布服务 |
元数据
配置分析显示最终状态的以下元数据。
元数据名称 | 说明 |
---|---|
AbortInfo |
最终状态为 Abort 的原因以及导致该状态的资源 URI。 |
DropInfo |
最终状态为 Drop 的原因以及导致该状态的资源 URI。 |
ForwardInfo |
测试数据包最终转发到的目标类型和目标资源 URI(最终状态为 Forward )。 |
其他状态
测试数据包在达到其中一种最终状态之前,会经过 以下中间状态:配置检查状态 转发状态、转换状态和特殊状态。
配置检查状态
在配置检查状态期间,Connectivity Tests 会检查模拟网络路径中 Google Cloud 资源的配置,验证资源配置是否有效,并验证配置是否允许模拟测试数据包继续通过网络路径。
如果需要,配置分析会执行仿冒检查。
消息 | 说明 |
---|---|
APPLY_INGRESS_FIREWALL_RULE |
已验证的入站流量防火墙规则。 |
APPLY_EGRESS_FIREWALL_RULE |
已验证的出站流量防火墙规则。 |
APPLY_ROUTE |
验证路由。 |
APPLY_FORWARDING_RULE |
匹配的转发规则。 |
SPOOFING_APPROVED |
数据包是在外部 IP 地址下发送或接收的,但被允许。如需了解详情,请参阅仿冒检查。 |
转发状态
在转发状态期间,Connectivity Tests 会模拟一个数据包,该数据包到达测试路径中的中间 Google Cloud 资源(例如,数据包到达 Cloud VPN 网关或 Google Cloud 负载平衡器)。
消息 | 说明 |
---|---|
ARRIVE_AT_INSTANCE |
已到达 Compute Engine 虚拟机实例。 |
ARRIVE_AT_INTERNAL_LOAD_BALANCER |
已到达使用专用 IP 地址作为 VIP 的 Google Cloud 负载平衡器。 |
ARRIVE_AT_EXTERNAL_LOAD_BALANCER |
已到达 Google Cloud 负载平衡器的公共 IP 地址。 |
ARRIVE_AT_VPN_GATEWAY |
已到达 Cloud VPN 网关。 |
ARRIVE_AT_VPN_TUNNEL |
已到达 Cloud VPN 隧道。 |
ARRIVE_AT_VPC_CONNECTOR |
已到达无服务器 VPC 访问通道连接器。 |
转换状态
在转换状态期间,Connectivity Tests 会验证数据包发生更改的模拟配置(例如,如果 Cloud NAT 转换数据包标头,或 Google Cloud 负载平衡代理终止并重新启动与虚拟机实例的入站 TCP 会话时)。
消息 | 说明 |
---|---|
NAT |
数据包标头已转换。 |
PROXY_CONNECTION |
原始连接已终止,并启动了新的代理连接。 |
特殊状态
在这种状态下,测试查看者无权查看一个或多个 Google Cloud 资源。如需了解详情,请参阅测试权限。
元数据名称 | 说明 |
---|---|
VIEWER_PERMISSION_MISSING |
测试结果的查看者无权在此步骤中查看 Google Cloud 资源的配置。 |
资源元数据
Connectivity Tests 显示其检查的 Google Cloud 资源配置的以下元数据。
元数据名称 | 说明 |
---|---|
EndpointInfo |
用于测试的端点。Connectivity Tests 会从来源和目标端点获取 EndpointInfo ,并使用数据平面的模型来验证信息。 |
FirewallInfo |
与防火墙规则关联的元数据。 |
ForwardingRuleInfo |
与 VPC 转发规则关联的元数据。 |
InstanceInfo |
与 Compute Engine 虚拟机实例关联的元数据。 |
LoadBalancerInfo |
与 Google Cloud 负载平衡器关联的元数据。 |
NetworkInfo |
与 VPC 网络关联的元数据。 |
RouteInfo |
与 VPC 网络路由关联的元数据。 |
AppEngineVersionInfo |
与 App Engine 标准环境服务的某个版本关联的元数据。 |
CloudRunRevisionInfo |
与 Cloud Run 修订版本关联的元数据。 |
CloudFunctionInfo |
与 Cloud Run 函数关联的元数据。 |
VpcConnectorInfo |
与无服务器 VPC 访问通道连接器关联的元数据。 |