PassWall2 自定义 DNS 设置:直连、远程 DNS 与 DoH/DoT 配置
简答:PassWall2 自定义 DNS 主要在“PassWall2 → 基本设置”中的 DNS 区域配置:直连 DNS 负责直连域名,远程 DNS 负责需要代理或由核心处理的域名。先备份 OpenWrt 配置,再只修改一组 DNS,保存应用后用 nslookup、dig 和端口检查确认是否生效;如果界面没有 DoT、节点域名 DNS 或相关字段,说明当前安装包、语言包或核心组合可能不支持,需按当前版本核实。
定义:PassWall2 自定义 DNS,是在 OpenWrt 的 PassWall2 DNS 配置中手动指定直连解析、远程解析、加密 DNS 或特定域名解析方式,而不是简单修改终端设备的 DNS 地址。
先判断:你要改的是哪一种 DNS
这是一个第三方使用指南,PassWall2 的界面和字段会随分支、安装包及代理核心变化。本文核对日期为 2026-11-14,菜单文案以当前安装的 LuCI 界面为准。官方仓库当前源码和中文语言文件中可以看到“基本设置”“直连 DNS 协议”“远程 DNS 协议”“远程 DNS 出站”“DNS 重定向”“域名重写”和 FakeDNS 等字段,但开发分支文案不等于所有已发布安装包的实际界面。
| 目标 | 应先看哪个字段 | 常见用途 |
|---|---|---|
| 普通直连域名解析 | 直连 DNS 协议、直连 DNS | 局域网、国内服务或不希望进入代理核心的域名 |
| 需要由远程解析的域名 | 远程 DNS 协议、远程 DNS、远程 DNS 出站 | 减少本地 DNS 影响,或配合代理分流 |
| 加密 DNS | DoH 或 DoT 对应字段 | 避免明文 DNS 查询被中途读取或修改 |
| 节点域名解析失败 | 节点配置中的域名解析字段 | 为节点服务器域名单独指定解析方式 |
| 强制终端 DNS 经过 PassWall2 | DNS 重定向 | 终端手动填写其他 DNS 时仍统一接管 |
PassWall2 源码把直连 DNS 和远程 DNS 分开生成,并分别传入协议、服务器、端口及查询策略;因此不要把“直连 DNS”“远程 DNS”“远程 DNS 出站”当成同一个设置。可查看 PassWall2 当前 app.sh 中的 DNS 参数生成逻辑。
配置前备份,再进入 PassWall2 基本设置
- SSH 登录路由器并备份。使用具有管理员权限的 SSH 会话执行:
mkdir -p /root/passwall2-dns-backup-2026-11-14 && sysupgrade -b /root/passwall2-dns-backup-2026-11-14/openwrt-backup.tar.gz。预期结果是生成备份文件;若提示sysupgrade: not found,说明当前系统没有该命令,改用 LuCI 的“系统 → 备份/升级”导出配置。 - 打开配置入口。进入“服务 → PassWall2”或系统中实际显示的 PassWall2 菜单,再打开“基本设置”。在页面中的 DNS 区域查找“直连 DNS 协议”“直连 DNS”“远程 DNS 协议”“远程 DNS”“远程 DNS 出站”等字段。源码语言文件明确列出了这些字段,但具体折叠位置可能因版本不同而变化,找不到时用浏览器页面搜索
Remote DNS或“远程 DNS”。 - 先只改一组。建议先保留直连 DNS 原值,只测试远程 DNS;确认远程解析正常后,再决定是否修改直连 DNS。一次修改多个 DNS、FakeDNS、DNS 重定向和 IPv6 选项,会让故障定位变得困难。
- 保存并应用。点击“保存并应用”,随后检查服务状态和日志:
logread -e passwall2。如果日志没有输出,不代表一定失败,可继续检查监听端口和 DNS 查询结果。
如果保存后终端完全无法解析,撤销方法是恢复刚才导出的配置,或在 LuCI 中把刚改动的字段恢复为原值,再次保存应用。不要直接删除整个 PassWall2 配置文件。
直连 DNS、远程 DNS、DoH 和 DoT 怎么填
PassWall2 当前中文语言文件列出了 UDP/TCP、DoH、远程 DNS 出站、查询策略和 FakeDNS 等相关字段。下面的地址是公共服务商公开资料中的示例,不代表任何服务在你的网络环境中一定可用。
| 协议 | 可填写示例 | 适用说明 | 失败时先查什么 |
|---|---|---|---|
| UDP | 1.1.1.1 或 1.1.1.1:53 | 兼容性最好,适合先验证基本解析 | 检查 UDP 53 是否可达,以及是否被其他 DNS 服务接管 |
| TCP | tcp://1.1.1.1 或按界面拆分服务器和端口 | 需要 TCP DNS 查询时使用 | 检查 TCP 53 是否被防火墙拦截 |
| DoH | https://1.1.1.1/dns-query | 通过 HTTPS 443 发送 DNS 查询 | 检查 URL 是否完整,且当前核心是否生成 HTTPS DNS 配置 |
| DoT | 服务器:1.1.1.1;端口:853;主机名:one.one.one.one | 通过 TLS 连接发送 DNS 查询 | 检查页面是否有 DoT 字段、853 端口和 TLS 主机名 |
Cloudflare 的公开资料说明,DoT 使用 TCP 853,DoH 使用 HTTPS 443;其 DoT 服务可使用 1.1.1.1、1.0.0.1 或主机名 one.one.one.one。协议与端口说明和DoT 主机名及端口说明可作为填写依据。
如果界面只有“直连 DNS”和“远程 DNS”,没有单独的 DoT 字段,不要把 tls://、dot:// 或主机名格式强行填进普通地址框。当前 PassWall2 是否接受该写法,取决于安装包和使用的核心;没有对应字段时应标记为“当前组合未核实”,优先使用界面明确支持的 UDP、TCP 或 DoH。
DoH 的常见完整 URL 示例为 https://1.1.1.1/dns-query。如果页面提示需要“URL,IP”或类似引导格式,应严格按当前字段的占位提示填写;源码语言文件只确认存在“远程 DNS DoH”字段,不能据此推断所有版本都接受同一种复合写法。
节点域名需要指定 DNS 时怎么处理
假如节点地址是域名,且节点 IP 经常变化,可以先检查节点配置页面是否存在域名解析相关字段。PassWall2 当前 sing-box 配置生成代码中可以看到:当节点地址是主机名,并且节点配置提供域名解析协议及 DNS 地址时,会为该节点生成独立的 DNS server,并把它作为节点的 domain_resolver;这说明 sing-box 路径具备按节点域名生成解析器的代码逻辑。可查看当前开发分支的 sing-box 配置生成代码。
- 进入“节点列表”,编辑目标节点,确认地址填写的是域名而不是已经固定的 IP。
- 查找类似“域名解析协议”“节点域名 DNS”“域名解析 DNS”或 DoH 地址的字段。不同版本文案可能不同。
- 如果选择 HTTPS 解析,填写服务商要求的完整 DoH URL;如果选择普通 DNS,按页面要求填写服务器地址和端口。
- 保存单个节点后重启或重新加载 PassWall2,再检查运行日志中是否出现该节点的解析或连接错误。
不要把“按节点域名指定 DNS”和“按分流规则指定 DNS 出口”混为一谈。公开 issue #1056 的状态是“Closed as not planned”,它讨论的是按分流规则添加自定义 DNS 出口;因此当前版本是否能让每条分流规则分别使用不同 DNS,不能直接按该功能请求当成已支持。查看该项目讨论状态。
保存后如何验证 DNS 是否真的生效
- 先确认终端指向路由器。在客户端查看 DNS 服务器和默认网关是否都是 OpenWrt 路由器地址。PassWall2 的中文语言文件也明确提示,客户端 DNS 和默认网关应指向该路由器,否则 DNS 查询可能绕过 PassWall2。
- 在路由器上测试普通解析。执行
nslookup example.com 127.0.0.1。如果系统没有 nslookup,可尝试opkg update && opkg install bind-dig,但安装包名称需按当前 OpenWrt 软件源核实。 - 检查 DoT 端口。执行
nc -zvw 5 1.1.1.1 853。出现succeeded表示 TCP 端口可建立连接;出现timed out说明路径或防火墙可能阻断,不代表 DNS 地址一定错误。 - 检查 DoH HTTPS。执行
uclient-fetch -O /tmp/doh-test 'https://1.1.1.1/dns-query'。返回 HTTP 错误不一定说明 DoH 不可用,因为 DoH 查询通常还需要正确的 DNS wireformat 请求;此命令主要用于检查 HTTPS 连接是否能建立。 - 在终端清理缓存后复测。Windows 管理员命令提示符执行
ipconfig /flushdns;macOS 终端执行sudo killall -HUP mDNSResponder;移动设备则断开 Wi-Fi 后重新连接。PassWall2 语言文件也提供了这些缓存清理提示。 - 排除浏览器自带 DNS。如果系统命令显示 DNS 已改变,但浏览器仍表现不同,暂时关闭浏览器的“使用安全 DNS”或同类内置 DNS 功能,再完全退出浏览器并重开。
Cloudflare 的路由器配置资料建议先记录原有 DNS,再保存新地址;其公开 IPv4 示例为 1.1.1.1 和 1.0.0.1,IPv6 示例为 2606:4700:4700::1111 和 2606:4700:4700::1001。公共 DNS 地址与路由器配置说明可用于核对地址。
常见冲突与回退方法
| 现象 | 优先检查 | 回退方法 |
|---|---|---|
| 保存后路由器本机无法解析 | 远程 DNS 出站、DoH URL、核心日志 | 恢复备份,先改回 UDP DNS |
| 局域网设备仍使用其他 DNS | DNS 重定向、客户端手动 DNS、旁路由网关 | 先关闭 DNS 重定向并确认终端 DNS 指向路由器 |
| 节点域名连接失败 | 节点地址是否为域名、节点专用解析字段、IPv4/IPv6 | 暂时改用节点 IP 仅作诊断,不建议长期替代域名 |
| 国内服务打开慢或 CDN 命中异常 | 直连 DNS、EDNS Client Subnet、IPv6 查询策略 | 关闭 ECS、恢复原直连 DNS,再逐项测试 |
| 开启 FakeDNS 后部分应用异常 | 代理域名 FakeDNS、应用是否依赖真实地址 | 关闭 FakeDNS,保存应用并清理终端 DNS 缓存 |
| AdGuard Home 或 dnsmasq 端口冲突 | ss -lntup | grep ':53\|:853' | 只保留一个服务监听同一地址和端口,其他服务改为上游或改监听端口 |
检查端口时如果出现 Permission denied,请使用管理员 SSH;如果出现 Address already in use,表示端口已被其他进程占用。可用 ps | grep -E 'dnsmasq|AdGuard|passwall' 和 ss -lntup 核对进程,再撤销刚才的端口修改。
常见问题
PassWall2 自定义 DNS 在哪里设置?
通常进入“服务 → PassWall2 → 基本设置”,在 DNS 区域查找“直连 DNS”“远程 DNS”“远程 DNS 出站”和“DNS 重定向”。不同安装包的菜单层级和中文文案可能不同,优先按页面搜索这些字段。
PassWall2 的直连 DNS 和远程 DNS 有什么区别?
直连 DNS 用于直连解析路径,远程 DNS 用于远程或代理相关解析路径;两者可能使用不同协议、服务器和查询策略。修改前应先明确哪个域名实际走哪条分流路径。
PassWall2 可以使用 DoT 吗?
当前开发分支源码和语言文件能确认 PassWall2 存在多种 DNS 协议字段,sing-box 配置代码也包含 DNS server 生成逻辑;但具体安装包是否在 LuCI 中提供可用 DoT 字段、Xray 路径是否同样支持,需要以当前界面和生成日志核实。
为什么改了 PassWall2 DNS,浏览器结果没有变化?
先确认终端 DNS 和默认网关都指向路由器,再关闭浏览器内置安全 DNS,执行 Windows 的 ipconfig /flushdns 或重新连接移动设备 Wi-Fi,最后用 nslookup 或 dig 复测。
是否可以给每条分流规则设置不同 DNS 出口?
不能把该能力默认视为已支持。公开 issue #1056 的状态为 Closed as not planned;节点域名专用解析与按分流规则分别指定 DNS 出口是两类不同能力,当前版本需单独核实。
相关阅读
- 先看 PassWall2 DNS 基础设置怎么选
- 继续检查 PassWall2 是否存在 DNS 泄露
- 如果启用 FakeDNS,再看 Fake-IP 设置与回退
- 遇到解析异常时,用 nslookup 和 dig 分层排查
- 节点仍连不上时,按连接失败日志继续定位