macOS 系统代理修复:退出代理客户端后无法上网的解决方法

更新于 约 4 分钟读完客户端教程 · macOS客户端

本文要点

  • 退出客户端后无法上网,多半是系统代理仍指向已关闭的本地端口。
  • 到系统设置的网络详细信息里,把代理页的各项开关全部关闭即可恢复。
  • 用过 TUN 模式或改过 DNS 的,还要检查 DNS 服务器和终端里的代理环境变量。

先判断是不是代理残留

症状通常很典型:退出、崩溃或卸载代理客户端之后,所有网页都打不开,但微信等部分应用还能用,重新打开客户端又恢复正常。

原因是客户端开启系统代理时,把 macOS 的代理设置指向了本机的一个端口(如 127.0.0.1:7890)。客户端没来得及还原就退出了,浏览器仍然把请求发往这个已经无人监听的端口,自然全部失败。

最快的临时办法是重新打开客户端,先关闭系统代理开关,再正常退出。如果客户端已经卸载或打不开,就按下面的方法手动修复。

在系统设置里关闭残留代理

适用于较新的 macOS(系统设置界面):

  1. 打开「系统设置」→「网络」。
  2. 点击当前正在使用的网络,例如「Wi-Fi」,再点击已连接网络旁边的「详细信息」。用网线的话选择「以太网」。
  3. 在左侧选择「代理」。
  4. 把下面几项开关全部关闭:
代理项 说明
自动发现代理 一般本来就是关闭的
自动代理配置 PAC 方式的代理,部分客户端会用到
网页代理(HTTP) 客户端最常设置的一项
安全网页代理(HTTPS) 客户端最常设置的一项
SOCKS 代理 客户端常同时设置
  1. 点击「好」保存,回到浏览器刷新页面。

较旧的 macOS 路径是「系统偏好设置」→「网络」→ 选中当前网络 →「高级」→「代理」,取消勾选同样的几项后点「好」,再点「应用」。

注意:Wi-Fi 和以太网的代理设置是分开保存的,两种网络都在用的话都要检查一遍。

用终端命令快速关闭

熟悉终端的话,几条命令就能完成同样的操作。下面以名为 Wi-Fi 的网络服务为例:

networksetup -setwebproxystate Wi-Fi off
networksetup -setsecurewebproxystate Wi-Fi off
networksetup -setsocksfirewallproxystate Wi-Fi off
networksetup -setautoproxystate Wi-Fi off

网络服务名称不确定时,先执行 networksetup -listallnetworkservices 查看;名称里带空格的要用引号括起来。执行 scutil --proxy 可以查看当前生效的代理设置,用来确认是否已经清除干净。

关掉代理后仍然无法上网

按可能性从高到低继续检查:

  1. DNS 被改过:用过 TUN 或增强模式后,个别情况下 DNS 服务器没有还原。在同一个「详细信息」窗口里进入「DNS」,删掉陌生的 DNS 地址(尤其是 127.0.0.1 或 198.18 开头的),让系统使用路由器自动下发的 DNS。相关原理见 DNS解析失败。
  2. VPN 配置残留:以系统 VPN 方式工作的客户端,会在「系统设置」→「VPN」里留下配置,确认它处于断开状态。
  3. 终端单独设置过代理:只有终端里的命令连不上时,检查 ~/.zshrc 里是否写了 http_proxy、https_proxy、all_proxy 这类环境变量,注释掉后重新打开终端。
  4. 浏览器插件:浏览器里的代理切换插件会覆盖系统设置,把它切回「系统代理」或「直接连接」。
  5. 重启网络:关闭再打开 Wi-Fi,或者重启电脑。

反过来:系统代理开不起来

如果问题是客户端里的系统代理开关打不开、勾选后无效,原因一般是客户端的帮助程序没有装好,或者同时运行了两个代理客户端互相覆盖。只保留一个客户端并重新授权,详细步骤见 系统代理无法开启。

平时养成「先关系统代理,再退出客户端」的习惯,可以避免大部分残留问题。客户端本身的用法见 Clash Verge Rev Mac 教程 和 ClashX Meta 教程;首次安装时遇到打不开的提示,看 Apple Silicon安装问题。

常见问题

Mac 关闭代理软件后上不了网怎么办?

打开系统设置,进入网络,点击当前连接的 Wi-Fi 或以太网的详细信息,切到代理页面,把网页代理、安全网页代理、SOCKS 代理和自动代理配置全部关闭,然后点击好保存即可。

为什么退出客户端后系统代理不会自动关闭?

正常退出时客户端会还原系统代理。但如果客户端崩溃、被强制退出,或者电脑直接断电重启,它来不及执行还原,系统代理就会继续指向那个已经没有程序监听的本地端口。

卸载代理客户端前需要做什么?

先在客户端里关闭系统代理和 TUN 模式,再正常退出,最后才删除应用。这样可以让客户端把系统的代理和 DNS 设置还原,避免卸载后出现无法上网的情况。

相关macOS客户端文章

全部