Passwall 装好了,节点也填了,但网页打开速度很慢,或者某些国内网站反而走了代理——十有八九是 DNS 没配对。
DNS 是 Passwall 里最容易被忽视、也最容易出问题的部分。这篇文章从原理出发,把每个选项逐一解释清楚。
先搞清楚:DNS 在 Passwall 里是干什么用的
你访问一个网站,第一步是把域名解析成 IP 地址。这个解析结果决定了两件事:一是你拿到的 IP 是不是真实的,二是 Passwall 能不能正确判断这个域名该走代理还是直连。
问题在于,如果国外域名(比如 google.com)用国内 DNS 解析,GFW 会返回一个虚假的 IP。Passwall 拿到这个假 IP 就无法正常代理。所以必须让国外域名经过代理去请求境外 DNS,才能拿到真实 IP。
这就是”直连 DNS”和”远程 DNS”分开设置的原因。
直连 DNS 和远程 DNS 的区别
| 类型 | 用途 | 是否经过代理 | 常用填写 |
|---|---|---|---|
| 直连 DNS | 解析国内直连域名 | 不经过代理 | 自动(读取系统)/ 114.114.114.114 |
| 远程 DNS | 解析国外代理域名 | 必须经过代理 | 8.8.8.8 / 1.1.1.1 |
官方 FAQ 对这两个字段的解释是:远程 DNS 是你上网代理时使用的 DNS,需要设置为任意境外 DNS;直连 DNS 是从本地直连访问时使用的 DNS,用任意本地可用的 DNS 即可。
新手最小化配置:能用就行
如果你只想让代理正常跑起来,不想深入折腾,按这个配置设置就够了。
如果你选择了其他过滤模式(如 pdnsd 或通过 TCP/UDP 请求 DNS),必须同时在基本设置里勾选”路由器本机代理”,否则远程 DNS 无法正常工作。
怎么设置 TLS 加密 DNS(DoT)
普通 UDP 协议的 DNS 请求是明文的,ISP 可以看到你在解析什么域名,也可能被劫持。如果你想加密 DNS 查询,可以使用 TLS 协议(DNS over TLS,简称 DoT)。
在 Passwall 的 DNS 设置里,远程 DNS 协议下拉选 TLS,然后在自定义地址栏填入支持 DoT 的服务器,例如:
端口 853 是 DoT 的标准端口。需要注意的是,TLS 模式要求你的代理节点支持 TCP 转发,如果节点只支持 UDP,TLS DNS 请求会失败,需要换回 TCP 或 dns2socks 模式。
规则设置:某个网站走代理或直连
DNS 配置正确之后,Passwall 依靠内置的 GFWList 和 CN 列表来自动分流。但列表不可能覆盖所有域名,有时候会遇到不该走代理的域名走了代理,或者反过来。
解决方法很直接:进入 Passwall → 规则列表,找到对应的列表手动添加。
负载均衡:多节点分摊流量
如果你有多个代理节点,Passwall 支持负载均衡,将流量分摊到不同节点上,避免单一节点过载。
在 Passwall → 节点列表中,选中多个节点后可以创建负载均衡组。常见策略有两种:
请求依次分配给各节点。流量分布均匀,但节点质量不同时体验会参差不齐。
每次连接随机选择节点。适合节点质量差异较大的情况,长期使用趋于均衡。
负载均衡和 DNS 设置是独立的。DNS 分流决定流量该不该走代理,负载均衡决定走代理的流量分给哪个节点。两者配合才能发挥最大效果。
常见问题
总结
Passwall DNS 设置的核心逻辑只有一句话:国内域名走直连 DNS,国外域名经代理走远程 DNS,两套解析互不干扰。
新手直接用 dnsmasq 分流 + dns2socks 过滤模式,配上 8.8.8.8 远程 DNS,基本就能正常用了。进阶用户可以接入 SmartDNS 或 MosDNS 做多级分流,但对大多数家庭用户来说,默认配置已经够用。
不要随意替换 dnsmasq。乱改多级 DNS 转发链会让调试变得非常困难。出了问题先从最简单的配置开始排查。


