最近开始折腾MOSDNS+OpenClash+Adguard Home,从网上查到了很多配置教程,发现每种方案都会对各插件功能产生不同的影响,这也是网上会存在多种方案的原因,寻求最佳方案就有了折腾的意义。
首先介绍一下我运行了几年的方案(下图),这个方案不包含MosDNS,也就不能做到防止DNS泄露。但这个方案能在我的OpenWrt上运行多年的原因最大的优点就是兼顾OpenClash的分流和Adguard Home过滤的主要功能。

既然有OpenClash在Adguard Home上游的方案,就有Adguard Home在OpenClash上游的方案,但当初我没有采用这个方案就是因为这会影响Adguard Home对局域网内设备的识别,Adguard Home会将所有网络请求客户端都识别为OpenWrt软路由,Adguard Home也就失去了对特定设备的管控功能。
现在把MosDNS加进来(如下图),上述Adguard Home会将所有网络请求客户端都识别为OpenWrt软路由的情况依然是存在的。

现在我们只需把OpenClash调整到Adguard Home上游即可解决(如下图)。

同时还可以衍生出另一种方案(如下图),将MosDNS的远程DNS服务器设置为OpenClash的DNS监听端口127.0.0.1:7874。在OpenClash的DNS设置中勾选自定义上游 DNS 服务器,然后在NameServer和FallBack中添加国外DNS服务器。这种方案有一个很大的优点是在OpenClash分流访问中国内直连链接都将以解析后的IP形式出现,对于分流规则不是很完备的规则集非常友好。

这里有一点需要注意:MosDNS(我使用的是MosDNS v5.3.1)远程服务器如果在下拉三角中选择插件内置的DNS服务器默认的是tls协议,很有可能不能访问会超时报错。只需在自定义输入框中输入IP地址会默认更改为udp协议便可正常使用。
2025-04-27更新
最近又对自己的配置进行了部分调整,在此之前我这一直在用的是下图这种配置方式。

但在我折腾ipv6的过程中,由于开启了ipv6DNS服务器,Adguard Home设置重定向53端口到Adguard Home对很多设备就不生效了,设备的dns解析(尤其苹果设备)会直接使用ipv6DNS服务器地址,及时你的ipv6DNS服务器地址指向的是你的路由器,也会直接使用53端口而不会转发到Adguard Home。在查找这个问题根源的过程中,突然受到启发,流量和DNS解析本就是两套独立的系统,那上图的方案又何必增加一层转发到OpenClash呢?
这里需要注意
MosDNS的DNS转发和OpenClash的本地DNS劫持都要关掉。正常填写MosDNS的国内和国外DNS,Adguard Home设置重定向53端口到Adguard Home,DNS服务器地址填MosDNS的127.0.0.1:5335即可。
感谢博主的分享,我再去优化一下我的配置