有关 NCSI 的常见问题的解答

以下部分提供有关 Windows 中网络连接状态指示器(NCSI)的快速常见问题解答。

重要

以前由 Azure Front Door 托管的公共 NCSI 探测服务器自 2023 年 6 月 20 日起由 Akamai 托管。

Microsoft 建议作为最佳做法使用防火墙规则允许 NCSI 流量,而不应基于 IP 地址。 如果您观察到任何失败的 NCSI 探测,请首先检查企业防火墙或代理是否阻止了客户端探测。 如果探测在上述日期之前正常工作,那么为允许 13.107.4.52 的出站 HTTP 请求而添加的规则就是问题所在。

  • 可以通过单击开始>键入 wf.msc> 并选择 Enter,在具有高级安全性的 Windows Defender 防火墙中修改出站规则。 应基于起始服务创建出站规则。

  • NLS(网络列表服务)适用于:

    • Windows Server 2022 和将来的迭代
    • Windows 11
  • NLA (网络位置感知) 服务适用于:

    • Windows Server 2019 和以前的迭代
    • Windows 10 和以前的迭代

对于外部基于硬件的防火墙后面的用户,我们建议客户与其硬件供应商合作,为环境构建适当的规则,因为每个用户在实现中都有不同的控制和配置。 NCSI 探测遵循与 Windows 更新相同的要求,即允许主机名通过而不是映射到特定 IP 地址。

何时发送主动探测?

NCSI 监视的以下事件表明网络状态可能需要刷新,由此触发了活动探测:

  • 一般性的接口或网络条件变化。
  • 代理检测或更改。
  • 热点检测或更改。

满足新的网络条件时(无论是有线、无线还是使用 VPN 的网络),网络接口都可以使用,并且主动探测将测试网络连接。 例如,建立无线连接时:

[Microsoft-Windows-NCSI/Analytic ] Transitioning to State: Interface NetReady
Interface Luid: 0x47008000000000

活动探测成功后会发生什么情况?

成功的探测提供以下输出:

[Microsoft-Windows-NCSI/Analytic ] Active Internet Probe finished on interface {426b6867-b0e4-4ff9-a14b-dd6a4345c24e} (true) {426b6867-b0e4-4ff9-a14b-dd6a4345c24e}, true, true, false, true, false
  • 如果探测未遍历代理,则 NCSI 会记录这种情况。
  • 网络接口图标会更改,以反映 Internet 连接是可访问的。
  • 如果在未提供凭据,或者默认不允许在未提供进一步输入的情况下访问 Internet 的强制验证门户后面操作,主动探测将设置为本地功能。 有关详细信息,请参阅强制验证门户

是什么会阻止一次主动探测的成功?

许多因素可能会阻止活动探测到达互联网探测服务器,或导致服务器未能成功向客户端接收响应。 如下所示:

  • 代理错误、配置错误、间歇性环境条件。
  • PAC 文件问题会阻止数据包被路由到正确的代理,或者客户端无法识别发送探测所需的代理的存在。
  • VPN 配置、设置处理延迟,以及错误地将探测路由到某个位置,而由于连接超时,在该位置无法轻松访问 Internet。
  • 已知 NCSI 查找名称的域名系统 (DNS) 服务器解析问题。 这些通常是间歇性问题,不缺少记录。

被动探测如何确定连接性?

如果为接口记录的跳点计数至少达到了系统最小值,则它会向 Internet 更新接口功能。 除非“何时发送活动探测?”中所述的事件之一发生,否则不会为此接口进行更多活动探测。 探测。

如果 NCSI 看到连接仅限本地,则满足以下条件:

  • 跃点计数未达到系统最小值。
  • 无法检索特定接口的跃点计数数据。
  • 路由表中未为下一个跃点指向 Internet 上根服务器的接口创建条目。
  • 活动探测已启用,但自接口连接后未成功完成活动探测。

默认的系统最小跃点计数是多少?

默认跃点计数为 8,但此数量对于企业而言不一定是最佳的。 3 的值适用于大多数企业基础结构。

注意

