VPN、代理与过滤器
Mac 上代理设置导致 App 无法连接
代理设置会让流量经过另一台服务器。如果该服务器配置错误或不可用,某些 App 就无法连接,而其他 App 可能一切正常。
症状
- Safari 浏览器正常,但某个 App 或终端工具显示超时或“proxy”错误。
- App 在家能连接,换个网络就失败,或者反过来。
- 命令行工具因“Could not resolve proxy”而失败,或连接本地端口时被拒绝。
- VPN 或代理 App 退出后,连接就断了。
可能的原因
- 旧的系统代理。离开需要代理的网络后,“系统设置”中设置的代理仍然保留。
- PAC 文件或自动代理发现。Mac 从某个 URL 获取代理规则。如果该 URL 加载失败,有些 App 就无法连接。
- 代理环境变量。终端工具会读取
http_proxy、https_proxy和all_proxy。这些变量不会改变“系统设置”中的代理,从 Dock 打开的 App 也看不到它们。 - 已停止的代理 App。有些 App 会把代理设为本地端口,例如 127.0.0.1。如果该 App 停止运行,就没有程序在监听那个端口。
- App 自带代理设置。有些 App 在自己的设置中有代理字段,它与系统代理相互独立。
如何检查
打开“终端”,显示 macOS 当前使用的代理配置。
scutil --proxy输出
HTTPEnable、HTTPSEnable、ProxyAutoConfigEnable和ProxyAutoDiscoveryEnable等键。值为 1 表示开启。显示某个网络服务的 HTTP 和 HTTPS 代理。如有需要,将 Wi-Fi 换成你的服务名称。
networksetup -getwebproxy Wi-Fi networksetup -getsecurewebproxy Wi-Fi显示 PAC 文件和自动代理发现设置。
networksetup -getautoproxyurl Wi-Fi networksetup -getproxyautodiscovery Wi-Fi显示 shell 中的代理环境变量。
env | grep -i proxy如果代理指向 127.0.0.1,查找监听该端口的程序。将 7890 换成实际端口。
lsof -nP -iTCP:7890 -sTCP:LISTEN
如何修复
选取苹果菜单 >“系统设置”>“网络”。点按网络服务,然后点按“详细信息”。
点按“代理”。关闭网络不需要的每种代理类型。
有些主机不能经过代理。将它们添加到“忽略这些主机与域的代理设置”。
点按“好”保存更改。
要在“终端”中关闭网页代理,使用 networksetup。macOS 可能会要求输入管理员密码。
networksetup -setwebproxystate Wi-Fi off networksetup -setsecurewebproxystate Wi-Fi off需要管理员密码。
从 shell 启动文件(例如
~/.zshrc)中删除旧的代理变量,然后打开一个新的“终端”窗口。在出问题的 App 的设置中查找它自己的代理字段,使其与网络保持一致。
使用 Kilobat
Kilobat 的连接检查会报告系统代理和 PAC 文件,还会测试直连路径和代理路径。
kilobat why api.example.com加上
--app可读取该 App 环境中的代理变量。密码不会显示。kilobat why https://api.example.com/v1/models --app com.example.App如果 App 有自己的代理设置,用
--proxy提供该地址。kilobat why huggingface.co --proxy http://127.0.0.1:7890该检查免费。App 和 MCP 的操作步骤参阅找出某个网站或 API 无法连接的原因。
常见问题
为什么 Safari 浏览器正常,终端却失败?
Safari 使用系统代理,终端工具使用 shell 中的代理变量。这两个设置可能不同。
什么是自动代理发现?
Mac 会在网络上查找代理规则。在没有代理的网络上,可以将其关闭。
参考资料
- Apple 支持:在 Mac 上更改代理设置
- scutil(8),macOS 27.2 自带的 man 手册页
- networksetup(8),macOS 27.2 自带的 man 手册页
- lsof(8),macOS 27.2 自带的 man 手册页
参考资料核查于 2026年10月29日。man 手册页为 macOS 自带版本;在“终端”中用 man <name> 打开。