, ,

OpenClash + AdGuardHome + MosDNS 完整闭环解决方案:实现 Fake-IP生效、DNS防污染、广告拦截更彻底与 DNS 缓存优化

Posted by

openclash+adguarddhome+MosDNS广告拦截DNS防泄漏国内外分流解析我们常用来实现 DNS 广告拦截、智能分流与DNS防污染功能。此前的我们多种设置,包括passwall+adguardhome+MosDNS结合使用使用都能稳定高效运行,但发现了一个问题OpenClash里的 Fake-IP 模式无法生效,这也是在先前的视频小伙伴留言反应了这个问题,之前并没有察觉。所以多少呢影响了某些代理规则与访问效率以及安全性问题。近期,经过反复测试与调试,最终实现了 Fake-IP 生效、DNS防泄漏、并且对比先前配置AdGuardHome广告拦截效果增强效果更好、配合MosDNS作为DNS缓存智能化的三重优化目标。

DNS防污染
DNS防污染,这是最基本的要求肯定我们不管怎么改变设置,我们需要保证
adguardhome广告拦截
addguardhome广告拦截效果更好

本篇文章将分享科技老王经过实测验证的一套完整闭环 DNS 架构让Open Clash的 Fake-IP 正常生效、Adguardhome广告拦截更强、MosDNS 缓存稳定高效,并避免 DNS 污染与重复解析问题。

当然了声明一下这里的DNS解析逻辑呢可能会有一些争议因为openclash与Mosdns自我形成了一个闭环,所以也可能会形成一个死循环或者解析错误反而反应滞后,小伙伴需要谨慎尝试,看是否适合自己使用场景

✅ 核心目标

  • ✔️ Fake-IP 模式恢复生效,增强代理解析能力 – 这是这里的重要今天我们就是要解决这个问题
  • ✔️ AdGuardHome 广告拦截更彻底,减少漏网之鱼 – 这是这里的重要今天我们就是要解决这个问题
  • ✔️ MosDNS 作为中转缓存与加速器,轻量且高效 – 这里只是测试使用,并不是唯一性,仅供参考
  • ✔️ 构建完整闭环链路,由 OpenClash 做最终 DNS 决策,保证全局解析安全

🔁 数据流逻辑(完整闭环版)

整体流量走向如下:

客户端请求
   ↓
OpenClash 劫持 DNS
   ↓
AdGuardHome(监听 533 端口,广告拦截)
   ↓
MosDNS(监听 5335 端口,仅做缓存)
   ↓
OpenClash(监听 7874 端口,最终解析)
   ↓
上游 DNS(DoH / DoT)
openclash的fake-ip生效
openclash的fake-ip生效

🔧 核心变更点:我经过多种测试发现,只有将 DNS 流量首先导入 OpenClash 并由其进行 Fake-IP 处理,才能让该模式生效。因此,调整后的关键设置是将 OpenClash 置于 DNS 链路的起始位置,其他组件以此为基础进行配置,然后MosDNS 的上游再设为 OpenClash 自身(7874 端口),形成解析闭环,让 OpenClash 全权决定出境/境内,并确保 Fake-IP 正常工作。

📌 各组件配置详解