Microsoft 不建议非企业用户更改此跃点计数值,因为它们可能会有所变化。

被动探针何时运行以及多久运行一次?

几个因素会影响被动探测是否应基于被动轮询数据执行。 必须满足以下条件:

  • 受组策略的允许。 如果未配置组策略,则默认允许使用组策略。 可以通过导航到 计算机配置\管理模板\网络\网络连接状态指示器\指定被动轮询,在组策略中对此进行验证。
  • 用户已登录或在最近 30 秒内登录。

如果允许被动探测运行,则每隔 15 秒运行一次。 可以通过编辑以下注册表项来替代此间隔:

HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet\PassivePollPeriod

注册表中 HTTP Web 探测服务器路径在哪里?

在以下路径中找到探测内容以及预定义的 DNS 探测主机:

HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet

注意

从 Windows 10 内部版本 14393(1607)开始,Web 探测 (HTTP) 请求将发送到 www.msftconnecttest.com/connecttest.txt

HTTP 200 OK 的预期响应应包含有效负载"Microsoft Connect Test",例如:

HTTP:Request, GET /connecttest.txt
HTTP:Response, Status: Ok, URL: /connecttest.txt

以前曾使用 www.msftncsi.com/ncsi.txt,预期的响应是 HTTP 200 OK,负载中包含“Microsoft NCSI”。 对于 DNS 探测,查询将发送到 dns.msftncsi.com。 例如:

Query for dns.msftncsi.com of type A on class Internet
Response - Success, 131.107.255.255

注意

4-c-0003.c-msedge.net 通常可识别为 MSFT 服务网络的入口点,其中包括 Microsoft 托管的 Internet 探测服务器。 “4”适用于 IPv4。 6-c-0003.c-msedge.net 适用于 IPv6。

NCSI 如何知道是使用 HTTP 还是 DNS 探测?

从 Windows 11 开始,始终使用 HTTP。 你可能会看到 DNS 活动,但其用途是确定发送 HTTP 探测的位置。 在此之前,如果没有代理,则使用 DNS 进行 NCSI 探测。 例:

[Microsoft-Windows-NCSI/Analytic ] Active Internet Probe (DNS) started on interface {426b6867-b0e4-4ff9-a14b-dd6a4345c24e}

网络探测失败的原因

网络探测可能失败的原因有多种。 对于遇到的任何失败,它会记录在事件查看器中进行调查。

输出 描述
ActiveDnsProbeFailed DNS 探测失败。

通过数据包捕获进行验证。
ActiveHttp探针失败 探测服务器的 DNS 名称未解析。 尝试发送 Web 探测请求之前,NSCI 失败。 这可能是由于 DNS 故障、无法连接到代理服务器等造成的。

通过数据包捕获进行验证。
HTTP主动探测失败但DNS成功 探测服务器 DNS 名称已解析,但解析的 IP 地址的 HTTP 探测失败。

使用数据包捕获应用程序并验证数据捕获。
ActiveHttpProbeFailedHotspotDetected HTTP 探测无法穿越热点或强制验证门户。 这通常在收到 HTTP 响应 200 时确定,但响应有效负载不包含文本文件 connecttest.txt。 或者,可能会收到非 200 HTTP 状态代码(如 302 或 304)。

处理无法建立无线连接的问题时,通常会观察到此状态代码。 通过数据包捕获进行验证。 用户可能需要对热点进行身份验证,或者可能需要修改热点配置。
无地址 目标适配器未分配首选 IP 地址。

存在无法通过 NSCI 解决的更大问题。
NoGlobalAddress 与 NoAddress 相同,但特定于 IPV6 接口。
NoRoute 从中发送探测的接口在路由表中没有指向 Internet 的路由。

可能发生这种问题的一些场景包括,新连接的 VPN 尚未使用新路由更改路由表,或者在强制隧道 VPN 方案中,因为路由表已修改,在连接 VPN 接口后,物理接口转向本地连接。
PassivePacketHops 不是故障。

收到的数据包表示某种级别的连接。 在功能提升而不是下降时使用此变更原因。

下面是探测失败的输出:

