对于追求极致网络体验的玩家来说,单一的插件往往难以平衡“去广告、解析加速与精准分流”这三大需求。

目前分享一套目前个人认为比较成熟的拓扑方案:主路由 (OpenClash) + 旁路 (ADG + SmartDNS)

这套架构的核心在于功能解耦。我们将 DNS 处理链条化:客户端请求首先经过 ADGuard Home 强力拦截广告;

随后交由 SmartDNS 进行多线程解析与测速选优,确保国内访问秒开;最后由 OpenClash 的 FakeIP 模式坐镇末端,完成最终的国内外流量分流,从根源上杜绝 DNS 泄漏。

为何推荐此配置?

  1. 性能最优: 主路由专注于高带宽转发,旁路负责逻辑运算,互不干扰。

  2. 逻辑清晰: ADG 过滤广告、SmartDNS 提速、OpenClash 内外分流、DNS防泄露,各司其职,排查问题直观方便。

  3. 体验无感: 配合 iStoreOS、OpenWRT 等系统,这套方案能实现全家设备的自动分流,即便在高负载下依然稳如老狗。

如果你也在被 DNS 污染或网页广告困扰,这套“三位一体”的方案绝对值得一试。它不仅是喜欢折腾的堆砌,更是对家庭网络主控权的精准把握。

【本文所述方案来源于个人实践与经验总结,可能因环境差异而存在适配问题。文中内容不保证完全适用于所有场景,读者在生产环境使用前应自行测试与评估风险。】

一:OpnClash(简称OC)安装与yaml文件

  1. OC安装包下载地址:https://github.com/vernesong/OpenClash/releases/tag/v0.47.088;安装过程不表!

  2. 上传本文提供的yaml文件到OC;点击下载

  3. 注意yaml文件里面的说明,并修改修改对应的IP和端口。

  1. 待后面的ADG和SmartDNS设置并启动后,选择本文提供的yaml文件,启用OC;

  2. 启动完成后,可在OC【运行状态】-【控制面板】点击【zashboard】;根据需求选择分流规则。

二:ADG与SmartDNS设置(旁路由)

1、关闭路由dnsmasq和53端口;为ADG独占53端口准备

1. 停止当前运行的 dnsmasq

/etc/init.d/dnsmasq stop
  1. 永久禁用(重启后不会自动启动)

/etc/init.d/dnsmasq disable
  1. 强制释放 53 端口(解决进程卡死不释放)

kill -9 $(lsof -t -i:53)
  1. 检查是否成功

# 查看服务状态
/etc/init.d/dnsmasq status
# 查看 53 端口占用
netstat -tulpn | grep :53
# 成功标志:status 显示 disabled + 53 端口无任何输出

2、旁路ADG安装和设置

关闭dnsmasq后,ADG可以独占53端口使用!

安装和初始化教程参考-- 点击打开AdGuard Home 配置教程

【初始化过程切记不要修改53端口保持默认】

初始化完成后,点击【设置】-【DNS设置】;

  1. 在【上游DNS服务器】填入 主路由OC的IP和OC的转发端口(如下图参考设置)

ScreenShot_2026-05-09_165149_111.png
  1. 设置【并行请求】和【Bootstrap DNS 服务器】

其他设置和去广告黑名单规则可以参考AdGuard Home 配置教程

3、 旁路SmartDNS安装和设置

安装和初始化教程参考-- 点击打开SmartDNS 配置教程

SmartDNS负责国内域名的并发解析与秒开优化。

OC负责精准的国内外分流,并确保国外解析不被污染。

所以SmartDNS不需要设置国外上游DNS地址,设置参考下图:

  1. 常规设置和上游服务器

  1. 高级设置

  1. SmartDNS启用WENUI :

在自定义设置里面粘贴以下代码(粘贴进去后,下拉右下角保存并应用,在点击重启即可生效)

浏览器访问: http://旁路由IP:6080

# ========== WebUI 核心配置 ==========
plugin smartdns_ui.so
smartdns-ui.ip http://[::]:6080
data-dir /var/lib/smartdns
#用户名可以修改为任意字母
smartdns-ui.username admin
#密码可以修改为任意密码
smartdns-ui.password password

# ========== 内置终端(可选) ==========
smartdns-ui.enable-terminal yes

【记得每设置好一项都需要保存并应用】

4、修改主路由的DNS服务器为旁路由IP

