macOS 无法连接时如何检查系统代理
针对 macOS 上出现全部网络不通或部分程序无法访问的情况,说明如何在系统设置与终端中确认代理状态、区分接口配置差异,以及清除残留配置的方法。
本文解决的问题:Mac 上突然什么网站都打不开,怀疑是代理设置有问题但不知道去哪看。
如果你的 Mac 突然什么网站都打不开,而 Wi-Fi 显示已连接、其它设备也正常——优先怀疑系统代理残留。这是 macOS 上最常见的一类「假性断网」,而且症状具有很强的误导性:看起来像是网络故障,实际上网络完全正常。
为什么会出现残留
客户端在连接时会修改系统代理设置,把流量指向本地的一个端口(通常是 127.0.0.1 加一个端口号)。断开连接时,它应该把这个设置恢复原状。
但如果客户端是异常退出的——崩溃、被强制退出、系统更新后重启、或者你直接关机——它就没有机会执行恢复动作。结果是:
- 系统仍然认为应该把所有请求发到
127.0.0.1:某端口; - 而那个端口上已经没有程序在监听了;
- 于是所有请求都失败。
这就是「客户端明明关掉了,反而更不能上网」的原因。
方法一:图形界面检查
系统设置 → 网络 → 选中当前使用的网络 → 详细信息 → 代理
在这个页面上会看到一组开关:
- 自动发现代理
- 自动代理配置
- 网页代理(HTTP)
- 安全网页代理(HTTPS)
- SOCKS 代理
- 流媒体代理(RTSP)
- Gopher 代理
判断标准很简单:如果你的客户端没有在运行,而这些开关里有任何一项是打开的(且指向 127.0.0.1),那就是残留。把它关掉,点「好」保存。
关键:检查所有网络接口
macOS 的代理设置是按网络接口分别保存的。Wi-Fi 一套、以太网一套、USB 网络适配器又是一套。
这解释了一个常见现象:Wi-Fi 下能正常用,插上网线就不行了(或者反过来)。因为客户端只设置了其中一个接口的代理,切换接口后配置就不匹配了。
所以检查时,把左侧列表里的每一个网络接口都点开看一遍,不要只看当前正在使用的那个。
方法二:终端命令检查(更快)
图形界面要逐个接口点开,比较繁琐。macOS 自带的 networksetup 命令可以直接查看。
先列出所有网络服务:
networksetup -listallnetworkservices
会输出类似 Wi-Fi、Ethernet、iPhone USB 这样的列表。
查看某个服务的代理状态:
networksetup -getwebproxy "Wi-Fi"
networksetup -getsecurewebproxy "Wi-Fi"
networksetup -getsocksfirewallproxy "Wi-Fi"
输出中的 Enabled: Yes 表示该项代理已启用。如果客户端没在运行却显示 Yes,就是残留。
关闭代理:
networksetup -setwebproxystate "Wi-Fi" off
networksetup -setsecurewebproxystate "Wi-Fi" off
networksetup -setsocksfirewallproxystate "Wi-Fi" off
(把 "Wi-Fi" 换成实际的服务名称。这些命令可能需要管理员密码。)
查看自动代理配置(PAC):
networksetup -getautoproxyurl "Wi-Fi"
如果这里配置了一个已经失效的 PAC 文件地址,也会导致所有请求失败。关闭方法:
networksetup -setautoproxystate "Wi-Fi" off
一个容易被忽略的位置:环境变量
如果你使用终端做开发,可能在 shell 配置文件里设置过代理环境变量。这些变量只影响终端里启动的程序,不影响图形界面应用。
检查当前值:
echo $http_proxy $https_proxy $all_proxy
如果输出了地址而客户端并未运行,说明有残留。检查这几个文件里是否有相关的 export 语句:
~/.zshrc(macOS 默认 shell)~/.bash_profile~/.zprofile
这就是「浏览器能用但终端里 curl 不行」或者反过来的常见原因。相关说明见电脑可以打开网页但客户端无法连接怎么办。
完整的排查顺序
遇到 Mac 上「什么都打不开」时:
- 确认其它设备是否正常。 如果其它设备也不行,是网络问题,不是 Mac 的问题。
- 检查系统代理(按上面的方法,所有接口都查)。
- 检查 PAC 自动配置是否指向失效地址。
- 检查 hosts 文件:终端执行
cat /etc/hosts,看是否有陌生条目。 - 检查 VPN 配置:系统设置 → VPN,看是否有配置处于「已连接」但实际不可用的状态。
- 检查配置描述文件:系统设置 → 通用 → VPN 与设备管理,删除不再使用的旧描述文件。
- 测试 DNS:终端执行
nslookup apple.com,确认能返回 IP。如果这一步失败,问题在 DNS 不在代理,见DNS 解析异常会导致哪些访问问题。
部分程序不通的情况
如果不是全部不通,而是某些程序能用、某些不能,那通常不是代理残留,而是这些程序不遵守系统代理。
macOS 上常见的不遵守系统代理的场景:
- 终端里的命令行工具(curl、git、包管理器)—— 它们看的是环境变量,不是系统设置;
- 部分使用自定义网络栈的应用;
- 某些游戏客户端与下载工具。
这属于另一类问题,处理方式见电脑可以打开网页但客户端无法连接怎么办。
预防建议
- 正常退出客户端。 用菜单里的「退出」,不要用强制退出。
- 重启前先断开连接。 养成习惯能避免大部分残留。
- 记住检查位置。 下次遇到「莫名断网」,先花 30 秒看一眼代理设置,往往比重启电脑更快解决问题。
如果代理设置确认正常但仍然连不上,回到故障排查按通用流程处理。
安全提示
- 修改代理设置前请记下原始配置,尤其是在公司或校园网络中,那里可能本来就需要代理。
- 不要安装声称能「一键修复网络」的第三方工具,它们的修改往往不透明。
本文相关常见问题
为什么关掉客户端后反而不能上网了?
典型的代理残留。客户端退出时没能恢复系统代理设置,系统仍然把请求发往一个已经不存在的本地端口。
Wi-Fi 能用但插网线不能用,为什么?
macOS 的代理设置是按网络接口分别保存的。Wi-Fi 和以太网是两套独立配置,客户端可能只设置了其中一个。
终端里的命令能用吗?
可以。networksetup 是 macOS 自带的命令行工具,不需要额外安装,用它查看代理状态比在图形界面里逐项点开更快。
改了代理设置需要重启吗?
不需要。设置立即生效,但已经打开的应用可能需要重新加载页面才会使用新配置。
准备注册 FlyingBird 飞鸟?
AMM打开注册页面后,如系统要求填写优惠码,请粘贴 AMM。价格、套餐与可用状态请以用户中心实时页面为准。