此方案适用于大中型企业网络等,个人用户建议使用更改注册表的办法,参考晨钟酱的方案更改注册表即可https://www.bilibili.com/video/BV1v44y1x7zM

一、问题原因
Windows检测能否连接到Internet使用的是ncsi服务,此服务会从微软服务器上拉取ncsi.txt文件,来检测是否连接到internet,先前的服务器域名为www.msftncsi.com,文件名为ncsi.txt,内容为Microsoft NCSI。

Microsoft NCSI
在windows更新后,微软更换了ncsi服务器域名与检测文件,域名由www.msftncsi.com更换为www.msftconnecttest.com,检测文件由ncsi.txt更换为connecttest.txt,内容由Microsoft NCSI更换为Microsoft Connect Test。

Microsoft Connect Test
现由于众所周知的原因(都懂),www.msftconnecttest.com这个域名被RST阻断,导致windows不能正常获取文件,由此显示无internet连接。
二、解决问题
经检查,www.msftconnecttest.com有两个功能,功能一:http://www.msftconnecttest.com/connecttest.txt提供网络检测服务,功能二:www.msftconnecttest.com/redirect提供检测到网络后直接跳转到msn.net。
知道运行机制之后就很简单,建立一个本地服务器,文件放上面,通过路由器dns劫持www.msftconnecttest.com到本地服务,就解决了。
我这里是ikuai,所以现在插件里启用docker,

ikuai-docker
服务设置,设置好镜像源,这里我用的阿里

启动docker,镜像管理,添加,镜像库下载,这里web服务器我选用的nginx

docker
拉取完成镜像后,添加容器,给64M内存就足够了,ip一定要固定ip,方便之后解析

docker-nginx
选好开机自启,保存就行
下面进入控制台

先建立网站目录
mkdir /www/ms/ 下载检测文件到本地
cd /www/ms
wget https://gitee.com/zanzhz1101/bug-report/raw/master/connecttest.txt 编辑网站配置文件
vi /etc/nginx/conf.d/hello.conf

因为只是个简单的服务器,所以日志之类的一概不需要,
server {
listen 80;
listen [::]:80;
server_name www.msftconnecttest.com;
location /connecttest.txt{
alias /www/ms/connecttest.txt;
}
location / {
rewrite ^/redirect http://www.baidu.com/$1 redirect;
}
} 保存,退出。
下面是dns设置,添加DNS反向代理,www.msftconnecttest.com到你的docker的ip地址,我这里是192.168.8.4。

至此,已经配置完成,打开http://www.msftconnecttest.com/connecttest.txt测试

秒开,再看下Windows

windows internet
完美解决。