路由后台打开路径:【网络】-【接口】-【点击LAN后面的编辑】

切记添加 6,192.168.1.253 后点击后面的“+”

保存后自动切换到【接口】页面,点击【保存并应用】

三:完成设置

以上设置完成并启动后,可以打开ADG和SmartDNS的WEB地址查看是否生效。

也可以用powershell命令测试客户端是否生效

nslookup baidu.com
#输入上面这条命令会显示
#服务器:  OpenWRT
#Address:  192.168.1.253
#非权威应答:
#名称:    baidu.com
#Address:  124.237.177.164
#如Address出现多个IP;则没有成功,先重启旁路再重启主路,禁用/启动一次网卡,或重启电脑再测试

如不生效:先将旁路由ADG和SmartDNS关闭在启动或者重启;再重启OC即可!

以上配置必须使用本文提供的yaml文件到OC:点击下载

动手能力强的朋友可以根据本文的方案修改已有的Ymal配置文件!

总结:

这套方案的核心在于:广告拦截、DNS 优选和科学分流各司其职,彻底解决 DNS 污染和延迟问题。

1. 为什么需要这种“嵌套”架构?

在常规的单路由方案中,DNS 解析往往是“一刀切”。但在追求极致体验的玩家眼里,我们需要的是:

  • AdGuard Home (ADG):负责最强力的广告拦截与域名黑名单。

  • SmartDNS:负责国内域名的并发解析与秒开优化。

  • OpenClash (OC):负责精准的国内外分流,并确保国外解析不被污染。

我们将主路由(192.168.1.1)作为流量闸门,将旁路由(192.168.1.253)作为“智囊团”,实现逻辑闭环。


2. 逻辑链路示意图

DNS 流量走位:

  1. 终端设备 -> 访问网页。

  2. 主路由 OC (7874) -> 接收请求。

  3. 分流判断

    • 国内域名:转发给 旁路由 SmartDNS (6053) 解析。

    • 国外域名:走 加密 DNS (DoH) 通过代理链路解析。

  4. 返回结果 -> 终端秒开。


3. 核心配置实操

A. OC端的“精准分流”

在 OC 的配置文件中,最关键的是 nameserver-policy。我们不再盲目转发所有流量,而是通过 geosite 进行精准导流:

YAML

  nameserver-policy:
    "geosite:apple":   
      - 192.168.1.253:6053 
    "geosite:cn,private":
      - 192.168.1.253:6053
#      - 223.5.5.5
#      - 119.29.29.29
#      - https://dns.alidns.com/dns-query
#      - https://doh.pub/dns-query
    "geosite:geolocation-!cn":
      - "https://8.8.8.8/dns-query#所有-自动"
      - "https://1.1.1.1/dns-query#所有-自动"
      - "https://dns.google/dns-query" # 备用,不带组名,防止死循环

  nameserver:
#    - 223.5.5.5
    - 192.168.1.253:6053
    - "https://8.8.8.8/dns-query#所有-自动"
    - "https://1.1.1.1/dns-query#所有-自动"

B. 旁路由的“闭环设计”

为了防止 DNS 环路(Loopback),旁路由的设定非常关键:

  • AdGuard Home:上游 DNS 设置为主路由的 OC 端口(192.168.1.1:7874)。这样 ADG 过滤后的干净流量会传给 OC 再次分流。

  • SmartDNS:仅配置国内上游(如 223.5.5.5),它作为 OC 的“国内解析插件”存在。


4. 这种架构带来的什么?

  • 告别 DNS 污染:国外域名通过 OC 的 Fake-IP 和远端解析,彻底避开运营商干扰。

  • 解析加速:SmartDNS 的并发解析机制,让国内主流网站的响应时间压低到 10ms 以内。

  • 全家桶过滤:依托 ADG 的规则库,手机 App 广告、电视开机广告在网关层即被切断。


5. 总结与建议

这套方案虽然配置复杂,但一旦跑通,其稳定性与速度是任何“一键插件”无法比拟的。

避坑:

  1. 防火墙劫持:确保主路由没有开启“强制 DNS 转发”,否则会破坏我们的自定义策略。

  2. 内核选择:建议强制使用 Mihomo (Meta) 内核,它对规则集(.mrs)的支持更高效。

  3. 容灾备份:在 OC 中配置 fallback DNS,万一旁路由宕机,主路由也能自动切回阿里/腾讯 DNS 保证不断网。