高墙之外❤️

PassWall2 自定义 DNS 设置:直连、远程 DNS 与 DoH/DoT 配置

更新于 2026-11-14 · passwall.lol

简答: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 影响,或配合代理分流
加密 DNSDoH 或 DoT 对应字段避免明文 DNS 查询被中途读取或修改
节点域名解析失败节点配置中的域名解析字段为节点服务器域名单独指定解析方式
强制终端 DNS 经过 PassWall2DNS 重定向终端手动填写其他 DNS 时仍统一接管

PassWall2 源码把直连 DNS 和远程 DNS 分开生成,并分别传入协议、服务器、端口及查询策略;因此不要把“直连 DNS”“远程 DNS”“远程 DNS 出站”当成同一个设置。可查看 PassWall2 当前 app.sh 中的 DNS 参数生成逻辑。

配置前备份,再进入 PassWall2 基本设置

  1. 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 的“系统 → 备份/升级”导出配置。
  2. 打开配置入口。进入“服务 → PassWall2”或系统中实际显示的 PassWall2 菜单,再打开“基本设置”。在页面中的 DNS 区域查找“直连 DNS 协议”“直连 DNS”“远程 DNS 协议”“远程 DNS”“远程 DNS 出站”等字段。源码语言文件明确列出了这些字段,但具体折叠位置可能因版本不同而变化,找不到时用浏览器页面搜索 Remote DNS 或“远程 DNS”。
  3. 先只改一组。建议先保留直连 DNS 原值,只测试远程 DNS;确认远程解析正常后,再决定是否修改直连 DNS。一次修改多个 DNS、FakeDNS、DNS 重定向和 IPv6 选项,会让故障定位变得困难。
  4. 保存并应用。点击“保存并应用”,随后检查服务状态和日志:logread -e passwall2。如果日志没有输出,不代表一定失败,可继续检查监听端口和 DNS 查询结果。

如果保存后终端完全无法解析,撤销方法是恢复刚才导出的配置,或在 LuCI 中把刚改动的字段恢复为原值,再次保存应用。不要直接删除整个 PassWall2 配置文件。

直连 DNS、远程 DNS、DoH 和 DoT 怎么填

PassWall2 当前中文语言文件列出了 UDP/TCP、DoH、远程 DNS 出站、查询策略和 FakeDNS 等相关字段。下面的地址是公共服务商公开资料中的示例,不代表任何服务在你的网络环境中一定可用。

协议可填写示例适用说明失败时先查什么
UDP1.1.1.1 或 1.1.1.1:53兼容性最好,适合先验证基本解析检查 UDP 53 是否可达,以及是否被其他 DNS 服务接管
TCPtcp://1.1.1.1 或按界面拆分服务器和端口需要 TCP DNS 查询时使用检查 TCP 53 是否被防火墙拦截
DoHhttps://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 配置生成代码。

  1. 进入“节点列表”,编辑目标节点,确认地址填写的是域名而不是已经固定的 IP。
  2. 查找类似“域名解析协议”“节点域名 DNS”“域名解析 DNS”或 DoH 地址的字段。不同版本文案可能不同。
  3. 如果选择 HTTPS 解析,填写服务商要求的完整 DoH URL;如果选择普通 DNS,按页面要求填写服务器地址和端口。
  4. 保存单个节点后重启或重新加载 PassWall2,再检查运行日志中是否出现该节点的解析或连接错误。

不要把“按节点域名指定 DNS”和“按分流规则指定 DNS 出口”混为一谈。公开 issue #1056 的状态是“Closed as not planned”,它讨论的是按分流规则添加自定义 DNS 出口;因此当前版本是否能让每条分流规则分别使用不同 DNS,不能直接按该功能请求当成已支持。查看该项目讨论状态。

保存后如何验证 DNS 是否真的生效

  1. 先确认终端指向路由器。在客户端查看 DNS 服务器和默认网关是否都是 OpenWrt 路由器地址。PassWall2 的中文语言文件也明确提示,客户端 DNS 和默认网关应指向该路由器,否则 DNS 查询可能绕过 PassWall2。
  2. 在路由器上测试普通解析。执行 nslookup example.com 127.0.0.1。如果系统没有 nslookup,可尝试 opkg update && opkg install bind-dig,但安装包名称需按当前 OpenWrt 软件源核实。
  3. 检查 DoT 端口。执行 nc -zvw 5 1.1.1.1 853。出现 succeeded 表示 TCP 端口可建立连接;出现 timed out 说明路径或防火墙可能阻断,不代表 DNS 地址一定错误。
  4. 检查 DoH HTTPS。执行 uclient-fetch -O /tmp/doh-test 'https://1.1.1.1/dns-query'。返回 HTTP 错误不一定说明 DoH 不可用,因为 DoH 查询通常还需要正确的 DNS wireformat 请求;此命令主要用于检查 HTTPS 连接是否能建立。
  5. 在终端清理缓存后复测。Windows 管理员命令提示符执行 ipconfig /flushdns;macOS 终端执行 sudo killall -HUP mDNSResponder;移动设备则断开 Wi-Fi 后重新连接。PassWall2 语言文件也提供了这些缓存清理提示。
  6. 排除浏览器自带 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
局域网设备仍使用其他 DNSDNS 重定向、客户端手动 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 出口是两类不同能力,当前版本需单独核实。

相关阅读

参考资料

  1. PassWall2 app.sh:DNS 参数与运行配置生成
  2. PassWall2 中文语言文件:基本设置与 DNS 字段
  3. PassWall2 util_sing-box.lua:节点域名解析与 DNS 配置生成
  4. PassWall2 Issue #1056:按分流规则添加自定义 DNS 出口
  5. Cloudflare 1.1.1.1:路由器配置