新 Mac 到手,第一件事不是装软件,而是把代理整利索——尤其是 DNS 泄露。很多人代理开着、节点延迟也正常,却不知道自己的 DNS 查询一直在"裸奔":浏览器访问的每个域名,都先被本地网络的 DNS 服务器看了一遍。这篇按三步把防泄露设置讲清,思路来自 @PanXing0827 今天的一篇帖子,我按 Mac 的实际情况做了落地。

先理解:DNS 泄露是怎么发生的#
正常上网时,设备要先问 DNS 服务器"这个域名对应的 IP 是多少",拿到 IP 之后才去连接。开代理之后,理想状态是:连 DNS 查询也走加密通道。但如果客户端或系统 DNS 没配好,就会出现"流量走了代理、DNS 查询走了本地网络"的分裂状态——本地网络(比如宽带运营商)能看到你查了哪些域名,代理等于白开了。
关于泄露的原理和检测方法,可以先看这篇 DNS 泄露是什么?检测与修复指南,这里直接讲怎么做。
第一步:客户端 DNS 设置#
这是最关键的一步。代理客户端的 DNS 一般分三个字段,各有分工:
- 直连 DNS:负责解析直连的域名(比如国内网站)。填一个国内响应快的公共 DNS,比如 119.29.29.29。
- 远程 DNS:负责解析走代理的域名。建议用 DoH(DNS over HTTPS)地址,比如
cloudflare-dns.com/dns-query。DoH 把查询包在 HTTPS 里,中间人看不到你查了什么,也改不了结果。 - Bootstrap DNS:用来解析远程 DNS 本身的域名。因为 DoH 地址本身也是个域名,第一次查询它时隧道还没起来,需要一个普通的 DNS 先把它解析出来,填和直连 DNS 一样的地址就行。
为什么要分三个?简单说:直连的归直连、走代理的归加密通道、启动时的"第一块砖"单独处理。三者缺一个,链条上就可能出现明文查询。
一个提醒:原帖是以 v2rayN 举例的,但 v2rayN 是 Windows 客户端,Mac 上没有。Mac 用户可以在 v2rayU、NekoBox、Clash Verge 这类客户端里找对应的 DNS 设置项,三个字段的逻辑是相通的,菜单名字可能略有不同。Mac 客户端的选择见 macOS 客户端指南。
第二步:系统 DNS 设置#
只设客户端 DNS 还不够。有些 App 不走客户端的 DNS,而是直接用系统的 DNS 设置。如果系统 DNS 还是宽带运营商默认的,这些 App 的查询一样会泄露。
macOS 的设置路径:系统设置 → 网络 → Wi-Fi → 详细信息 → DNS。把原来的 DNS 地址删掉,添加:
- 1.1.1.1
- 8.8.8.8
这两个都是公共 DNS,响应快、支持加密查询。改完之后,系统层面的查询也不再经过运营商。
这一步和第一步是互补关系:客户端 DNS 管住代理流量,系统 DNS 管住不走代理的流量,两边都堵上才算完整。
第三步:开启 TUN 模式#
前两步管的是"查询走哪条路",TUN 模式管的是"流量会不会绕过代理"。有些 App(比如部分游戏、命令行工具)根本不走系统代理,代理客户端开了也抓不到它们。TUN 模式是在系统层虚拟一张网卡,把全部流量接管进来,专治这种"不听话"的 App。
开启 TUN 时一般会看到三个选项,含义分别是:
- 自动路由:自动添加路由规则,让流量正确地进入隧道,不用手动配。
- 严格路由:强制所有流量都走隧道,防止个别流量偷偷直连。
- 旧版 TUN 保护:兼容性选项,解决某些老系统或特殊网络环境下的 TUN 异常。
开完 TUN 之后要重启一次代理服务,让新规则生效。同时注意两点:
- 系统代理要清掉:TUN 已经接管全部流量了,如果系统代理还开着,流量会被转两次,容易冲突或变慢。把系统代理设为清除/关闭。
- 路由模式二选一:「绕过大陆」是规则模式(国内直连、国外走代理),适合日常使用;「全局」是全部流量走代理,适合需要全量加密的场景。日常用前者就够了。
TUN 模式的详细原理见 Clash TUN 模式详解。
验证:到底堵住了没有#
三步做完,别凭感觉,用工具验一下:
- 打开本站的 DNS 泄露检测工具。
- 按页面提示跑一次检测。
- 看结果里的 DNS 服务器归属:如果显示的是你设置的公共 DNS(比如 Cloudflare、Google),说明堵住了;如果出现宽带运营商或本地网络的 DNS,说明还有地方没配好,按前三步回头查。
建议每次换节点、换客户端、改完系统设置后都验一次,养成习惯比出问题再排查省事得多。
做完还是没网?按这个顺序查#
如果三步做完反而打不开网页了,别慌,多数是配置冲突:
- 先关 TUN:用普通系统代理模式测试,能上网说明问题在 TUN 上,检查路由选项或重启客户端。
- 再看 DNS:把远程 DNS 换回普通的公共 DNS 地址测试,确认是不是 DoH 地址填错了。
- 检查系统代理:确认 TUN 开启后系统代理已经清掉,两者同时开是最常见的冲突源。
更完整的排查流程见 代理已连接却没网排查 8 步。
常见问题#
只做第一步够吗?
不够。客户端 DNS 只管代理流量,系统 DNS 和 TUN 覆盖的是客户端管不到的部分。三步是互相补位的,只做一步等于门关了一半。
直连 DNS 和远程 DNS 能填同一个吗?
可以,但要理解分工:直连 DNS 负责直连域名,远程 DNS 负责代理域名。填同一个公共 DNS 也能工作,分开填(国内 DNS 管直连、DoH 管代理)是更讲究的做法,速度和隐私都更好。
TUN 模式平时要一直开着吗?
按需开。日常浏览用普通代理模式就够了,TUN 更适合"有些 App 不走代理"的场景。一直开着 TUN 并不一定更好,还可能和某些软件冲突。
