OC+ADG+SmartDNS 主旁路由去广告+DNS加速设置教程
对于追求极致网络体验的玩家来说,单一的插件往往难以平衡“去广告、解析加速与精准分流”这三大需求。
目前分享一套目前个人认为比较成熟的拓扑方案:主路由 (OpenClash) + 旁路 (ADG + SmartDNS)。
这套架构的核心在于功能解耦。我们将 DNS 处理链条化:客户端请求首先经过 ADGuard Home 强力拦截广告;
随后交由 SmartDNS 进行多线程解析与测速选优,确保国内访问秒开;最后由 OpenClash 的 FakeIP 模式坐镇末端,完成最终的国内外流量分流,从根源上杜绝 DNS 泄漏。
为何推荐此配置?
性能最优: 主路由专注于高带宽转发,旁路负责逻辑运算,互不干扰。
逻辑清晰: ADG 过滤广告、SmartDNS 提速、OpenClash 内外分流、DNS防泄露,各司其职,排查问题直观方便。
体验无感: 配合 iStoreOS、OpenWRT 等系统,这套方案能实现全家设备的自动分流,即便在高负载下依然稳如老狗。
如果你也在被 DNS 污染或网页广告困扰,这套“三位一体”的方案绝对值得一试。它不仅是喜欢折腾的堆砌,更是对家庭网络主控权的精准把握。
【本文所述方案来源于个人实践与经验总结,可能因环境差异而存在适配问题。文中内容不保证完全适用于所有场景,读者在生产环境使用前应自行测试与评估风险。】
一:OpnClash(简称OC)安装与yaml文件
OC安装包下载地址:https://github.com/vernesong/OpenClash/releases/tag/v0.47.088;安装过程不表!
上传本文提供的yaml文件到OC;点击下载
注意yaml文件里面的说明,并修改修改对应的IP和端口。

待后面的ADG和SmartDNS设置并启动后,选择本文提供的yaml文件,启用OC;
启动完成后,可在OC【运行状态】-【控制面板】点击【zashboard】;根据需求选择分流规则。
二:ADG与SmartDNS设置(旁路由)
1、关闭路由dnsmasq和53端口;为ADG独占53端口准备
1. 停止当前运行的 dnsmasq
/etc/init.d/dnsmasq stop永久禁用(重启后不会自动启动)
/etc/init.d/dnsmasq disable强制释放 53 端口(解决进程卡死不释放)
kill -9 $(lsof -t -i:53)检查是否成功
# 查看服务状态
/etc/init.d/dnsmasq status
# 查看 53 端口占用
netstat -tulpn | grep :53
# 成功标志:status 显示 disabled + 53 端口无任何输出2、旁路ADG安装和设置
关闭dnsmasq后,ADG可以独占53端口使用!
安装和初始化教程参考-- 点击打开AdGuard Home 配置教程
【初始化过程切记不要修改53端口保持默认】
初始化完成后,点击【设置】-【DNS设置】;
在【上游DNS服务器】填入 主路由OC的IP和OC的转发端口(如下图参考设置)

设置【并行请求】和【Bootstrap DNS 服务器】

其他设置和去广告黑名单规则可以参考AdGuard Home 配置教程;
3、 旁路SmartDNS安装和设置
安装和初始化教程参考-- 点击打开SmartDNS 配置教程
SmartDNS负责国内域名的并发解析与秒开优化。
OC负责精准的国内外分流,并确保国外解析不被污染。
所以SmartDNS不需要设置国外上游DNS地址,设置参考下图:
常规设置和上游服务器


高级设置

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 流量走位:
终端设备 -> 访问网页。
主路由 OC (7874) -> 接收请求。
分流判断:
国内域名:转发给 旁路由 SmartDNS (6053) 解析。
国外域名:走 加密 DNS (DoH) 通过代理链路解析。
返回结果 -> 终端秒开。
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. 总结与建议
这套方案虽然配置复杂,但一旦跑通,其稳定性与速度是任何“一键插件”无法比拟的。
避坑:
防火墙劫持:确保主路由没有开启“强制 DNS 转发”,否则会破坏我们的自定义策略。
内核选择:建议强制使用 Mihomo (Meta) 内核,它对规则集(
.mrs)的支持更高效。容灾备份:在 OC 中配置
fallbackDNS,万一旁路由宕机,主路由也能自动切回阿里/腾讯 DNS 保证不断网。