[Microsoft-Windows-NCSI/Analytic ] Active Internet Probe finished on interface {426b6867-b0e4-4ff9-a14b-dd6a4345c24e} (false) {426b6867-b0e4-4ff9-a14b-dd6a4345c24e}, false, true, false, false, false

[Microsoft-Windows-NCSI/Operational ] Capability change on {426b6867-b0e4-4ff9-a14b-dd6a4345c24e} (0x6008001000000 Family: V4 Capability: Local ChangeReason: SuspectDnsProbeFailed) {426b6867-b0e4-4ff9-a14b-dd6a4345c24e}

备注

如果探测失败是由于遍历代理 NCSI 将连接状态设置为 None。 如果探测失败且未遍历(而是直接通过),NCSI 会将连接状态设置为“本地”。

NCSI 退出热点模式何时?

当 NCSI 能够获取具有匹配预期内容“Microsoft Connect 测试”的主动探测时。 由于位于热点后面,NCSI 除了检测和报告热点之外发挥不了其他作用。 由用户决定是否通过热点进行身份验证,以便允许流量进入互联网。

NCSI 有责任在其探测被重定向时向系统准确报告本地连接。 只有 Internet 托管探测服务器应返回证明 Internet 连接的预期内容。

下面是探针故障可能传达的信息示例:

[Microsoft-Windows-NCSI/Analytic ] Active Internet Probe finished on interface {426b6867-b0e4-4ff9-a14b-dd6a4345c24e} (false)
{426b6867-b0e4-4ff9-a14b-dd6a4345c24e}, false, true, false, false, false

[Microsoft-Windows-NCSI/Operational ] Capability change on {426b6867-b0e4-4ff9-a14b-dd6a4345c24e}
(0x6008001000000 Family: V4 Capability: Local ChangeReason: SuspectDnsProbeFailed){426b6867-b0e4-4ff9-a14b-dd6a4345c24e}

为什么当我连接到网络时,Windows 有时会打开浏览器?

此行为是设计造成的。 Windows 希望用户知道何时连接到需要强制门户身份验证的网络。 Windows 用于在短时间内显示小型弹出窗口,鼓励用户选择它以打开浏览器。 用户通常会错过这一点,因为不知道它会打开浏览器进行身份验证。 有关详细信息,请参阅连接到公司或公用网络时打开浏览器

在哪里可以找到公共文档,指出 msftconnecttest.com 必须位于允许列表中?

以下 URL 列表提及或暗示 msftconnecttext.com

Microsoft Office 如何使用 NCSI 来确定 Internet 连接?

这是通过Microsoft Office 对 get_IsConnectedToInternet进行 API 调用来完成的。 如果像 Microsoft Office 这样的应用程序能够显示没有互联网连接,但你仍然可以浏览网站,这表示存在 NCSI 问题。 如果无法浏览或执行其他基本网络作,这可能是一般网络问题,NCSI 故障排除不适用。

任务栏网络图标依赖于 NCSI,即使它指示没有网络活动,也会应用相同的规则。 这可能是由于 NCSI 以外的更通用的网络问题造成的。

Linux 是否有自己的 NCSI?

Linux 没有内置的 API(应用程序编程接口),以便应用程序检查是否存在连续的 Internet 连接更改。 它们必须从头开始实施自己的网络检查,或使用各种 Linux 实用工具持续检查不断变化的网络条件。

此外,某些 Linux 应用程序不会执行连接检查。 它们发送数据包并在事实发生后处理错误,而 NCSI 允许应用程序向用户发出即时连接问题的警报。

注意

企业必须确保其基础结构不会阻止 HTTP 或 DNS 活动探测。 如果以下任一配置错误,可能会发生这种情况:

  • 阻挡的防火墙
  • DNS 服务器
  • 强制 VPN 隧道
  • 代理服务器
  • 路由器
  • 第三方软件截获探测

对于普通使用者,不需要现成可用用户配置的潜在障碍较少。 如果引入的 VPN 或第三方软件可能拦截、错误路由或延迟 NCSI 主动探测,则就会出现问题。

另请参阅