问题原因
⾸先我们看⼀下为什么会出现这种问题。“我明明能上⽹,你为什么觉得我上不了⽹?”
Windows检测能否上⽹的评判标准有两个,⼀个是能否解析DNS,另⼀个是能否访问HTTP。具体来说就是能否正确解析⼀个域名到指定的IP地址,以及能否访问指定的HTTP地址获得指定的内容。
DNS解析这⼀个,我还是不太清楚具体是怎么样的。根据我⽬前的实验,应该是域名和IP必须是⼀个DNS服务器,也就是这个地址的53端⼝要能连接。
设置这些参数,也就是请求哪个域名,哪个HTTP地址是在注册表⾥设置的,位置如下
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet
根据上⾯说的,只要系统没有解析到正确的IP,或者没有获得HTTP的内容,就判断你没有连接⽹络。
解决办法
我们看⼀下注册表的内容
其中最重要的是ActiveDnsProbeContent(6)、ActiveDnsProbeHost(6)、ActiveWebProbeContent(6)和ActiveWebProbeHost(6)这⼏个。
知道了这些,就可以根据情况来对这些值进⾏更改。那原来的默认值为啥⽼是检测失败捏?⼤概是因为墙吧(摊⼿
这些值具体改成什么,或者说⽤什么其他⽅法来让⽹络检测通畅,⽹上已经有⼤量的帖⼦了。我就不再赘述了。这⾥只提⼀下思路吧,改HOST⽂件(没试过);⾃建验证服务器;学校封53端⼝并且只能⽤学校的DNS服务器(说你呢⼤连理⼯),把⾃⼰的域名解析到学校的DNS服务器。
呜呜呜,为什么我还是不⾏
那既然⽹上已经有很多帖⼦说这件事,我为什么还要写这篇⽂章呢?那当然是因为我试了⽆数遍上⾯的⽅法,但还是没有解决。呜呜呜,哭死
简单总结就是,先前因为写了⾃动连接校园⽹的脚本但系统还是弹出登录页⾯感觉很烦就把“⽹络检测”这个功能给关了。
当我想到这个问题的时候我真是哭笑不得,虽然⽬前还没完全确定就是这个原因,但我觉得基本上就是了。
我们看⼀眼这个“关闭 Windows ⽹络连接状态指⽰器活动测试”的具体描述是什么
1、按下“Win+R”组合键呼出运⾏,在框中输⼊“gpedit.msc”按下回车键打开“本地组策略编辑器”;
2、在本地策略组中依次展开:“计算机配置”-“管理模板”-“系统”-“Internet 通信管理”—“internet 通信设置”;
3、到“关闭 Windows ⽹络连接状态指⽰器活动测试”
此策略设置会关闭由 Windows ⽹络连接状态指⽰器(NCSI)执⾏的活动测试,这些测试可以确定计算机是连接到了 Internet 还是连接到了受较多限制的⽹络。
NCSI 作为确定连接级别的⼀部分,会执⾏以下两种活动测试之⼀: 从专⽤ Web 服务器下载页⾯,或对专⽤地址执⾏ DNS 请求。
如果启⽤此策略设置,则 NCSI 不会运⾏这两种活动测试的任何⼀种。这可能会降低 NCSI 以及使⽤ NCSI 的其他组件确定 Internet 访问的能⼒。
如果禁⽤或未配置此策略设置,NCSI 将运⾏这两种活动测试之⼀。
也就是说,我之前的设置让系统不进⾏⽹络检测。那就能解释的通我之前实验的离奇结果了
1、系统的疑难问题解决⼯具检测,然后重置⽹络,然后能正常显⽰⽹络连接两天,然后过两天就⼜坏了。
因为我关闭了⽹络检测,导致⽹络检测只在⽹络重置的时候进⾏检测。然后我猜测,关了那个检测功能之后,就是隔⼏天检测⼀次,然后碰上能连接就显⽰能连接⼏天,检测失败就显⽰⽆法连接。也可能是其他的什么机制,总之就是他不检测我是不是联⽹了。
2、我在重置⽹络后显⽰能连接的时候以及显⽰⽆⽹络连接的时候对注册表的检测选项进⾏更改,⽆论是正确的检测域名还是错误的,都不会导致⽹络连接状态的变化
我当时真是怎么想也想不通,为什么这个连接状态跟我设置的检测参数完全⽆关,完全不同步。因为他根本不检测啊!
原因还是同上。并且根据这个软件的检测结果让我⼀度怀疑是学校禁⽌其他DNS服务器导致的,但是我把⾃⼰的域名解析到学校的DNS,并且在软件⾥检测通过时,系统状态仍然显⽰没有⽹
总之,就是⽆数次的疑惑,⽆数次的尝试,⽆数次的失败,烦死了要。今天终于灵光⼀现,我⽇哦。
然后我⼜进⾏了⼀些实验,证实了我的猜测
1、关掉检测⽹络连接状态,设置正确的检测参数,重启 --> 显⽰已连接
2、关掉检测⽹络连接状态,设置错误的检测参数,重启 --> 显⽰已连接
3、开启检测⽹络连接状态,设置正确的检测选项,重启 --> 显⽰已连接
4、开启检测⽹络连接状态,设置错误的检测选项,重启 --> 显⽰⽆⽹络
所以,最终的解决办法就是把上⾯的那个组策略禁⽤掉。(微软怎么喜欢⽤这种双重否定表肯定呢
我觉得我的问题应该解决了,但是还得再等两天观察观察。要是还有问题,那真是可以杀了我了
其他想说的话
1、为什么能上⽹了你还⾮要管系统的那个显⽰状态?不是我⾮要管,⽽是微软旗下的软件他就只认那个状态,他不像浏览器,你企图上⽹他就试⼀试,能上就上,不能上拉到。微软的软件,包括但不限于office、xbox、微软商店,只要系统状态显⽰⽆连接,他连试都不试,直接告诉你“我不管,系统告诉我你没⽹,你就是没⽹,你没⽹那我也不连了”,结果就是office等软件,在需要联⽹的情况下直接摆烂。最致命的就是等登录账号的时候,他⼀旦检测到你系统的⽹络连接是没⽹,就直接账号都不让你输⼊,弹⼀个“你没有⽹,还想登录”的窗⼝。(真是MMP了
2、⽹上有⼈说DNS和HTTP两个验证都要通过系统才认为你有⽹,但是根据组策略⾥的描述,两个检测只要通过⼀个就可以了
3、别的⼩朋友都没事,咋就你有问题呢?这也是我经常遇到的问题,⽹上所有的解决办法都试过了,但是就是不⾏。或者直接就是我碰到的问题根本没⼈碰到过,没⼈提过。为什么?因为有些事,正常⽤户根本不⼲,就⽐如组策略这个,谁没事改这个啊。这就导致,有些问题,我的花很多时间才能排查出来,然后最后才弄明⽩,原来是因为我之前改了这⾥,所以别的⼩朋友都没事,就我有问题。我忽然感觉程序员也没有那么容易失业。⼤家都说医⽣是越⽼越吃⾹,因为经验积累越来越多,碰到的情况⾜够多,就有不可替代性了,有些病有些⼿术就是⽐别的或者年轻的医⽣好。说程序员是吃青春饭的,但是我现在觉得这句话不对,程序员也在不断积累经验,积累解决各种疑难杂症的经验,这跟医⽣有什么区别吗。当然,如果每天都是在重复搬砖,不学习,没有经验的积累,那确实容易被淘汰。网络连接失败
4、前⼏天跟导师讨论问题,⽼师说了⼀句:“不是咱的想法不⾏,⽽是时候还不到,积累还不够。可以先放着,等以后再解决”。我曾⾯临过很多问题,很多想解决了⽆数次但最终都以失败告终的问题,但在⼀⽽再,再⽽三,三⽽四的尝试下,最终都解决了。因为在这些尝试的间隙,在我进⾏其他问题的探索的时候,我对原先问题的认知也在潜移默化的上升。有些东西解决不动,就是积累的还不够。只要⼀直报着要解决这个问题的想法,最终都会解决的。
发布评论