连接故障排除概述

随着 Azure 中复杂和高性能工作负载的增加,迫切需要提高对运行这些工作负载的复杂网络的运行状态的可见性和控制。 此类复杂网络是使用网络安全组、防火墙、用户定义的路由和 Azure 提供的资源实现的。 复杂的配置给连接问题的排查带来了困难。

Azure 网络观察程序的连接故障排除功能有助于减少诊断和排查网络连接问题的时间。 返回的结果可以提供有关连接问题的根本原因以及它是由平台还是用户配置问题引起的见解。

连接故障排除可提供一种全面的方法来执行所有连接主要检查,检测与网络安全组、用户定义的路由和阻止的端口相关的问题,从而减少了平均解决时间 (MTTR)。 它提供以下结果以及可操作的见解,其中提供了分步指南或相应的文档,以更快地解决问题:

  • 使用不同目标类型(VM、URI、FQDN 或 IP 地址)进行连接测试
  • 影响可访问性的配置问题
  • 从源到目标的所有可能的逐跳路径
  • 逐跳延迟
  • 延迟(源和目标之间的最小、最大和平均延迟)
  • 从源到目标的图形拓扑视图
  • 连接故障排除检查期间失败的探测数

支持的源和目标类型

连接故障排除提供检查来自以下任一 Azure 资源的 TCP 或 ICMP 连接的功能:

  • 虚拟机
  • 虚拟机规模集
  • Azure Bastion 实例
  • 应用程序网关(v1 除外)

重要

连接故障排除需要从中进行故障排除的虚拟机安装了 AzureNetworkWatcherExtension 扩展。 目标虚拟机上不需要该扩展。

连接故障排除可以测试到以下任一目标的连接:

  • 虚拟机
  • 完全限定的域名 (FQDN)
  • 统一资源标识符 (URI)
  • IP 地址

连接故障排除检测到的问题

连接故障排除可以检测以下可能影响连接的问题类型:

  • 高 VM CPU 利用率
  • 高 VM 内存利用率
  • 阻止流量的虚拟机(来宾)防火墙规则
  • DNS 解析失败
  • 配置错误或缺少路由
  • 阻止流量的网络安全组 (NSG) 规则
  • 无法打开指定源端口上的套接字
  • Azure ExpressRoute 线路缺少地址解析协议条目
  • 服务器未侦听指定的目标端口

响应

下表显示了运行连接故障排除后返回的属性。

properties 说明
ConnectionStatus 连接检查的状态。 可能的结果为 ReachableUnreachable
AvgLatencyInMs 连接检查期间的平均延迟,以毫秒为单位。 (仅当检查状态为 reachable 时才显示)。
MinLatencyInMs 连接检查期间的最小延迟,以毫秒为单位。 (仅当检查状态为 reachable 时才显示)。
MaxLatencyInMs 连接检查期间的最大延迟,以毫秒为单位。 (仅当检查状态为 reachable 时才显示)。
ProbesSent 检查期间发送的探测数。 最大值为 100。
ProbesFailed 检查期间失败的探测数。 最大值为 100。
Hops 从源到目标的跃点路径。
Hops[].Type 资源的类型。 可能的值为 Source、VirtualAppliance、VnetLocal 和 Internet。
Hops[].Id 跃点的唯一标识符。
Hops[].Address 跃点的 IP 地址。
Hops[].ResourceId 如果跃点是 Azure 资源,则为跃点的资源 ID。 如果跃点是 Internet 资源,则 ResourceID 为 Internet。
Hops[].NextHopIds 创建的下一跃点的唯一标识符。
Hops[].Issues 在检查该跃点期间遇到的一系列问题。 如果未出现任何问题,则该值为空。
Hops[].Issues[].Origin 当前跃点上出现问题的位置。 可能的值为:
Inbound - 问题出现在从前一跃点到当前跃点的链接上。
Outbound - 问题出现在从当前跃点到下一跃点的链接上。
Local - 问题出现在当前跃点上。
Hops[].Issues[].Severity 检测到的问题的严重性。 可能的值为“Error”和“Warning”。
Hops[].Issues[].Type 检测到的问题的类型。 可能的值为:
CPU
内存
GuestFirewall
DnsResolution
NetworkSecurityRule
UserDefinedRoute
Hops[].Issues[].Context 有关检测到的问题的详细信息。
Hops[].Issues[].Context[].key 返回的键值对中的键。
Hops[].Issues[].Context[].value 返回的键值对中的值。
NextHopAnalysis.NextHopType 下一个跃点的类型。 可能的值为:
HyperNetGateway
Internet

