Windows 10 – 提示“无Internet” 却可以上网 解决 Outlook 无法登录问题
引言
最近,访问外网出现不稳定的频率有所提升,随之而来的是 Windows 10 客户端 和 Office 365 客户端也出现了奇奇怪怪的问题:
- Windows 10 右下角显示“地球”图标,并提示“无Internet”,但是实际上国内网站都正常访问。
- Office 365 客户端无法登录,Outlook 无法收发邮件,其登录依赖于上述检测结果
Windows 10 是如何判断是否有互联网访问的
Windows 10 检测是否有互联网访问,通过一种叫做 NCSI (Network Connection Status Indicator) 的检测机制,当网卡连接后,会发起“主动”检测,检测该URL的可访问性:
如果该文件无法获得,则认定为“无Internet”。此时,如果用户手动访问以下地址,则有机率被检测到,并认为网络恢复。这种方式称为“被动”检测机制。
该链接会重定向到MSN网站。
原因
如果出现“地球”图标后,你可以手动访问这个链接:http://www.msftconnecttest.com/connecttest.txt
目前,我的测试结果是,WebKit内核的浏览器,大约5次中有一次可以访问;IE浏览器,可能因为缓存的原因,始终无法访问。
这意味着,Windows判断是否有外网,成为了概率问题。
有趣的是,无法访问connecttest.txt
时,出现了”Connection RESET”的提示,说到这里,大家应该清楚是什么原因了。
解决方法
既然知道了工作原理,那么就好解决了。
一句话,自己架设一台web服务器,托管connecttest.txt
文件,并将域名 www.msftconnecttest.com 重定向到该服务器IP。
我已经完成了,这里公布下我的IP,修改hosts如下即可:
13.94.56.171 www.msftconnecttest.com
如果有条件的话,可以在自己的DNS服务器上建A记录,一次性解决所有客户端的问题。
安全提示
如果错误地设置connecttest.txt
文件可以导致 WIN10 无法进行“主动”验证,从而自动转为“被动”认证,这种情况下,在网络连接图标附近会弹出用户点击验证,一旦用户点击,将会打开浏览器,进行“被动”验证。
黑客可以利用这一特性,将 redirect 设置为一个精心设计的网址,如果浏览器存在 0-day 漏洞,则可能产生安全问题。
如果使用本人托管的验证服务,redirect页面是一个404页面。
感言
本应该微软通过CDN或者架设冗余服务器解决的问题,却要用户来解决。
版权声明
本文出自 Lesca 技术宅,转载时请注明出处及相应链接。
本文永久链接: https://www.lesca.cn/archives/windows10-no-internet-but-there-is.html