代理服务器出现问题或者地址有误?关闭VPN后无法上网的5种原因
浏览器提示「代理服务器出现问题,或者地址有误」(英文是 ERR_PROXY_CONNECTION_FAILED),意思是系统或浏览器还在把流量交给一个代理,而这个代理已经不在了。最常见的场景是关掉 VPN 之后:VPN 软件开着时把系统代理指向本机的某个端口,软件没来得及改回去就退出了,代理设置留了下来,指向一个已经没人监听的地址,于是所有网页都打不开。
把那条代理设置关掉,网络马上就恢复。难点在于代理可能留在好几个地方:Windows 系统设置、浏览器插件、macOS 网络设置、安卓的 VPN 选项,还有命令行的环境变量。下面先按现象判断是哪一种,再分别给修法。
先按现象判断是哪一种
| 现象 | 最可能的原因 | 对应小节 |
|---|---|---|
| Windows 上所有浏览器都打不开,提示代理服务器出现问题 | 系统代理残留 | Windows 系统代理残留 |
| 只有某一个浏览器打不开,换个浏览器就正常 | 浏览器插件在走代理 | 浏览器插件 |
| Mac 上关掉代理软件后打不开网页 | macOS 网络设置里的代理没关 | macOS |
| 安卓手机一关 VPN 就完全断网,显示已连接 WLAN 却上不去 | 开了「始终开启的 VPN」并屏蔽了未使用 VPN 的连接 | 安卓 |
| 网页正常,只有命令行、git、pip 连不上 | 环境变量里的代理还在 | 命令行 |
Windows 系统代理残留(最常见)
这是「代理服务器出现问题,或者地址有误」最常见的来源。VPN 或代理软件被强制结束、崩溃、电脑突然断电时,软件来不及把系统代理改回去。
Windows 10 / 11 的修法:
- 打开
设置 → 网络和 Internet → 代理 - 在「手动设置代理」里,把「使用代理服务器」关掉(Windows 11 要先点「编辑」再关)
- 同一页上面的「使用设置脚本」如果开着、而且地址是
127.0.0.1开头的,也关掉
如果设置页打不开,也可以走老路径:控制面板 → Internet 选项 → 连接 → 局域网设置,取消勾选「为 LAN 使用代理服务器」。
另外,有些程序读的是另一套 WinHTTP 代理设置。系统代理关掉之后,个别软件(比如某些更新程序)还是连不上的话,用管理员身份打开命令提示符执行:
netsh winhttp show proxy
netsh winhttp reset proxy
第一条看有没有残留,第二条清掉。
浏览器插件在走代理
SwitchyOmega 这类代理插件会接管浏览器自己的代理设置,不受系统设置影响。插件里如果选的是一个固定的代理情景模式,比如 127.0.0.1:7890,VPN 软件一关,这个浏览器就打不开网页,其他浏览器和软件却正常。
修法:点浏览器右上角的插件图标,切到「直接连接」或「系统代理」。
想确认浏览器实际用的是什么代理,在 Chrome 或 Edge 的地址栏输入 chrome://net-internals/#proxy(Edge 也认这个地址),页面上会显示当前生效的代理设置。
macOS 网络设置里的代理没关
Mac 上的代理软件同样会改系统代理,退出不干净也会残留。
- 打开
系统设置 → 网络,选当前在用的网络(比如 Wi-Fi),点「详细信息」 - 进入「代理」,把「网页代理(HTTP)」「安全网页代理(HTTPS)」「SOCKS 代理」全部关掉,点好
也可以在终端里用命令关。先查网络服务的名字,再关掉对应的代理(下面以 Wi-Fi 为例):
networksetup -listallnetworkservices
networksetup -setwebproxystate Wi-Fi off
networksetup -setsecurewebproxystate Wi-Fi off
networksetup -setsocksfirewallproxystate Wi-Fi off
安卓开了「始终开启的 VPN」
安卓 8.0 以后有两个开关:「始终开启的 VPN」和「屏蔽未使用 VPN 的连接」。两个都打开时,系统只允许流量走这个 VPN;VPN 一断,手机就完全不能上网,即使显示已连上 WLAN。这是系统故意设计的防泄漏保护,并不是故障。
修法:打开 设置 → 网络和互联网 → VPN,点 VPN 应用旁边的齿轮,把「屏蔽未使用 VPN 的连接」关掉(或者连「始终开启的 VPN」一起关)。不同品牌手机的菜单名字和位置略有差别,可以在设置里直接搜「VPN」。
另外检查一下 WLAN 本身有没有设代理:长按当前连接的 WLAN → 修改网络 → 高级选项 → 代理,改成「无」。
命令行的代理环境变量还在
为了让 git、pip、npm 走代理,很多人在终端里设过 http_proxy、https_proxy 环境变量,或者给 git 配过 http.proxy。代理软件一关,这些命令就连不上,网页却是好的。
# 看当前有没有设代理
env | grep -i proxy
git config --global --get http.proxy
# 清掉
unset http_proxy https_proxy all_proxy
git config --global --unset http.proxy
如果是写在 ~/.bashrc、~/.zshrc 里的,要把那几行删掉,否则新开终端又会生效。这几处代理是怎么设上去的,见 SOCKS5代理设置方法。
怎么避免再遇到
- 关 VPN 时先在软件里点「断开」,再退出程序,别直接在任务管理器里结束进程
- 很多客户端点窗口右上角的关闭只是缩到托盘,真正退出要在托盘图标上右键选「退出」
- 准备卸载 VPN 软件时,同样先断开、再退出、最后卸载。卸载后还有虚拟网卡残留等问题,见 VPN软件如何卸载
用我们的客户端时
我们的电脑端连接时把系统代理设成 127.0.0.1:2080,正常断开、或者从托盘图标选「退出」时,会自动把系统代理改回去。安卓端用的是系统的 VPN 接口,App 被关掉时系统会自动撤掉 VPN,不会留下代理设置(除非你自己打开了上面安卓一节说的那两个开关)。
如果电脑端在连接状态下被任务管理器强制结束、程序崩溃或者电脑突然断电,系统代理会残留,浏览器就会提示「代理服务器出现问题」。当前版本下次启动时不会自动清理这条残留,客户端里的「一键网络修复」在没连接时也不会处理它。遇到这种情况,按上面 Windows 一节的方法到设置里关掉「使用代理服务器」最快;或者重新连接一次再正常断开,客户端也会把代理改回去。
常见问题
代理服务器出现问题或者地址有误怎么办?
系统或浏览器还在用一个已经不存在的代理。Windows 上到 设置 → 网络和 Internet → 代理 关掉「使用代理服务器」;只有一个浏览器这样的,检查代理插件是不是选了固定代理。
关闭 VPN 后无法上网怎么办?
多数是 VPN 软件退出时没把系统代理改回去。按上面的表先判断是 Windows、Mac、安卓还是浏览器插件的问题,再关掉对应的代理设置。
为什么不开 VPN 就无法上网?
电脑上通常是系统代理残留。安卓上如果关掉 VPN 就完全断网,基本是开了「屏蔽未使用 VPN 的连接」,这个开关会在 VPN 断开时拦掉所有流量。
Clash 关闭后无法上网怎么办?
和其他代理软件一样,是 Clash 设置的系统代理没还原。先打开 Clash 把「系统代理」开关关掉再退出;已经退出的,按上面 Windows 或 macOS 一节手动关掉。
Mac 关闭代理后无法上网怎么办?
到 系统设置 → 网络 → 详细信息 → 代理,把网页代理、安全网页代理和 SOCKS 代理全部关掉,或者用文中的 networksetup 命令关。