桌面端教程

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-FiEthernetiPhone 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 上「什么都打不开」时:

  1. 确认其它设备是否正常。 如果其它设备也不行,是网络问题,不是 Mac 的问题。
  2. 检查系统代理(按上面的方法,所有接口都查)。
  3. 检查 PAC 自动配置是否指向失效地址。
  4. 检查 hosts 文件:终端执行 cat /etc/hosts,看是否有陌生条目。
  5. 检查 VPN 配置:系统设置 → VPN,看是否有配置处于「已连接」但实际不可用的状态。
  6. 检查配置描述文件:系统设置 → 通用 → VPN 与设备管理,删除不再使用的旧描述文件。
  7. 测试 DNS:终端执行 nslookup apple.com,确认能返回 IP。如果这一步失败,问题在 DNS 不在代理,见DNS 解析异常会导致哪些访问问题

部分程序不通的情况

如果不是全部不通,而是某些程序能用、某些不能,那通常不是代理残留,而是这些程序不遵守系统代理

macOS 上常见的不遵守系统代理的场景:

  • 终端里的命令行工具(curl、git、包管理器)—— 它们看的是环境变量,不是系统设置;
  • 部分使用自定义网络栈的应用;
  • 某些游戏客户端与下载工具。

这属于另一类问题,处理方式见电脑可以打开网页但客户端无法连接怎么办

预防建议

  • 正常退出客户端。 用菜单里的「退出」,不要用强制退出。
  • 重启前先断开连接。 养成习惯能避免大部分残留。
  • 记住检查位置。 下次遇到「莫名断网」,先花 30 秒看一眼代理设置,往往比重启电脑更快解决问题。

如果代理设置确认正常但仍然连不上,回到故障排查按通用流程处理。

安全提示

  • 修改代理设置前请记下原始配置,尤其是在公司或校园网络中,那里可能本来就需要代理。
  • 不要安装声称能「一键修复网络」的第三方工具,它们的修改往往不透明。

本文相关常见问题

为什么关掉客户端后反而不能上网了?

典型的代理残留。客户端退出时没能恢复系统代理设置,系统仍然把请求发往一个已经不存在的本地端口。

Wi-Fi 能用但插网线不能用,为什么?

macOS 的代理设置是按网络接口分别保存的。Wi-Fi 和以太网是两套独立配置,客户端可能只设置了其中一个。

终端里的命令能用吗?

可以。networksetup 是 macOS 自带的命令行工具,不需要额外安装,用它查看代理状态比在图形界面里逐项点开更快。

改了代理设置需要重启吗?

不需要。设置立即生效,但已经打开的应用可能需要重新加载页面才会使用新配置。

INVITE CODE

准备注册 FlyingBird 飞鸟?

AMM
复制并前往注册

打开注册页面后,如系统要求填写优惠码,请粘贴 AMM。价格、套餐与可用状态请以用户中心实时页面为准。