wifi可以上网,显示无internet

原因

  • 直接原因
    • windows系统的网络连接状态NCSI,检测失败
  • 分析
    • Windows 会定期访问一个特定网址(通常是 msftconnecttest.com)来测试联网情况。
    • 尝试解析 dns.msftncsi.com
    • 访问 http://www.msftconnecttest.com/connecttest.txt
    • 如果返回的内容不是 "Microsoft Connect Test",显示“无 Internet”。
  • 问题定位
    • 域名解析: 国内运营商(电信、移动等)有时会劫持 msftncsi.com
    • 防火墙拦截
    • 代理干扰:代理软件是否开启了“系统代理”模式
    • HTTPS/HTTP 混淆: 默认探测使用 HTTP,有些地区的网关会拦截非加密的 txt 获取请求。
    • IPv6 干扰: 如果你的 Wi-Fi 支持 IPv6 但由于运营商配置不佳,Windows 会优先通过 IPv6 探测,失败后就会报“无 Internet”。
    • 网络波动
    • WIFI信号问题:在酒店/机场的认证页面,返回内容Captive Portal,会导致判断失败

问题解决

  • 方案:重启电脑
  • 方案:重置网络
    • 有时候网络堆栈中的缓存会导致检测失效,可以通过命令行刷新。
    • 右键点击“开始”按钮,选择 终端(管理员)命令提示符(管理员)
    • 依次输入并回车执行以下命令:
      • netsh winsock reset (重置目录)
      • netsh int ip reset (重置 IP 栈)
      • ipconfig /release (释放 IP)
      • ipconfig /renew (重新获取 IP)
      • ipconfig /flushdns (刷新 DNS 缓存)
  • 方案:修改DNS
    • 如果你的 DNS 无法快速解析微软的测试域名,系统就会认为没网。
    • 尝试将 DNS 手动设置为公共 DNS,例如:
      • 阿里 DNS: 223.5.5.5 / 223.6.6.6
      • 腾讯 DNS: 119.29.29.29
      • Google DNS: 8.8.8.8 / 8.8.4.4
  • 方案:禁用wifi节能
    • 有时网卡为了省电会进入低功耗模式,导致心跳包发送失败。
    • 右键“此电脑” -> “管理” -> “设备管理器”。
    • 展开“网络适配器”,找到你的 Wi-Fi 网卡,右键点击“属性”。
    • 切换到 电源管理 选项卡,取消勾选 “允许计算机关闭此设备以节约电源”
  • 方案:禁用IPv6
    • 设置 -> 网络和 Internet -> 状态 -> 更改适配器选项 -> 右键 Wi-Fi -> 属性 -> 取消勾选 Internet 协议版本 6
  • 方案:修改检测网址 - 使用微软中国专用地址(最稳定)
    • 微软针对中国网络优化的探测地址,解析速度和连通性最好。通过更改系统检测联网状态的逻辑,可以解决大部分“假断网”问题。
    • 修改后,必须重启电脑或重启 Network List Service 服务,才能生效
    • reg脚本如下

      Windows Registry Editor Version 5.00
      
      ; 微软中国优化节点
      [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet]
      ; 启用主动探测功能
      "EnableActiveProbing"=dword:00000001
      ; 探测服务器地址(微软官方)
      "ActiveWebProbeHost"="www.msftconnecttest.com"
      ; 探测文件路径
      "ActiveWebProbePath"="connecttest.txt"
      ; 探测返回的内容校验值
      "ActiveWebProbeContent"="Microsoft Connect Test"
      ; DNS 探测域名
      "ActiveDnsProbeHost"="dns.msftncsi.com"
      ; DNS 探测预期的返回 IP
      "ActiveDnsProbeContent"="131.107.255.255"
  • 方案:修改检测网址 - 模仿火狐/公共服务(国内极速)
    • reg脚本

      Windows Registry Editor Version 5.00
      
      ; Firefox 探测节点
      [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet]
      "EnableActiveProbing"=dword:00000001
      ; 使用火狐的探测域名
      "ActiveWebProbeHost"="detectportal.firefox.com"
      ; 火狐的探测路径
      "ActiveWebProbePath"="success.txt"
      ; 火狐探测返回的成功标识
      "ActiveWebProbeContent"="success"
      ; 保持微软默认 DNS 探测或留空
      "ActiveDnsProbeHost"="dns.msftncsi.com"
      "ActiveDnsProbeContent"="131.107.255.255"
  • 方案:修改检测网址 - 完全本土化百度
    • reg脚本

      Windows Registry Editor Version 5.00
      
      ; 国内常用节点
      [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet]
      "EnableActiveProbing"=dword:00000001
      ; 使用国内访问稳定的域名
      "ActiveWebProbeHost"="cp.cloudflare.com"
      "ActiveWebProbePath"="generate_204"
      ; 注意:部分系统对此方案的 Content 校验较严,若无效请优先用方案一
      "ActiveWebProbeContent"=""
      "ActiveDnsProbeHost"="dns.msftncsi.com"
      "ActiveDnsProbeContent"="131.107.255.255"