1️⃣ OpenClash 设置

  • 启用 Fake-IP 模式
  • 启用 dnsmasq 劫持 DNS 请求
  • Nameserver: 指向 AdGuardHome → 127.0.0.1#533
  • Fallback DNS: 国外加密 DNS(如 tls://1.1.1.1, tls://8.8.8.8
  • Default Nameserver: 国内备用(如 114.114.114.114
  • 保持监听 7874 端口作为最终 DNS 转发接口

重点:OpenClash 是首端劫持入口,也是最终上游解析出口(MosDNS 的上游就是它)

openclash设置上游DNS
Nameserver: 指向 AdGuardHome → 127.0.0.1#533
openclash设置fallback的dns
Fallback DNS: 国外加密 DNS(如 tls://1.1.1.1, tls://8.8.8.8
openclash设置default的dns设置
国内备用(如 114.114.114.114或者运营商DNS)

2️⃣ AdGuardHome 设置(广告过滤核心)

  • 监听端口:533
  • 上游 DNS 设置为 MosDNS:127.0.0.1:5335
  • 关闭缓存让MosDNS做缓存服务器、开启广告规则过滤(如 EasyList、AdGuard 中文规则等)

重点:AdGuardHome 专注广告拦截,避免劫持与分流职责干扰效果。

adguardhoem的上游dns设置

3️⃣ MosDNS 设置(轻量缓存节点)

  • 监听端口:5335
  • 上游 DNS 设置127.0.0.1:7874(OpenClash 的 DNS 监听端口)
  • 关闭 53 端口监听,放弃 dnsmasq 接管
  • 保持缓存开启,但不做复杂国内外分流逻辑

重点:MosDNS 不再直接处理国内/国外域名,而是缓存+转发给 OpenClash,自身负担大大减轻。

mosdns的dns设置
mosdns远程DNS再设置成了openclash的监听端口7874

✅ 效果验证

测试项目结果
Fake-IP 模式✅ 正常生效,策略匹配完整
广告拦截效果✅ 明显增强,干净清爽
DNS 分流与污染处理✅ 稳定,未出现污染
MosDNS 缓存命中率✅ 提升,减少重复查询
adguardhome广告拦截

⚠️ 注意事项

  • MosDNS 的上游必须是 OpenClash 的监听端口(如 7874),否则闭环无法形成
  • 各组件监听端口不要冲突,建议使用非标准端口如 533 / 5335
  • 如果出现 DNS 死循环或请求失败,请逐层排查(可用 nslookup 工具)
  • 关闭系统本地 DNS 服务(如 systemd-resolved)避免干扰

❗注意逻辑关键点:

  • OpenClash 首次接管 DNS:确保 Fake-IP 生效
  • AdGuardHome 在中间层:只负责广告拦截,不做复杂分流。
  • MosDNS 不再做主控分流:只做缓存转发。
  • MosDNS 的上游回到 OpenClash:形成“闭环”。

✅ 为什么这个配置可以正常上网?

这是因为 OpenClash 同时承担了:

  1. 初始 DNS 劫持入口(处理 fake-ip、生效策略)
  2. 最终 DNS 出口(通过 DoH/DoT 出境解析)

而 MosDNS 和 AdGuardHome 在这个链路中仅起到“缓存”与“广告清洗”的作用,不再主导分流与出境路径,所以不会造成 DNS 循环或错误。

⚠️ 可能的风险或不完美之处

项目说明
❗潜在死循环如果 OpenClash 被配置为再回去找 AdGuardHome 解析(比如 fallback 时),可能造成循环。确保 OpenClash 的 DNS 设置中,不要再指向 AdGuardHome 或 MosDNS 作为 fallback。
⚠️ MosDNS 失去智能分流MosDNS 原本支持国内/国外判断,但现在上游改为 OpenClash,已经“失去智能性”,它成了纯粹的缓存转发器。但如果你只需要性能优化,这也没问题。
⚠️ 不好排错如果链路中出现解析错误(如某层挂掉),排查成本会较高,建议保留日志、用 dig 工具测试每层响应。

🔚 闭环型优化方案

  • ✅ 可以实现 fake-ip 模式
  • ✅ 可以实现广告拦截增强
  • ✅ MosDNS 有缓存优化效果
  • ⚠️ 不建议新手用户部署,设置需谨慎

本方案的关键在于:让 OpenClash 成为 DNS 的起点和终点,其他组件如 AdGuardHome 与 MosDNS仅做中转与优化工作。通过这种方式,不仅 Fake-IP 能恢复正常、广告拦截效果提升,整个 DNS 架构也更清晰、可控、灵活,适合对网络环境有较高需求的用户部署。

如你也遇到 DNS 混乱、Fake-IP 失效、广告拦不干净的问题,不妨尝试这套方案。当然,部署前请务必做好备份,并在测试环境中仔细验证。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注