在 macOS 上把 VPN 用起来,难点不在点一下“连接”,而在三件事:系统扩展有没有被批准、订阅有没有真的导入、流量有没有真的走这条线路。这篇指南按安装顺序走一遍,每一步都给出可以自己复现的检查方法,不靠感觉判断。
下面这几个数字是本文引用的事实口径,后续步骤里出现的容量、价格与退款周期都以它为准。
系统 VPN 与客户端:先分清接管方式
macOS 上有两条完全不同的接入路径。先认清自己用的是哪一条,后面的步骤才不会对不上号。
第一条是系统自带的 VPN 配置,在 系统设置 → 网络 → VPN 里添加,支持 IKEv2、L2TP over IPSec 这类标准协议。配置完成后由系统建立 utun 接口,全局接管流量,不需要额外客户端;代价是没有分流,连上之后所有流量都走同一条隧道。
第二条是订阅服务自带的客户端。它通过 Network Extension 建立隧道,再在本地开一个代理端口,按域名或地区决定哪些流量走线路、哪些直连。跨境访问场景里,绝大多数人用的是这一条。
| 接入方式 | 流量接管范围 | 需要的授权 | 适合的场景 |
|---|---|---|---|
| 系统自带 VPN 配置 | 全局,所有应用 | 添加配置时确认一次 | 固定一条线路,不需要分流 |
| 客户端 TUN 模式 | 全局,可按规则分流 | 网络扩展 + 系统扩展 | 浏览器、终端、桌面应用统一走线路 |
| 客户端系统代理模式 | 只覆盖读取系统代理设置的应用 | 通常只需钥匙串授权 | 临时使用,只想让浏览器走线路 |
三种方式没有优劣,只有是否匹配场景。只需要一条固定线路、不做分流,系统配置就够;要让浏览器、终端、桌面应用统一走线路,选 TUN 模式;临时用一下,系统代理模式最轻。
下载与安装:先过签名与公证
安装包只从服务商官网下载。macOS 在打开应用时会校验两样东西:开发者签名,以及 Apple 的公证。签名对不上或没有公证的安装包会被拦下,提示“无法打开,因为 Apple 无法检查其是否包含恶意软件”。
正确的顺序是这样:
- 下载磁盘映像或安装包,双击挂载;
- 把应用拖进“应用程序”文件夹,不要在挂载的映像里直接运行;
- 首次打开被拦时,到 系统设置 → 隐私与安全性,在页面下方点“仍要打开”,再确认一次;
- 不要用关闭 Gatekeeper 的方式绕过提示,那等于对所有未签名程序放行。
Apple Silicon 机型上,原生客户端是通用二进制;如果安装包只有 Intel 版本,系统会通过 Rosetta 转译运行,能用,但多一层开销,长期使用建议换回原生版本。
授权:三处弹窗与一个开关
网络类应用拿不到权限就不会工作,而权限提示往往只弹一次,点掉就没了。装完之后按这三处核对。
网络扩展
第一次点“连接”时,系统会弹窗说明某个应用想要添加 VPN 配置,需要 Touch ID 或登录密码确认。这一步同意的是“允许它建立隧道”。
系统扩展
macOS 11 之后,客户端普遍改用 System Extension 替代早期的内核扩展。安装后系统设置里会出现“已阻止载入”的提示,需要手动点“允许”,部分版本要重启一次才生效。
登录项与扩展
macOS 13 及以后,可以在 系统设置 → 通用 → 登录项与扩展 里看到网络扩展的开关,确认它是打开的。
权限没给全的典型表现有三种:连接按钮一直转圈;界面显示已连接,但出口 IP 没变;客户端日志里出现 provider 启动失败一类的字样。遇到这些,先回去看上面三处,而不是反复重装。
网络扩展权限等于把整台机器的流量交给这个程序处理。授权之前确认安装包来自官方渠道,来源不明的客户端不要点“允许”。
导入订阅:从链接到线路列表
订阅链接通常是一串 https 地址,后面带一长串 token。它既是配置,也是凭据。
- 在服务商面板复制订阅链接,注意别把多余的空格或换行带进去;
- 打开客户端的“订阅”或“配置”入口,选择从 URL 导入;
- 粘贴链接,给这份配置起一个能认出来的名字,保存;
- 手动更新一次,等线路列表出现;
- 打开自动更新,间隔设为 24 小时。
如果提示导入成功但列表是空的,多半是格式不匹配。订阅返回的可能是 base64 编码的节点列表、Clash 的 YAML,或者 sing-box 的 JSON,客户端要选对类型才能解析。另一个常见原因是链接被聊天软件截断,重新复制一次即可。
订阅链接泄露,等于账号被别人拿去用。不要把链接截图发到群里,也不要用在线转换工具处理它;怀疑泄露时在面板重置订阅地址,旧链接会立即失效。
验证:四条命令确认线路生效
客户端界面的“已连接”只说明隧道建立了,不说明流量真的走了这条线路。打开“终端”,把下面四行依次粘进去。
curl -s https://ipinfo.io/ip
route -n get default
scutil --dns | grep nameserver
scutil --proxy
| 检查项 | 命令 | 正常结果 |
|---|---|---|
| 出口 IP | curl -s https://ipinfo.io/ip |
返回地址与本地宽带不同,归属地与所选线路一致 |
| 默认路由 | route -n get default |
TUN 模式下 interface 一行指向 utun 开头的接口 |
| DNS 解析器 | scutil --dns | grep nameserver |
第一顺位不是路由器或运营商的地址 |
| 系统代理 | scutil --proxy |
系统代理模式下 HTTPSProxy 指向 127.0.0.1 与本地端口 |
想进一步确认 DNS 没有泄漏,执行 dig +short whoami.akamai.net,它返回的是真正发起解析的服务器地址。如果这个地址属于本地运营商,说明 DNS 请求没有走线路,需要回到客户端把 DNS 交给隧道处理。
验证只看一个指标:出口 IP。IP 归属地对上了,再看 DNS;两者都对,才算这条线路真的在工作。
连不上时:按顺序排查
连接失败大致分三类,按顺序排除比反复重装快。
卡在“正在连接”
先回看权限三处。权限没问题的话,看协议:走 QUIC 的 Hysteria2、TUIC 依赖 UDP,酒店、公司网络和部分公共 Wi-Fi 会把 UDP 443 直接丢掉,表现就是一直连不上。换成基于 TCP 的 VLESS、Trojan、VMess 或 Shadowsocks,通常就能通。
连上了但网页打不开
三个高频原因。一是 DNS 没有接管,域名还在本地解析,结果要么解析失败,要么解析到不适合当前线路的地址;二是系统时间偏差过大,TLS 握手直接失败,到 系统设置 → 通用 → 日期与时间 打开自动设置;三是分流规则把目标域名判成了直连,把该域名临时改成走线路再试。
只有部分应用不通
系统代理模式只对读取系统代理设置的应用生效,终端里的 curl、不少开发工具和游戏客户端都不读它。需要全局覆盖时切到 TUN 模式,或者给终端单独设置代理环境变量。这是模式差异,不是线路故障。
- ✅ 出口 IP 与所选线路的归属地一致
- ✅
scutil --dns的第一顺位解析器不是本地运营商 - ✅ 断开连接后网页立刻恢复直连,没有残留路由
- ✅ 自动更新订阅已打开,间隔 24 小时
- ❌ 不要用关闭 Gatekeeper 的方式解决“无法打开”
- ❌ 不要把订阅链接发进公开群聊或工单截图
长期使用:协议取舍与分流规则
日常使用有三件事值得一次设好。
按需连接
笔记本合盖再打开、切换 Wi-Fi 之后,客户端需要重新建立隧道。开启按需连接可以让系统在网络变化时自动重连,省掉手动点一次的动作。
协议取舍
TCP 系协议(VLESS、Trojan、VMess、Shadowsocks)在丢包严重的网络里更稳;QUIC 系的 Hysteria2、TUIC 在高延迟链路上吞吐更好,前提是 UDP 不被拦。同一份订阅里通常两种都有,按当前网络换着试,比死守一个更实际。
分流与 DNS
分流规则按“域名优先、地区兜底”的顺序写,常用站点直连,减少绕路;DNS 交给客户端处理,避免系统解析器和客户端各走一套。
线路类型怎么看
IEPL 专线走的是点对点专线,不经过公共互联网的拥塞节点;中转是入口节点再转发到出口;直连则是客户端直接连出口服务器。三者差别在稳定性和绕路程度上,哪条更快只能在你自己常用的网络里试,别人的测速数字参考价值有限。
VPNVL 在这些设置上不需要额外配置:120+ 国家、180+ 线路,不限台数,多台设备可以同时在线;注册只要用户名和密码,无需邮箱地址;月订阅 ¥9.9 起含 60GB,¥18 含 250GB,¥28 含 500GB,流量按开通日每月重置;流量包用完为止、永久不过期;首次付费后 60 天内可申请无理由退款;支付支持支付宝、微信、USDT。服务侧的隐私策略是不记录日志。
对大多数 macOS 用户,客户端 TUN 模式、自动更新订阅、出口 IP 自检,这三件事做好,日常的跨境访问就够用了。