问题
Windows 报告以太网或 WiFi 链接没有互联网连接,即使用户可以成功访问互联网。 这也可能导致各种 Microsoft 功能无法正常工作,例如 Office 365 设置。
当 Windows PC 连接到 Cato 时,使用主动和被动探测的 Windows 网络连接状态指示器 (NCSI) 检查可能会失败。

环境
通过 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以下是跟踪文件中可以找到的信息示例:

阻止主动探测的 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 自动设置的默认值的十六进制注册表值。 这将导致主动探测失败。

2. 被动探测
捕获和分析实时网络流量,而不干扰网络,即不发送任何数据包。 被动探测查看 TCP/UDP 数据包的 IP 头中的 TTL(时间),可确定数据包到达计算机的“跳数”。 具有超过 8 次跳跃的数据包被视为具有互联网连接性。
Cato 的 TCP 代理将在 IP 头中设置 TTL 为 96,如下所示。 可以在 Windows 机器上执行数据包捕获,以验证接收到的 TTL 值。

解决方法:
以下是在现场已证明可以解决问题的一些潜在解决方法: -
设置以下注册表键以使用 WinTAP(第 2 层)适配器而不是 WinTUN(第 3 层):
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\CatoNetworksVPN\UseWintun=0(DWORD)变更以下注册表键以切换到新的模式,原始路由不会被删除。
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\CatoNetworksVPN\RTNoRemoveMode=1(DWORD)
以下是编辑/添加注册表键值的步骤:
打开注册表编辑器:
按
Win + R打开运行对话框。键入
regedit并按回车。 这将打开注册表编辑器。
导航到键:
在注册表编辑器中,导航至
HKEY_LOCAL_MACHINE\SOFTWARE。如果
CatoNetworksVPN键不存在,您需要创建它。 右键单击SOFTWARE键,选择新建,然后选择键。 将键命名为CatoNetworksVPN。
创建 DWORD 值:
右键单击刚刚创建的
CatoNetworksVPN键。选择
新建,然后选择DWORD(32 位)值。将新的 DWORD 值命名为
UseWintun或RTNoRemoveMode。
设置值数据:
双击
UseWintunDWORD 值。在适当的“值数据”字段中输入
0或1(不带引号)。
确认和关闭:
点击
确定来保存变更。关闭注册表编辑者。
重启您的VPN客户端:
重启VPN客户端以使注册表键生效。