跳转到内容

Windows 故障排除指南/网络位置感知

来自维基教科书,为开放世界提供开放书籍

Windows 计算机有一个用于检测互联网连接的系统,称为网络位置感知 (NLA)。 它控制 Windows 对互联网连接进行分类的许多方面,例如是否将网络归类为私有或公共。[1] 当您根据网络是“私有”还是“公共”调整防火墙设置时,私有和公共的定义是您的网络当前是否连接到您定义为私有或公共的网络。[2]

检测互联网连接

[编辑 | 编辑源代码]

网络位置感知还能够通过一个名为网络连接状态指示器 (NCSI) 的工作组检查并提醒您何时通过互联网连接。 NCSI 本身是一个 API,供其他程序在需要了解您的互联网连接状况时使用。[3].

但由于网络连接状态指示器本身就是一个 API,软件如何检测您是否有互联网连接并不公开,因此可以隐藏。 但是,一个简单的测试可以显示 NCSI 可以做什么来检查您的互联网连接。[4]。以下是方法

  1. 检查网站连接
    1. NCSI 使用您的 DNS 查询 www.msftncsi.com
    2. 如果 HTTP 响应头包含一个 200 OK 状态代码,那么它将请求 http://www.msftncsi.com/ncsi.txt[5]。请注意,如果您访问该 URL,文本文件将显示“Microsoft NCSI”。
  2. 检查 DNS 连接
    1. 此外,NCSI 通过您的 DNS 检查 dns.msftncsi.com 是否存在。
    2. 如果存在,则 NCSI 检查 IP 是否为 131.107.255.255
    3. 如果在获取 DNS 查询响应或 IP 不匹配时出现任何问题,则假定互联网存在问题。
    4. 如果出现错误 dns_probe_finished_bad_config,请尝试使用 VPN 获取静态 IP 或联系您的互联网服务提供商。[7]
  3. 检查 IPv6 连接
    1. 类似,但 dns.msftncsi.com 预计将解析为 fd3e:4f5a:5b81::1,在 HTTP 测试中,www 在文本文件 URL 中更改为 ipv6

如果 #2 成功而 #1 失败(失败的定义是没有响应或重定向),那么 Windows 会提醒您某种身份验证可能正在阻止您的互联网连接(例如,需要在使用互联网之前登录)。[4].

如果 #2 失败(失败的定义是没有响应[解析失败]或返回错误的地址),那么 Windows 会提醒您没有互联网连接。[4].

请注意,有时您可能会收到一个黄色的警告标志/感叹号,表明您没有互联网连接,但实际上可以正常连接。 在这种情况下,根据上述情况,这意味着 #2 失败,但 #1 成功。

配置 NCSI

[编辑 | 编辑源代码]

NCSI 的配置参数使用注册表。 键位于 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet。 以下是典型值的列表

键中的典型值列表(Windows 10)
名称 类型 数据
(默认) REG_SZ (未设置值)
ActiveDnsProbeContent REG_SZ 131.107.255.255
ActiveDnsProbeContentV6 REG_SZ fd3e:4f5a:5b81::1
ActiveDnsProbeHost REG_SZ dns.msftncsi.com
ActiveDnsProbeHostV6 REG_SZ dns.msftncsi.com
ActiveWebProbeContent REG_SZ Microsoft NCSI
ActiveWebProbeContentV6 REG_SZ Microsoft NCSI
ActiveWebProbeHost REG_SZ www.msftncsi.com
ActiveWebProbeHostV6 REG_SZ ipv6.msftncsi.com
ActiveWebProbePath REG_SZ ncsi.txt
ActiveWebProbePathV6 REG_SZ ncsi.txt
EnableActiveProbing REG_DWORD 0x00000001 (1)
PassivePollPeriod REG_DWORD 0x0000000f (15)
StaleThreshold REG_DWORD 0x0000001e (30)
WebTimeout REG_DWORD 0x00000023 (35)

如您所见,更改名称的数据将更改 NCSI 行为。 例如,更改 ActiveWebProbeHost 将更改它将检查的网站。 EnableActiveProbing 是一个布尔值,如果设置为 0,则关闭 NCSI。 任何其他值都会将其打开。 最后三个名称,PassivePollPeriod; StaleThreshold; 和 WebTimeout,对系统没有可预测的影响。[4].

作为旁注,在 Microsoft 文档页面描述 NCSI 如何工作时,他们提到

IIS 日志存储在 www.msftncsi.com 的服务器上。 这些日志包含每次访问的时间和记录的 IP 地址。 这些 IP 地址不用于识别用户,在许多情况下,它们是 网络地址转换 (NAT) 计算机或代理服务器的地址,而不是该 NAT 计算机或代理服务器背后的特定客户端。[6].
  1. "网络位置感知". TechNet. Microsoft Docs. 检索于 2021-10-22.
  2. MichaelPlatts [msft] (2010-09-08). "网络位置感知 (NLA) 及其与 Windows 防火墙配置文件的关系". 网络博客. TechNet 博客. 存档于 原文 于 2017-11-05.
  3. "Windows Vista 和 Windows 7 中的网络感知". Microsoft 文档. Microsoft. 检索于 2021-10-22.
  4. a b c d MichaelPlatts. "Windows 7 网络感知:Windows 如何知道它已连接到互联网". superuser 社区博客. StackExchange. 检索于 01/11/2016. {{cite web}}: 检查 |authorlink= 值 (帮助); 检查日期值:|accessdate= (帮助); 外部链接在 |authorlink= (帮助)
  5. 更改为 http://www.msftconnecttest.com/connecttest.txt 在 Windows 10 1607 版本(周年更新)中,新文本文件读取 "Microsoft Connect Test"
  6. "附录 K:Windows Vista 中的网络连接状态指示器和产生的互联网通信". TechNet. Microsoft. 检索于 2021-10-22. 加密和存储:NCSI 不使用加密(它发送的请求和接收的响应都是标准化的,如本小节前面表格所示)。IIS 日志存储在 www.msftncsi.com 服务器上。这些日志包含每次访问的时间和记录的访问 IP 地址。这些 IP 地址不用于识别用户,并且在许多情况下,它们是 网络地址转换 (NAT) 计算机或代理服务器的地址,而不是该 NAT 计算机或代理服务器后面的特定客户端。
华夏公益教科书