高墙之外❤️

PassWall2 DNS 分流怎么设置?按场景配置并验证

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

简答:如果你遇到国内网站变慢、国外域名打不开,或改完 DNS 似乎没反应,通常先要检查直连 DNS、远程 DNS和远程 DNS 出站是否填反。最稳妥的起点是:直连 DNS 使用 OpenWrt 当前获得的本地上游 DNS,远程 DNS 使用不同的远程解析地址,远程 DNS 出站先用代理测试,FakeDNS 先关闭。本文是第三方使用指南,界面字段会随 PassWall2、代理核心和 OpenWrt 版本变化,以当前 LuCI 页面为准。

定义:PassWall2 DNS 分流,是按域名或规则把 DNS 查询分别交给直连 DNS 或远程 DNS,同时再由流量分流规则决定实际访问走直连还是代理。

先照抄这张速查卡:基础 DNS 分流配置

目标是“国内域名直连、其他域名按规则代理”时,先不要同时修改很多选项。下面的模板用于基础排查,地址和字段是否可用仍要以你的 OpenWrt 网络、PassWall2 当前页面和代理核心支持情况为准。

项目可直接参考的填写方式用途排错提示
直连 DNS从 /tmp/resolv.conf.d/resolv.conf.auto 或 /tmp/resolv.conf.auto 读取的本地上游 DNS让直连域名使用当前网络可达的解析路径不要与远程 DNS 使用同一组境外地址
远程 DNS 协议TCP 优先验证;确认可用后再测试 UDP 或 DoH为需要远程解析的域名提供查询远程 DNS 走代理时,节点不支持 UDP 转发可能导致 UDP 失败
远程 DNS8.8.8.8 或受支持的 DoH 地址作为远程解析示例Google 官方列出的 IPv4 地址包括 8.8.8.8 和 8.8.4.4,实际可达性需自行验证。Google Public DNS 使用说明
远程 DNS 出站代理 优先测试决定远程 DNS 查询从直连还是代理链路发出核心未启动或代理不可用时,远程解析可能超时
DNS 重定向排障时按需开启把客户端发往其他 DNS 的 53 端口请求重定向到 PassWall2 专用 DNS开启后要检查是否影响其他 DNS 服务;IPv6 仍需单独验证
FakeDNS关闭先验证普通 DNS 分流,之后再按应用需求启用虚拟 IP、局域网访问异常或应用不兼容时先关闭回退

PassWall2 当前仓库的中文语言文件列出了“直连 DNS”“远程 DNS”“远程 DNS 出站”“直连查询策略”“远程查询策略”“FakeDNS”和“DNS 重定向”等字段。该文件属于仓库开发分支文案,实际菜单名称和显示条件需以当前页面为准。PassWall2 中文语言文件

第 1 步:备份配置,并确认客户端没有绕过路由器

  1. 登录 OpenWrt SSH。以下命令需要管理员权限;普通账号不能写入 /etc/config 或执行服务重启时,请切换到 root。
  2. 备份 DHCP 和 PassWall2 配置:mkdir -p /root/backup-passwall2-dns-$(date +%Y%m%d-%H%M%S); D=$(ls -td /root/backup-passwall2-dns-* | head -n1); for f in /etc/config/dhcp /etc/config/passwall2; do [ -f "$f" ] && cp -a "$f" "$D/"; done; echo "$D"。预期会输出真实备份目录,例如 /root/backup-passwall2-dns-20261114-120000。如果没有生成某个文件,说明该固件的配置路径或插件配置名称不同,不要直接创建空文件覆盖原配置。
  3. 读取当前上游 DNS。先执行 cat /tmp/resolv.conf.d/resolv.conf.auto;如果提示文件不存在,再执行 cat /tmp/resolv.conf.auto。较旧版本或部分固件可能使用后一个路径。也可以执行 ubus call network.interface.wan status,查看输出中的 dns-server 字段。记录其中的 nameserver 地址,作为直连 DNS 候选。OpenWrt 的上游 DNS 文件和默认解析链路会随版本、接口及其他 DNS 服务变化,不能只凭一个固定路径判断。
  4. 确认客户端默认 DNS。在客户端执行不带服务器参数的 nslookup example.com。Windows 预期看到 Default Server 和 Address 指向 OpenWrt 的 LAN 地址;macOS 或 Linux 可执行 scutil --dns 或 resolvectl status 查看当前 DNS。不要使用 nslookup example.com 192.168.1.1 作为唯一依据,因为显式指定路由器地址只能证明这一次查询使用了该服务器,不能证明系统默认 DNS 没有绕过路由器。
  5. 暂时关闭可能绕过路由器的功能。排障期间关闭浏览器内置安全 DNS、系统级私人 DNS 或其他 DNS 应用。PassWall2 中文文案也提醒,客户端 DNS 和默认网关应指向本路由器,并提示部分浏览器可能内置 DNS。PassWall2 DNS 相关文案

