连接排障 · Clash 技术博客

Clash 关闭后不能上网怎么办?Windows 系统代理与 WinHTTP 重置

Clash 退出后断网时,核对 Windows 手动代理、PAC、WinHTTP 与终端变量。TUN 残留需要检查服务和路由;受影响或版本不明的服务保持停用,清理后验证浏览器、终端与重启后的直连。

  • 系统代理
  • Windows
  • WinHTTP
本文目录

此前关闭 Clash 就断网、重新打开又恢复,可能是 Windows 仍把请求送到旧代理端口。浏览器、系统下载和终端的代理设置彼此独立,清掉一处不代表其他都恢复;按失败的应用查对应位置,保留企业要求的代理信息。没有代理错误却整机断网时,再查虚拟网卡和路由。

关闭旧手动代理与 PAC,恢复浏览器直连

Windows 11 的检查位置

  1. 打开代理设置

    进入“设置 → 网络和 Internet → 代理”,先看“使用代理服务器”是否仍为开。

  2. 关闭旧的手动地址

    若地址是 127.0.0.1、端口与 Clash 的 mixed-port 一致,关闭“使用代理服务器”并保存。

  3. 检查设置脚本

    如果“使用设置脚本”填有旧 PAC 地址,也一并关闭;“自动检测设置”可先保留。

  4. 彻底退出浏览器再测

    关闭所有浏览器窗口,确认后台进程结束,再打开一个无痕窗口访问普通 HTTP 与 HTTPS 网站。

如果 Windows 页面看起来已经关闭,可按 Win + R 运行 inetcpl.cpl,在“连接 → 局域网设置”里再核对一次。某些旧程序仍通过这套 Internet 选项读取用户代理;不要只改地址而保留启用开关。

这一步恢复后,先保持 Clash 关闭。能直接打开路由器后台和常用网站,说明用户代理残留已经定位;此时没有必要继续执行 winsock reset 或删除网络适配器。

退出后报代理连接失败,哪些设置可能残留?

Clash 运行时正常,退出后立即出现 ERR_PROXY_CONNECTION_FAILED,重新打开又恢复,通常是系统仍把请求送到 127.0.0.1 的旧端口。端口停止监听后会返回 connection refused。

用手机连接同一个 Wi-Fi,或在电脑上 ping 路由器管理地址。如果其他设备能上网、电脑也能到达路由器,就不要先重置网卡。Windows 用户代理、自动配置脚本、WinHTTP、环境变量和单个应用代理彼此独立,要查清哪项仍保留着旧地址。

错误现象通常指向哪里

现象优先检查常见提示
Chrome、Edge 和系统应用一起断网Windows 手动代理或设置脚本ERR_PROXY_CONNECTION_FAILED
浏览器正常,安装器或系统服务失败WinHTTP连接被拒绝、无法下载
终端里的 Git、npm 失败环境变量和工具自己的代理Failed to connect to 127.0.0.1
只有一个浏览器异常扩展、浏览器策略或安全 DNS其他应用仍可访问
只要开过 TUN,退出后全断虚拟网卡、服务和路由无明确代理错误

浏览器恢复了,系统下载仍失败时再看 WinHTTP

WinHTTP 主要被系统服务、安装器和部分企业程序使用,它不是 Windows“代理”页面的同一个开关。只有浏览器已经能直连,而 winget、某个安装器或服务仍试图连接旧代理时,才需要检查这里。

在管理员终端查看并按需清除
netsh winhttp show proxy

# 只有输出仍显示旧代理时才执行
netsh winhttp reset proxy

终端单独没网,通常是变量或工具配置没有随 Clash 退出

很多开发教程会临时设置 HTTP_PROXY、HTTPS_PROXY 或 ALL_PROXY,也有人把代理写进 Git、npm 配置。它们不会因为 Clash 窗口关闭而自动消失。先在新开的 PowerShell 中查看当前进程和用户级变量,再检查出错工具自己的配置来源。

只查看,不会修改设置
Get-ChildItem Env: | Where-Object Name -match '^(HTTP|HTTPS|ALL|NO)_PROXY$'
[Environment]::GetEnvironmentVariable('HTTP_PROXY', 'User')
[Environment]::GetEnvironmentVariable('HTTPS_PROXY', 'User')

git config --show-origin --get-regexp "http.*proxy"
npm config get proxy
npm config get https-proxy

Git 报 Failed to connect to 127.0.0.1 port 7890

常见原因:Git 配置或环境变量仍指向旧端口

处理方法:根据 --show-origin 返回的文件删除对应 proxy 项,不盲删其他 Git 设置。

npm 失败但 curl 正常

常见原因:npm 用户配置里仍有 proxy/https-proxy

处理方法:确认来源后执行 npm config delete proxy 与 npm config delete https-proxy。

新终端正常,旧终端失败

常见原因:旧窗口继承了启动时的代理变量

处理方法:关闭旧终端并重新打开,不需要修改系统网络。

只有浏览器失败:检查扩展、策略与安全 DNS

先开无痕窗口并停用所有代理扩展。扩展可能切换到自己的 PAC,也可能在系统代理关闭后继续接管请求。公司浏览器还可能由策略写入代理,在 chrome://policy 或 edge://policy 中能看到来源;有管理策略时不要通过改注册表强行覆盖。

ERR_NAME_NOT_RESOLVED 更像解析失败,而 ERR_PROXY_CONNECTION_FAILED 明确指向代理连接。前者可以暂时关闭浏览器“使用安全 DNS”做对照。能收到 403 或 404 已经说明网络请求到达服务端,不应继续清缓存或重置网卡。

没有代理错误、整机却断网,再检查 TUN 服务和默认路由

TUN 会创建虚拟网卡并修改路由。客户端仍在正常运行时,在当前客户端关闭 TUN,再从托盘退出;用 route print 检查默认路由是否回到真实 Wi-Fi 或以太网网关。不要看到虚拟网卡就删除驱动,它也可能被其他 VPN 使用。

服务已知受影响、版本不明或被安全检查拒绝时,保持服务停用。通过 Windows 服务管理器或管理员停止对应服务,不为清理残留重新启动它。

确认适配器与默认路由
Get-NetAdapter | Sort-Object Status, Name
route print
默认路由仍指向失效虚拟接口
先正常停用对应 VPN/TUN 服务并重启电脑;记录接口名称后再决定是否卸载客户端组件。
真实网卡没有网关或 169.254 地址
这已经是 DHCP 或本地网络问题,重新连接 Wi-Fi 或续租地址,而不是继续改代理。
路由和地址都正常,只有 DNS 失败
检查网卡 DNS 与浏览器安全 DNS;整机网络重置应作为有备份后的最后手段。

以“Clash 关闭后仍可直连”作为修复结果

关闭 Clash 后逐项确认

  • Windows“使用代理服务器”和旧 PAC 均为关闭
  • netsh winhttp show proxy 在需要直连的电脑上显示 Direct access
  • 新终端里没有指向旧端口的代理变量
  • 浏览器、系统更新检查与至少一个终端工具都能访问
  • 重启电脑后结果不反弹

重新启用 Clash 时一次只开一种接管方式:先系统代理,确认开启与退出都能正确恢复。确实有不读取系统代理的应用,再单独测试 TUN;Windows 上要先确认实际服务已有安全修复证据,受影响或版本不明时继续保持停用。不要同时让客户端、浏览器扩展和脚本修改系统代理,否则下次残留时很难判断是谁写入的。

参考资料