起因
前几天发现 Windows 的网络图标一直显示未联网状态,但实际上是联网了,后来搜索了下大概率是 Windows 的网络连通性探测的机制有问题了。
Active Probe
一般来说,如果联网了,并且实际能够通过浏览器访问互联网,但 Windows 却显示 无 Internet, 已连接,大概率是 Active Priobe 出了问题。
Active Probe 会从两个角度进行测试:
- DNS 解析
- HTTP 连接
两个测试任意一个不过都会导致 无 Internet, 已连接 这个结果。除了图标的显示有差别外,Windows 其实把 Active Probe 的结果用在了很多系统内置条件的判断上,网络不通会导致非常多的功能不可用。
注册表中 Active Probe 相关参数

经过一番测试后发现用来测试 Web 连通性的域名 www.msftconnecttest.com 对应的 IP 被 TCP 劫持了,ICMP 和 UDP 似乎没有问题。
排查
于是分别对两个测试的内容进行手动测试,由于没有 v6 环境,就跳过了 v6 测试。最终发现 DNS 解析测试是完全没有问题的,而 HTTP 连接测试则出现了劫持情况。
具体表现为:
- www.msftconnecttest.com 解析出的 v4 在使用 ICMP 和 UDP 进行 ping 时能够正确到达目的地,但 TCP 被劫持,具体通过延迟来判断,我本地对这个 IP 的 UDP 和 ICMP ping 延迟都是相通的,而 TCP 则少了一个量级
- 全国性的对这个 IP 的 80 端口不可访问
TCP 路由跟踪 
全球端口测试 
解决方案
既然 Active Probe 因为自己不可控的原因不能成功,那就禁用 Active Probe 。
将 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet 的 EnableActiveProbing 从 1 改为 0 来禁用,完成后重启即可。