如果客户端的默认 DNS 已经是其他服务器,先修正 DHCP 或客户端网络设置;如果默认网关不是 OpenWrt,则本文的透明接管步骤不适用于该设备。

第 2 步:在 PassWall2 中按场景填写 DNS 字段

通常在 LuCI 的 PassWall2 基本设置及 DNS 相关区域操作。当前仓库文案能够核实的字段包括“直连 DNS 协议”“直连 DNS”“远程 DNS 协议”“远程 DNS”“远程 DNS 出站”“直连查询策略”“远程查询策略”“FakeDNS”和“DNS 重定向”。不同代理核心下的字段组合、默认值和显示条件没有在本次资料中完整核实,界面不一致时不要手写未知 UCI 选项。PassWall2 字段文案

场景直连 DNS远程 DNS远程 DNS 出站FakeDNS
国内直连、其他域名代理填写上一步从 OpenWrt WAN 或 ubus 查询到的本地上游 DNS填写与直连 DNS 不同的远程地址;可先测试 8.8.8.8先选代理关
只减少 DNS 污染保留当前网络可达的本地 DNS,用于直连域名使用远程 DNS,先用 TCP 验证,再测试 DoH按远程地址实际可达性选择关
节点域名解析失败不要先反复改全局 DNS检查节点域名专用解析、域名重写或节点地址对应的解析路径让节点域名从能访问节点地址的链路解析先关
  1. 先选择默认分流节点。DNS 分流只处理查询路径,不能代替实际流量规则。默认节点、国内直连规则和远程域名规则仍需分别检查。
  2. 填写直连 DNS。优先使用当前 WAN 实际获得的本地上游地址,不要把 8.8.8.8 同时填入直连和远程两栏。这样才能在排查时区分两类查询路径。
  3. 填写远程 DNS。远程 DNS 通过代理出站时,建议先用 TCP 测试,因为部分节点或转发链路对 UDP 支持不完整。TCP 成功后,再测试 UDP;如果当前页面和核心明确支持 DoH,可使用 https://dns.google/dns-query 作为官方地址示例。Google 资料列出 DoT 的主机名 dns.google 和 DoH 地址,但是否能直接填入当前 PassWall2 字段仍需以页面提示为准。Google DNS 安全传输说明
  4. 处理 DNS 重定向。如果客户端手动填写了外部 DNS,且你需要让普通 53 端口查询回到 PassWall2,可在当前页面查找“DNS 重定向”并按需开启。PassWall2 文案将其解释为强制需要代理的设备使用专用 DNS 服务器;开启后应检查端口冲突、其他 DNS 服务和 IPv6 是否仍绕过。DNS 重定向字段说明
  5. 先关闭 FakeDNS。PassWall2 文案说明 FakeDNS 用于需要代理的域名,并列举让节点服务器获取目标域名、减少 DNS 查询延迟等场景。基础 DNS 分流尚未验证时先关闭,避免把虚拟地址或应用兼容性问题误判成普通 DNS 故障。FakeDNS 字段说明
  6. 保存并应用。优先使用 LuCI 的“保存并应用”。如果页面没有某字段,记录 PassWall2、OpenWrt 和代理核心信息,不要照抄其他版本的 UCI 参数。Xray 与 sing-box 的完整字段差异本次资料未核实;仓库存在 sing-box 配置生成代码,但不足以据此推导所有界面差异。PassWall2 sing-box 配置代码

第 3 步:用客户端、路由日志和解析对比验证分流

  1. 应用服务并查看状态。先用 LuCI 保存并应用。命令行可尝试 /etc/init.d/passwall2 restart;如果返回 not found、Usage 或脚本不支持该参数,改用 LuCI 查看运行状态,不要继续猜测其他参数。
  2. 临时开启 dnsmasq 查询日志。uci set dhcp.@dnsmasq[0].logqueries='1'; uci commit dhcp; service dnsmasq restart。OpenWrt 文档显示 logqueries 默认值通常为 0,开启后可记录 DNS 查询;因此直接执行 logread | grep dnsmasq 没有查询记录,并不能证明 DNS 重定向失败。OpenWrt DHCP 和 DNS 配置
  3. 在客户端检查默认 DNS。执行不带服务器参数的 nslookup example.com。Windows 查看 Default Server;macOS 可执行 scutil --dns;Linux 可执行 resolvectl status。预期是客户端使用 OpenWrt LAN 地址或由 OpenWrt 提供的本地解析入口。若仍显示其他 DNS,先检查 DHCP、浏览器安全 DNS和系统私人 DNS。
  4. 在路由器观察查询是否进入。执行 logread -f | grep -E 'dnsmasq|query|forwarded|PSW2',然后重新执行客户端的 nslookup。能看到客户端查询,只能证明请求进入某个路由器 DNS 组件,不能单独证明它使用了直连 DNS还是远程 DNS。
  5. 区分直连 DNS 与远程 DNS。先在 PassWall2 日志中搜索 DNS 命中、直连、远程、出站或对应核心的 DNS 记录;命令可先用 logread | grep -Ei 'passwall|dns|direct|remote|outbound|query'。再选同一个域名,分别用直连 DNS 和远程 DNS 做对照查询,例如 nslookup cdn.jsdelivr.net 直连DNS地址 与 nslookup cdn.jsdelivr.net 8.8.8.8。两次结果可能因缓存、CDN、地域和时间不同而变化,因此只能作为辅助证据;最终应结合 PassWall2 日志中的查询路径判断。
  6. 做网页级 DNS 泄露复测。在客户端关闭缓存影响后打开 DNS leak test,先运行标准测试,再在修改 DNS 重定向或远程 DNS 出站后重新测试。重点记录测试显示的 DNS 服务商、国家或地区以及测试时间;如果仍出现预期之外的解析服务,不要直接断言“泄露”,先检查浏览器 DoH、系统私人 DNS、IPv6 DNS和其他 VPN/DNS 应用。网页测试结果受缓存、浏览器和测试站点实现影响,只能作为辅助参考,不能替代路由器日志。
  7. 检查 53 端口重定向规则。在路由器执行 nft list ruleset | grep -E 'PSW2_DNS|dport 53|redirect.*53'。若系统没有 nft 命令或使用旧防火墙,可执行 iptables-save | grep -E '53|PASSWALL|PSW2';命令无输出不一定代表配置失败,可能是防火墙后端或规则名称不同。
  8. 检查 IPv6。执行 ip -6 addr、ip -6 route,并在客户端确认是否拿到了 IPv6 DNS。PassWall2 项目一个于 2026 年 7 月 17 日提交的 issue 描述了 OpenWrt 25.12.5、PassWall2 26.7.16-r1、nftables、SLAAC/RA relay 环境下,使用公网 IPv6 GUA 源地址的 DNS 请求未进入 PSW2_DNS;该 issue 于 2026 年 8 月 2 日标记为“未计划处理”,是否已在你当前版本修复需核实。若 IPv4 正常而 IPv6 异常,可暂时关闭客户端 IPv6 或 IPv6 DNS 广播后复测。PassWall2 IPv6 DNS 请求绕过问题讨论
  9. 关闭临时日志。uci delete dhcp.@dnsmasq[0].logqueries; uci commit dhcp; service dnsmasq restart。如果删除时报错,可改用 uci set dhcp.@dnsmasq[0].logqueries='0'; uci commit dhcp; service dnsmasq restart。

可复现的判定标准是:客户端默认 DNS 指向路由器;路由器日志出现该客户端查询;直连和远程 DNS 地址不同;PassWall2 或代理核心日志能显示对应查询路径;关闭或切换远程 DNS 出站后,结果变化符合预期。仅凭网页能打开,不能证明 DNS 分流和 DNS 重定向都正确。

现象 → 最可能原因 → 第一步检查命令

现象最可能原因第一步检查
国内网站变慢直连 DNS 误填远程 DNS,或国内域名被分到代理规则cat /tmp/resolv.conf.d/resolv.conf.auto;不存在时改查 /tmp/resolv.conf.auto
国外域名打不开远程 DNS 出站不可达、核心未启动,或远程 DNS 使用 UDP但节点不支持 UDPlogread | grep -Ei 'passwall|dns|timeout|outbound';先把远程协议改为 TCP
改 DNS 后完全没反应客户端默认 DNS、浏览器 DoH或系统私人 DNS绕过了路由器客户端执行不带服务器参数的 nslookup example.com,再对照 logread -f
手动填写外部 DNS仍能解析DNS 重定向未开启,或只处理 IPv4,未覆盖 IPv6nft list ruleset | grep -E 'PSW2_DNS|dport 53',再检查 ip -6 route
只有节点域名打不开节点域名解析与全局 DNS 分流不是同一问题检查节点服务器域名、PassWall2 日志、域名重写或节点专用解析字段
重启后配置似乎恢复配置没有持久化、overlay 空间异常、系统配置还原或其他服务重新写入uci show passwall2、df -h、logread | grep -Ei 'overlay|mount|passwall'

“重启后恢复默认”不要先归因于备份脚本。先用 uci show passwall2 对比保存前后的实际字段,再检查 overlay 是否只读或空间不足;如需恢复,只使用第 1 步输出的真实备份目录,不要把示例时间戳直接复制。

如果配置后断网,先在 LuCI 停用 PassWall2,再恢复备份。例如备份目录为 /root/backup-passwall2-dns-20261114-120000,可执行 cp -a /root/backup-passwall2-dns-20261114-120000/dhcp /etc/config/dhcp 和 cp -a /root/backup-passwall2-dns-20261114-120000/passwall2 /etc/config/passwall2,之后分别执行 service dnsmasq restart 和在 LuCI 中重新应用 PassWall2。

本文核对日期与核心结论

本文核对日期:2026年11月14日。PassWall2 DNS 分流应按“客户端是否使用路由器 DNS → 直连 DNS 与远程 DNS 是否分开 → 远程 DNS 出站是否可达 → DNS 重定向是否接管 53 端口 → IPv6 是否绕过”的顺序排查。

直连 DNS、远程 DNS、远程 DNS 出站、DNS 重定向和 FakeDNS 是不同层次的设置:直连与远程决定查询使用哪类解析路径;远程 DNS 出站决定远程查询从哪条链路发出;DNS 重定向负责处理客户端是否绕过路由器;FakeDNS 则属于特定透明代理或核心场景的能力。不要把它们当成一个“开关”。

常见问题

PassWall2 直连 DNS 应该填什么?

优先填写 OpenWrt 当前 WAN 实际获得的本地上游 DNS。先执行 <code>cat /tmp/resolv.conf.d/resolv.conf.auto</code>,文件不存在时再查 <code>/tmp/resolv.conf.auto</code>,也可用 <code>ubus call network.interface.wan status</code> 查看 <code>dns-server</code>。不要把直连 DNS 与远程 DNS 填成同一组地址。

PassWall2 远程 DNS 为什么建议先用 TCP?

远程 DNS 如果通过代理出站,部分节点或转发链路可能不支持 UDP。先用 TCP验证基础连通性,成功后再测试 UDP或 DoH,可以把“协议不支持”和“地址不可达”分开判断。

开启 DNS 重定向后,客户端还需要把 DNS 填成路由器吗?

建议仍把客户端 DNS 和默认网关指向 OpenWrt。PassWall2 中文字段说明将 DNS 重定向描述为把需要代理设备的 DNS 请求导向专用 DNS,但不同固件、防火墙后端和 IPv6环境可能存在差异,不能把重定向当成客户端 DNS配置错误的替代修复。

为什么 nslookup 能解析,却不能证明 DNS 分流成功?

如果使用 <code>nslookup example.com 192.168.1.1</code>,你只是显式指定了路由器 DNS,无法证明系统默认 DNS没有绕过。应先执行不带服务器参数的 <code>nslookup example.com</code>,再结合 dnsmasq日志、PassWall2日志和直连/远程解析对比判断。

DNS 泄露测试网站显示多个 DNS 服务商,是否一定配置失败?

不一定。测试结果可能受缓存、浏览器 DoH、IPv6、网络出口和测试站点实现影响。先记录测试结果,再关闭浏览器安全 DNS、检查客户端 IPv6 DNS、确认路由器日志是否出现查询,最后重新测试;网页结果只能作为辅助证据。

FakeDNS 要不要开启?

基础排障阶段建议关闭。先确认直连 DNS、远程 DNS、远程 DNS 出站和 DNS 重定向正常;只有明确需要透明代理或特定核心能力时,再依据当前页面说明开启。出现虚拟 IP、局域网访问异常或应用不兼容时,先关闭回退。

Xray 和 sing-box 下的 PassWall2 DNS字段是否完全一样?

本次可核实资料只能确认当前仓库存在 sing-box 配置生成代码,并列出了通用 DNS字段;完整的 Xray 与 sing-box 页面差异、默认值和版本兼容关系未核实。界面不一致时,应以当前 LuCI可见字段和对应核心日志为准,不要照抄其他版本的 UCI选项。

相关阅读

参考资料

  1. openwrt-passwall2 中文语言文件
  2. openwrt-passwall2 sing-box 配置代码
  3. OpenWrt DHCP and DNS configuration(openwrt.org)
  4. Get Started | Public DNS
  5. Secure transports for DNS
  6. LAN 客户端使用 GUA 源地址时 IPv6 DNS 请求完全绕过 PSW2_DNS
  7. DNS leak test(dnsleaktest.com)