, , ,

使用 AdGuardHome + MosDNS 实现高效广告过滤与智能 DNS 分流科学上网-详解(以OpenClash 为例)

Posted by

在科学上网的环境中,DNS 的配置不仅影响访问速度,还关系到广告过滤、隐私保护乃至网络分流的精准度。先前不管是结合passwall的组合还是openclash组合都做过视频以及写过博客,但还是有种种问题,今天我们以 OpenClash 为例,详细剖析讲解下如何通过 AdGuardHome + MosDNS 的组合,实现 高效 DNS 分流与广告拦截以及DNS防污染等等,所遇到无法使用问题一一详解,最终达到更快更干净的上网体验。

这才是最强组合!AdGuardHome + MosDNS + OpenClash 全面拦截广告 + 国内外智能分流科学上网!所遇到问题一详细详解

一、整体架构简述

整个 DNS 请求的流程如下:

客户端 → OpenClash(科学上网) DNS 劫持 → AdGuardHome(广告过滤)→ MosDNS(智能分流)→ 上游 DoH/DoT/DNS
  • AdGuardHome:起到广告拦截、恶意域名拦截等作用;
  • MosDNS:根据规则分流请求(如国内用国内 DNS,国外走远程 DNS),提升解析效率;
  • OpenClash:提供透明代理功能,同时可以覆写 DNS 设置。

这种架构下,客户端使用OpenClash,DNS 请求先经过 AdGuardHome 的过滤,再由 MosDNS 进行解析分流,达成 广告拦截 + 智能分流 + 响应快速 的目标。

openclash 地址订阅国内外分流
openclash

二、详细配置步骤

1. 设置 MosDNS

  • 监听端口:建议设置为 5335
  • 配置转发上游:包括国内 DNS(如 114.114.114.114)和国外加密 DNS(如 Cloudflare、Google);
  • 规则分流:使用 geositerule-set 规则,按需选择 china-listgfw-list 等;
  • 运行方式:可作为系统服务运行,保证启动即生效。
istoreOS的MosDNS插件
iStoreOS的MosDNS设置界面

2. 设置 AdGuardHome

  • 监听端口:建议使用 533(默认的 53 会被其他服务占用);
  • 上游 DNS:设置为 127.0.0.1:5335,即指向 MosDNS;
  • 反向 DNS、自定义 DNS、私有 DNS等也统一设置为 127.0.0.1:5335
  • 日志功能:开启查询日志,方便验证请求流向与拦截记录。
Adguardhome设置监听地址端口
Adguardhome设置监听地址端口
Adguardhome设置上游DNS服务器
Adguardhome设置上游DNS服务器
Adguardhome设置反向DNS服务器
Adguardhome设置反向DNS服务器
验证Adguardhome的广告拦截DNS解析的有效性
验证Adguardhome的广告拦截DNS解析的有效性

3. OpenClash 设置

OpenClash → 覆写设置(Profile Tuning) 中:

  • NameServer / Fallback / DefaultDNS 全部设置为 127.0.0.1:533,即 AdGuardHome;
  • 禁用 本地 DNS 劫持(DNS Hijack) 中的转发到 7874,因为那是 OpenClash 自己内置的 DNS 转发端口,会绕过 AdGuardHome 和 MosDNS;
  • 如果开启了 Dnsmasq 的转发,也请确保它的上游指向 127.0.0.1:5335(MosDNS)或 127.0.0.1:533(AdGuardHome);
  • 最好关闭 OpenClash 自带的 DNS 解析插件,统一由 AdGuardHome + MosDNS 接管。
OpenClash的自定义上游DNS服务器,NameServer / Fallback / DefaultDNS 全部设置为 127.0.0.1:533,即 AdGuardHome
OpenClash的自定义上游DNS服务器,NameServer / Fallback / DefaultDNS 全部设置为 127.0.0.1:533,即 AdGuardHome
本地DNS劫持关闭,不然就就是DNSMASQ转发刀OpenClash的端口转发到7874
关键一步,本地DNS劫持关闭,不然就就是DNSMASQ转发刀OpenClash的端口转发到7874
补充一下可以验证一下 DNSmasq的DNS转发确保是5335也就是MosDNS,确保没有被OpenClash劫持(上图)
补充一下可以验证一下 DNSmasq的DNS转发确保是5335也就是MosDNS,确保没有被OpenClash劫持(上图)

三、验证效果

  1. AdGuardHome 查询日志
    可通过 Web 控制台查看所有经过的请求、拦截记录和重定向状态。如果请求都被记录下来,说明配置生效。
  2. MosDNS 运行日志
    若开启了 MosDNS 的日志功能,也可以通过命令行查看是否接收到请求,如:
ss -lnpt | grep 5335

详细DNS解析以及验证更多相关点击

3. 局域网设备 DNS 指向
建议将路由器的 DHCP 分配 DNS 设置为 局域网设备 → AdGuardHome(533),避免设备跳过本地过滤链。

四、常见问题解答

Q1:为什么广告拦截无效?

可能的原因:

  • OpenClash 插件设置中启用了本地 DNS 劫持,导致请求被劫持到 7874
  • 局域网设备直接使用了其他 DNS(如 8.8.8.8);
  • AdGuardHome 上游配置错误,未接入 MosDNS。

Q2:AdGuardHome 日志看不到请求?

排查项:

  • OpenClash DNS 设置是否正确指向 127.0.0.1:533
  • 设备 DNS 设置是否为 AdGuardHome;
  • 是否有其他 DNS 服务占用了 53 或 533 端口。

五、结语

在翻墙科学上网使用OpenClash+ AdGuardHome + MosDNS 的组合,你不仅可以实现毫秒级 DNS 响应,还能有效过滤广告和恶意域名,同时借助 MosDNS 的分流能力,合理划分国内外请求保证防止DNS污染,并且提高访问效率。这套方案在实际使用中已被多次验证有效,欢迎大家尝试搭建,并参考我们之前的相关教程进一步优化配置。

如需更进一步的配置案例(如配合 Passwall 使用、配合不同内核运行更多好玩的配置使用),可参考我之前的详细实战文档。

如有问题,欢迎评论交流!

发表回复

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