Windows 用来检测网络连通性的 IP 似乎被劫持了

2021-10-08 06:13:35 +08:00
 mason961125

起因

前几天发现 Windows 的网络图标一直显示未联网状态,但实际上是联网了,后来搜索了下大概率是 Windows 的网络连通性探测的机制有问题了。

Active Probe

一般来说,如果联网了,并且实际能够通过浏览器访问互联网,但 Windows 却显示 无 Internet, 已连接,大概率是 Active Priobe 出了问题。

Active Probe 会从两个角度进行测试:

两个测试任意一个不过都会导致 无 Internet, 已连接 这个结果。除了图标的显示有差别外,Windows 其实把 Active Probe 的结果用在了很多系统内置条件的判断上,网络不通会导致非常多的功能不可用。

👇 注册表中 Active Probe 相关参数

经过一番测试后发现用来测试 Web 连通性的域名 www.msftconnecttest.com 对应的 IP 被 TCP 劫持了,ICMP 和 UDP 似乎没有问题。

排查

于是分别对两个测试的内容进行手动测试,由于没有 v6 环境,就跳过了 v6 测试。最终发现 DNS 解析测试是完全没有问题的,而 HTTP 连接测试则出现了劫持情况。

具体表现为:

👇 TCP 路由跟踪

👇 全球端口测试

解决方案

既然 Active Probe 因为自己不可控的原因不能成功,那就禁用 Active Probe 。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\InternetEnableActiveProbing1 改为 0 来禁用,完成后重启即可。

25759 次点击
所在节点    宽带症候群
129 条回复
blueboyggh
2021-10-08 06:17:03 +08:00
我也遇到了这个问题,还以为是从 win11 退回 win10 导致的 bug,因为我另一台台式机没有这个问题,如果是劫持问题,为啥有的电脑有问题,有的电脑没事儿?
mason961125
2021-10-08 06:25:28 +08:00
@blueboyggh 这个问题我倒是没遇到,因为我就一台 Windows 设备。起初我以为是 Windows 网络设置问题,所以重置了一次网络设置,第一次联网之后是好的,后来莫名其妙又变成未联网了,直到禁用了连通性测试才恢复。我猜测不是所有的包都被劫持了?可能放过去了一定数量的包吧...?
neteroster
2021-10-08 06:56:30 +08:00
没错,昨天下午老是显示无 Internet,但是又能联网。我还以为就我这样。
blueboyggh
2021-10-08 07:25:52 +08:00
@mason961125 另外两年前我也遇到过这个问题,当时也是修改注册表临时解决了,但是当时这个方法会导致一些自带应用无法检测联网状态而默认未联网,不知道现在还有没有这个问题
hotbaidu
2021-10-08 07:35:39 +08:00
之前在 Mac mini M1 用 UTM 安装 Win11 也遇到过,禁用 Active Probe 会导致系统更新跟病毒码自动更新因为检测无网路时常报错,只能手动安装更新包。
mason961125
2021-10-08 07:58:27 +08:00
@hotbaidu 我这边的表现和你相反,不禁用的时候因为探测失败导致无网络才会有各种系统错误,禁用之后不报错了反而好了。
villivateur
2021-10-08 08:32:42 +08:00
我也出现这个情况了,貌似只有移动的才有?
wwbfred
2021-10-08 08:34:42 +08:00
疯了吧这是,墙这玩意儿有什么好处???
不过我这儿的确被 rst,但 windows 网络检查是通的,这是为啥。
LuckyTain
2021-10-08 08:41:12 +08:00
我也出现了类似问题, 感谢
kkocdko
2021-10-08 08:42:28 +08:00
我也遇到了这个问题!我还以为是我的网络问题呢(之前经常碰到古怪的 CDN 域名被阻断

@villivateur 这边福建联通也被阻断了
villivateur
2021-10-08 08:44:39 +08:00
怀疑是有人恶作剧向这个域名发送敏感词,让 GFW 自动封了这个 IP 的 TCP 连接
@wwbfred
kkocdko
2021-10-08 08:50:57 +08:00
感谢楼主告知这个功能的名字,我昨天按照 Android 网络感叹号的 CaptivePortal 搜了一大圈,啥都没找到。
richarddingcn
2021-10-08 09:15:28 +08:00
问题大 昨天我也是这个问题 各种排查 结果升级驱动之后好了 现在发现简直偶然?
szdosar
2021-10-08 09:22:14 +08:00
对大神的敬仰如滔滔江水绵绵不绝。学习了。
Lightbright
2021-10-08 09:26:54 +08:00
这个问题原因比较复杂,除了楼主说的原因之外,还有可能是 Windows 系统自己的问题
https://docs.microsoft.com/en-us/answers/questions/124300/still-not-fix-no-internet-connection-bug-in-window.html

另外,推荐一个项目,可以通过劫持彻底解决这个问题
https://github.com/dantmnf/NCSIOverride
explorerproxy
2021-10-08 09:34:22 +08:00
我昨天也是一直显示未联网,不过这会已经好了
上海联通
Lightbright
2021-10-08 09:37:31 +08:00
@Lightbright 另外还有一点,当你使用 Windows 系统的代理服务器功能时,系统会把 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet\ManualProxies 这个位置的注册表写错。具体表现为,会在你自己写的代理服务器地址前加一个 1 。。。





这很显然是一个 BUG,并且这个注册表位置和 Windows 的网络探测服务有关。。
sky96111
2021-10-08 09:59:17 +08:00
@Lightbright 不一定是 bug,可能用 1 和 0 判断代理开启状态(纯推测
villivateur
2021-10-08 10:07:38 +08:00
还有一种解决方法,目前 www.msftncsi.com 没有被劫持,可以把 Active Probe 的域名换成这个。
具体修改注册表 Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet 以下键值对:

ActiveWebProbeHost - www.msftncsi.com
ActiveWebProbeContent - Microsoft NCSI
ActiveWebProbePath - ncsi.txt

然后重启
Lightbright
2021-10-08 10:09:03 +08:00
@sky96111 代理关闭这一项就没有了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/806309

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX