历史版本记录:mosdns v4。 本文讨论 2022 年 mosdns v4 与 LuCI/PassWall 的组合思路。
data_providers、fast_forward、query_matcher和servers等 v4 写法不能直接用于 v5;当前 v5 配置见对应教程。
一、v4 组合的职责划分
这套 v4 组合由本地 AdGuard Home 5353 提供国内解析与过滤,mosdns 5335 按规则选择本地或远程 DNS,SmartDNS 可选地在 6053 作为入口,再由 dnsmasq/PassWall 接入客户端查询。这种结构可以分流,但远程分支绕过本地 AdGuard Home 时,不会自动得到同一套广告过滤。
所以“配置了本地 AdGuard Home 就实现全程去广告”并不准确。新部署可以将 AdGuard Home 放在分流之前,再把公共查询发给 mosdns;本地域名和私网 PTR 定向到提供这些数据的 dnsmasq,确保无递归回路。

这张图属于旧环境记录,端口、缓存字段和菜单位置应按安装版本核实。AdGuard Home 当前配置说明明确区分上游模式、过滤及访问控制。
二、分流、ECS 与过滤的边界
按域名分类后直接返回,与取得应答后再按 IP 判断,是两种不同的分流逻辑。如果只在未分类域名的 fallback 分支判断 IP,已经分类的域名就不会经过这一步;需要交叉检查域名与应答地址时,应在实际执行路径中明确安排判断。
更根本的问题是 IP 地理归属不能证明答案是否受污染。固定附加日本 ECS、默认拒绝 HTTPS 类型 65,也不是普遍正确的选择。ECS 应代表需要优化的实际出口并有明确支持;HTTPS 记录含有连接参数,默认阻止可能妨碍正常功能。
“全程加密”也应限定范围:客户端到路由器、路由器上的 loopback UDP 查询仍可能是传统 DNS;使用 DoH/DoT 的只是指定上游链路。加密上游、可靠答案、广告过滤和最优地址是四个不同目标,需要分别验证。
三、迁移到 v5 时的顺序
- 查明正在运行的 mosdns 版本、DNS socket、UCI/YAML 和重定向规则,绘制完整查询链。
- 根据 v5 的
domain_set/ip_set准备文本规则,重写sequence与 TCP/UDP 服务器插件;不能只改版本号或文件后缀。 - 在测试端口验证新配置,再接入真实 DNS 入口;保留能恢复旧配置的管理路径。
- 验证本机与 LAN、TCP/UDP、A/AAAA、阻止名单、本地域名、私网 PTR 和代理引导查询,确认无端口争用与查询循环。
v5 的插件初始化顺序、应答终止及 fallback 需要按官方配置文档重建。规则更新、API 暴露及缓存策略也应单独维护。
四、SmartDNS 与 PassWall 的历史配置边界

SmartDNS 的测速针对它自身的网络出口。若网页通过另一台代理访问,路由器本地 ping/TCP 测出的最优 IP 可能不适合真正出口,不能据此比较所有方案快慢。
旧 PassWall issue 和截图反映当时生成配置的行为,不能直接推出当前所有固件必须使用相同的远程 DNS 地址。我的 Actions-OpenWrt 项目已给 DNS 劫持和代理 TPROXY 的执行顺序设置配套规则;其他固件需检查实际防火墙,而不是只看 LuCI 勾选项。
历史截图用于理解 v4 时代的配置结构。迁移到 v5 时应使用当前版本的字段和执行逻辑,不能照搬截图中的菜单与参数。
评论区