VirtualAppliance
VirtualNetworkGateway
VnetLocal
NextHopAnalysis.NextHopIpAddress 下一个跃点的 IP 地址。
与要返回的路由关联的路由表的资源标识符。 如果返回的路由不对应于任何用户创建的路由,则此字段将是字符串“System Route”。
SourceSecurityRuleAnalysis.Results[].Profile 网络配置诊断配置文件。
SourceSecurityRuleAnalysis.Results[].Profile.Source 流量源。 可能的值为“*”、“IP Address/CIDR”和“Service Tag”。
SourceSecurityRuleAnalysis.Results[].Profile.Destination 流量目标。 可能的值为“*”、“IP Address/CIDR”和“Service Tag”。
SourceSecurityRuleAnalysis.Results[].Profile.DestinationPort 流量目标端口。 可能的值为“*”和 (0 - 65535) 范围内的单个端口。
SourceSecurityRuleAnalysis.Results[].Profile.Protocol 要验证的协议。 可能的值为“*”、“TCP”和“UDP”。
SourceSecurityRuleAnalysis.Results[].Profile.Direction 流量的方向。 可能的值为“Outbound”和“Inbound”。
SourceSecurityRuleAnalysis.Results[].NetworkSecurityGroupResult 网络安全组结果。
SourceSecurityRuleAnalysis.Results[].NetworkSecurityGroupResult.EvaluatedSecurityGroups[] 网络安全组诊断结果列表。
SourceSecurityRuleAnalysis.Results[].NetworkSecurityGroupResult.SecurityRuleAccessResult 允许或拒绝网络流量。 可能的值为“Allow”和“Deny”。
SourceSecurityRuleAnalysis.Results[].NetworkSecurityGroupResult.EvaluatedSecurityGroups[].AppliedTo 应用网络安全组的 NIC 或子网的资源 ID。
SourceSecurityRuleAnalysis.Results[].NetworkSecurityGroupResult.EvaluatedSecurityGroups[].MatchedRule 匹配的网络安全规则。
SourceSecurityRuleAnalysis.Results[].NetworkSecurityGroupResult.EvaluatedSecurityGroups[].MatchedRule.Action 允许或拒绝网络流量。 可能的值为“Allow”和“Deny”。
SourceSecurityRuleAnalysis.Results[].NetworkSecurityGroupResult.EvaluatedSecurityGroups[].MatchedRule.RuleName 匹配的网络安全规则的名称。
SourceSecurityRuleAnalysis.Results[].NetworkSecurityGroupResult.EvaluatedSecurityGroups[].NetworkSecurityGroupId 网络安全组 ID。
SourceSecurityRuleAnalysis.Results[].NetworkSecurityGroupResult.RulesEvaluationResult[] 网络安全规则评估结果列表。
SourceSecurityRuleAnalysis.Results[].NetworkSecurityGroupResult.RulesEvaluationResult[].DestinationMatched 值指示目标是否匹配。 布尔值。
SourceSecurityRuleAnalysis.Results[].NetworkSecurityGroupResult.RulesEvaluationResult[].DestinationPortMatched 值指示目标端口是否匹配。 布尔值。
SourceSecurityRuleAnalysis.Results[].NetworkSecurityGroupResult.RulesEvaluationResult[].Name 网络安全规则的名称。
SourceSecurityRuleAnalysis.Results[].NetworkSecurityGroupResult.RulesEvaluationResult[].ProtocolMatched 值指示协议是否匹配。 布尔值。
SourceSecurityRuleAnalysis.Results[].NetworkSecurityGroupResult.RulesEvaluationResult[].SourceMatched 值指示源是否匹配。 布尔值。
SourceSecurityRuleAnalysis.Results[].NetworkSecurityGroupResult.RulesEvaluationResult[].SourcePortMatched 值指示源端口是否匹配。 布尔值。
DestinationSecurityRuleAnalysis 与 SourceSecurityRuleAnalysis 格式相同。
SourcePortStatus 确定源端口是否可访问。 可能的值为:
Unknown
Reachable
Unstable
NoConnection
超时
DestinationPortStatus 确定目标端口是否可访问。 可能的值为:
Unknown
Reachable
Unstable
NoConnection
超时

以下示例显示在跃点上发现的问题。

"Issues": [
    {
        "Origin": "Outbound",
        "Severity": "Error",
        "Type": "NetworkSecurityRule",
        "Context": [
            {
                "key": "RuleName",
                "value": "UserRule_Port80"
            }
        ]
    }
]

错误类型

连接问题故障排除返回有关连接的错误类型。 下表列出了可能返回的错误类型。

类型 描述
CPU CPU 利用率较高。
内存 内存利用率较高。
GuestFirewall 虚拟机防火墙配置导致流量被阻止。

TCP ping 是一个独特的用例,如果没有允许的规则,防火墙本身也会响应客户端的 TCP ping 请求,即使 TCP ping 未到达目标 IP 地址/FQDN 也是如此。 不会记录此事件。 如果存在允许访问目标 IP 地址/FQDN 的网络规则,则 ping 请求将到达目标服务器,并且其响应将中继回客户端。 此事件记录在网络规则日志中。
DNSResolution 目标地址的 DNS 解析失败。
NetworkSecurityRule 流量被网络安全组规则阻止(返回安全规则)。
UserDefinedRoute 用户定义的路由或系统路由导致流量被丢弃。

后续步骤

若要了解如何使用连接故障排除来测试连接和排查其问题,请继续查看: