Windows 无互联网错误 - NCSI 故障排除

问题

Windows 报告以太网或 WiFi 链接没有互联网连接,即使用户可以成功访问互联网。 这也可能导致各种 Microsoft 功能无法正常工作,例如 Office 365 设置。

当 Windows PC 连接到 Cato 时,使用主动和被动探测的 Windows 网络连接状态指示器 (NCSI) 检查可能会失败。

ncsi.jpg

环境

通过 socket 后的 Windows PC 或通过 Cato VPN 连接的 PC。

故障排除

当 Windows 连接到新网络时,它使用包含一系列任务的主动探针来检查互联网连接。 确定有互联网连接后,Windows 切换到被动探测,直到连接保持活跃。

 

基本故障排除

以下是针对每种探针类型的一些故障排除步骤:

 

1. 主动探针

Windows 使用主动探针来验证每个网络接口上是否可以实现互联网连接,然后更新网络连接状态指示器 (NCSI)。 在主动探测期间,Windows 探测多个 Microsoft DNS 服务器并使用响应来确定活跃的互联网连接。 

有关更多信息,请参见:NCSI 主动探测和网络状态警报

对于 Windows 10 或更新版本:

  • NCSI 发送 DNS 请求以解析www.msftconnecttest.com的地址。
  • 如果 NCSI 从 DNS 服务器接收到有效响应,NCSI 将发送简单的 HTTP GET 请求到http://www.msftconnecttest.com/connecttest.txt

  • 如果 NCSI 成功下载文本文件,它确保文件包含 Microsoft Connect Test。

  • NCSI 发送另一个 DNS 请求以解析dns.msftncsi.com的地址。

    • 如果这些请求中的任何一个失败,任务栏将出现网络警报。 如果您将鼠标悬停在图标上,您会看到类似 "无连接性" 或 "互联网访问受限" 的消息(取决于失败的请求)。
    • 如果所有这些请求成功,任务栏将显示通常的网络图标。 如果您将鼠标悬停在图标上,您会看到类似 "互联网接入" 的消息。

如果您收到有关 Windows 显示无互联网连接的报告,请检查上述连接中的任何一个是否失败。 捕获 PCAP 和检查事件/流量是验证的一种方法。

 

NCSI 检查日志记录

也可以使用以下方法记录主动 NCSI 检查:

  • 通过发出命令来开始跟踪:
netsh trace start scenario=NetConnection tracefile=noint.etl
  • 现在重现问题(断开然后重新连接客户端),然后使用命令停止跟踪:
netsh trace stop
  • 以下是跟踪文件中可以找到的信息示例:

44152-image.png

 

阻止主动探测的 Windows 注册表设置

主动探测可能会被 Windows 注册表设置阻止,在这种情况下,Windows 将完全依赖于被动探测。

验证以下密钥是否具有默认 Windows 值:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Connections]
"WinHttpSettings"=hex:18,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00

 

在下面的示例中,系统代理通过 GPO 修改了 "WinHttpSettings" 注册表键,从而导入了覆盖 Windows 自动设置的默认值的十六进制注册表值。 这将导致主动探测失败。

 

gpo.png

 

2. 被动探测

捕获和分析实时网络流量,而不干扰网络,即不发送任何数据包。 被动探测查看 TCP/UDP 数据包的 IP 头中的 TTL(时间),可确定数据包到达计算机的“跳数”。 具有超过 8 次跳跃的数据包被视为具有互联网连接性。

Cato 的 TCP 代理将在 IP 头中设置 TTL 为 96,如下所示。 可以在 Windows 机器上执行数据包捕获,以验证接收到的 TTL 值。

mceclip1.png

 

解决方法:

以下是在现场已证明可以解决问题的一些潜在解决方法: -

  1. 设置以下注册表键以使用 WinTAP(第 2 层)适配器而不是 WinTUN(第 3 层):
    Computer\HKEY_LOCAL_MACHINE\SOFTWARE\CatoNetworksVPN\UseWintun=0(DWORD)
  2. 更改以下注册表键以切换到不删除原始路由的新模式。
    Computer\HKEY_LOCAL_MACHINE\SOFTWARE\CatoNetworksVPN\RTNoRemoveMode=1(DWORD)

以下是编辑/添加注册表键值的步骤:

  • 打开注册表编辑器

    • Win + R打开运行对话框。
    • 键入regedit并按回车。 这将打开注册表编辑器。
  • 导航到键

    • 在注册表编辑器中,导航至HKEY_LOCAL_MACHINE\SOFTWARE
    • 如果CatoNetworksVPN键不存在,您需要创建它。 右键单击SOFTWARE键,选择新建,然后选择。 将键命名为CatoNetworksVPN
  • 创建 DWORD 值

    • 右键单击刚刚创建的CatoNetworksVPN键。
    • 选择新建,然后选择DWORD(32 位)值
    • 将新的 DWORD 值命名为UseWintunRTNoRemoveMode
  • 设置值数据

    • 双击UseWintun DWORD 值。
    • 在适当的“值数据”字段中输入01(不带引号)。
  • 确认和关闭:

    • 点击 确定 来保存变更。
    • 关闭注册表编辑者。
  • 重启您的VPN客户端:

    • 重启VPN客户端以使注册表键生效。

这篇文章有帮助吗?

2 人中有 1 人觉得有帮助

0 条评论