主旁路由OC+AdG+MosDNS完美分流与去广告配置指南
在双路由(主路由 + 旁路由)的网络架构中,如何“规则分流”、“局域网精准去广告”以及“DNS秒开且不泄漏”,一直是某些软路由玩家的终极追求。
网络上有很多关于 SmartDNS 和 MosDNS 的争论。在开始搭建前,先用最直白的底层逻辑,聊聊为什么在如今的网络环境下,MosDNS才是我“完美答案”。
🛑 为什么选择MosDNS?不选择SmartDNS?
很多的教程还在推荐 SmartDNS,但在OC(Fake-IP模式)+AdG的现代架构下,SmartDNS变成了“负优化”。
(本人有写过一篇 OC+ADG+SmartDNS 主旁路由去广告+DNS加速设置教程; 目前此方案已经被本人否定)
1. 测速机制在Fake-IP面前完全失效
SmartDNS的核心是 “多线程并发查询+结果测速,返回延迟最低的真实 IP”。
然而,在Fake-IP模式下,当海外域名发送给OC时,OC会瞬间(0毫秒)秒回一个假IP(如 198.18.x.x)。SmartDNS探测到这个假IP延迟为0ms,会误以为这是“神级服务器”并将其缓存。它的“测速选优”功能在假IP面前毫无用武之地。
2. 规则维护与更新的代差
SmartDNS:如果要做国内外分组分流,需要手动下载并导入极其臃肿的文本域名列表,且本身不支持定时自动更新和热重载。一旦国内某款App更新了CDN域名,极易被误判归为海外组,导致国内访问变卡。
MosDNS:个人觉得它是为“精准分流”而生。它原生支持
geosite.dat和geoip.dat规则集(由全球开源社区每日维护更新)。它判断域名就像查字典一样是非黑即白的条件判断,且支持全自动定时更新和热重载,彻底解放双手。
3. 去广告日志的精准度
为了让SmartDNS顺利分组,很多教程不得不将其塞在AdGuard Home前面。
这会导致AdGuard Home后台看到的请求者IP全变成 127.0.0.1,你将彻底失去查看【局域网内具体是哪台设备触发了广告拦截】的能力。
而MosDNS架构可以完美让AdGuard Home居于最前端。
⚖️ 核心优劣势对比表
特性 / 表现 | AdGuard Home + SmartDNS | AdGuard Home + MosDNS (本教程方案) |
分流准确度 | 较差(依赖测速盲猜,容易跑偏) | 极高(基于V2Ray精准国内/外域名集) |
网页首开速度 | 较慢(需等待多方并发测速返回) | 极快(国内秒开,国外 0ms Fake-IP 回应) |
防 DNS 泄漏 | 极难配置完美,容易两端泄漏 | 完美防御(国内不问国外,国外不问国内) |
规则自动更新 | 不支持 / 需写复杂脚本 | 原生支持(配置一次,每天自动更新) |
资源消耗 | 较高(频繁后台 Ping 测速,增加性能压力) | 极低(纯逻辑判断与轻量缓存) |
🌐 整体网络架构与流转链路
在本教程中,设备角色分配如下:(以iStoreOS系统为例.使用OpenWRT朋友仅供参考)
主路由 (iStoreOS / 192.168.1.254):安装OC,负责核心流量转发、Fake-IP分流、科学上网。
旁路由 (斐讯N1(或者iStoreOS分身作为旁路由亦可)/ 192.168.1.253):安装 AdGuard Home + MosDNS,负责去广告、DNS精准分流与防泄漏。
以上及下面提及 IP 仅供参考!请勿照抄,请根据自身设备的主旁路由 IP 而定
流量解析路径:
终端设备 → (LAN 设置 DNS 服务器为旁路由的 IP 192168.1.253) → 旁路由 AdGuard Home (192.168.1.253:53) (过滤广告) → MosDNS (127.0.0.1:5338) (分流判断)
➔ 情况 A(国内域名):MosDNS 丢给 阿里/腾讯 DoH 加密服务器 ➔ 直接高速返回。
➔ 情况 B(国外域名):MosDNS 丢给 主路由 OpenClash (192.168.1.254:7874) ➔ 0ms 返回 Fake-IP 并在节点处真实解析。(前提:你要做好分流规则Yaml文件)
🛠️ 第一步:主路由 OpenClash 关键配置(核心避坑)
主路由OC的配置重点在于提供 Fake-IP 响应,同时绝对不能与旁路由形成 DNS 回环死循环。
1. 运行模式设置
进入 OpenClash 页面,确保运行模式选择 Fake-IP (混合模式 或 TUN模式)。
运行状态面板:停用 DNS 代理;启用 区域绕过、域名嗅探。
2. DNS 设置(最重要的一步!)
进入 OC -> 覆写设置 -> 往下拉找到[设置自定义上游 DNS 服务器]:
Nameserver:只填写国内公共 DNS,
223.5.5.5和119.29.29.29。💡 注意: 这个 DNS 仅仅用来解析你的订阅域名。千万不要在这里将 DNS 指向旁路由的
192.168.1.253,否则会引发无限环路死循环,可能导致断网。Fallback (海外 DNS):全部留空,一个都不填!
💡 原因: 在 Fake-IP 模式下,真实的海外解析发生在远端节点。如果在本地 Fallback 填了
8.8.8.8等,不仅直连会超时拖慢启动速度,还会引发 DNS 泄漏。OC安装和其他设置不再累赘描述;自行设置!!
🛠️ 第二步:旁路由基础接口设置
斐讯 N1 作为旁路由,其自身的网络配置也必须正确:
进入iStoreOS/OpenWRT系统 -> 网络 -> 接口 -> LAN。
IPv4 网关:填写主路由 IP
192.168.1.254。使用自定义的 DNS 服务器:填写
127.0.0.1(让旁路由自身也享受去广告和分流),或者填写223.5.5.5。修改dnsmasq默认 53 端口:系统主页左侧[网络] - [DHCP/DNS] - [设置及端口] ; 找到[DNS 服务器端口] - 将53端口修改为 533 ;为 ADG 腾出 53 端口的使用准备
🛠️ 第三步:旁路由 MosDNS 配置(分流核心)
MosDNS 承担着“裁判”的角色,我们需要修改其配置文件(通常在 /etc/mosdns/config.yaml 或直接在 iStoreOS 的 MosDNS 插件图形界面中配置)。
MosDNS安装教程参考:🚀 拒绝DNS泄露与广告!MosDNS + OpenClash 分流教程
1. 核心端口与上游设置
监听端口:设置为
5338(默认是5335端口,避免有冲突建议修改)。
国内本地上游 DNS:推荐使用腾讯或阿里的加密 DoH 服务器,彻底防运营商劫持。
国外远程上游 DNS:直接指向主路由 OpenClash 的 DNS 转发端口。
192.168.1.254:7874 #此处修改为你自己旁路由的IP,要是主路由请将IP改写成2. 开启关键功能
在插件界面勾选 “开启防止 DNS 泄漏”。
确保勾选 “自动更新规则集 (geosite/geoip)”,建议定时设为每天凌晨 4 点。
参考下图:


🛠️ 第四步:旁路由 AdGuard Home 配置(去广告)
AdGuard Home 位于全屋 DNS 请求的最前端,负责过滤广告并将干净的请求丢给 MosDNS。
1. 端口调整
由于 iStoreOS 旁路由的 dnsmasq 默认占用 53 端口,我们必须先将系统自带的 dnsmasq 端口修改为 533(在 网络->DHCP/DNS 中修改)。
随后,初始化的时候将 AdGuard Home 的监听端口设置为标准的 53。它的网页管理访问端口可以随意,比如 3000。
这样就没有必要开启ADG的53端口重定向了!
2. 上游 DNS 设置
进入 AdGuard Home 后台管理页面 (192.168.1.253:3000) -> 设置 -> DNS 设置:
上游 DNS 服务器:填写 MosDNS 的地址:
127.0.0.1:5338Bootstrap DNS 服务器:填写
223.5.5.5即可。DNS 解析模式:选择 并行请求 (Parallel requests) ,因为后端的 MosDNS 会做终极处理。
不设置私人反向 DNS 服务器:取消【使用私人反向 DNS解析】和【启用客户端的 IP 地址的反向解析】前面的 【√】
直接点击 【应用】 即可保存;
修改【DNS 服务配置】 - 速度限制 默认数值:20 修改为 0 ;点击保存;
关闭ADG的 DNS缓存:直接把【启用缓存】前面的 √ 去掉 ;不要勾选【乐观缓存】;点击保存
切记不要开启ADG缓存;因为MosDNS已经开启了缓存!
3. 设置DNS黑名单
进入 AdGuard Home 后台管理页面 (192.168.1.253:3000) -> 过滤器 -> DNS 黑名单:
为避免误拦截:勾选添加自带的:AdGuard DNS filter、AdAway Default Blocklist、CHN: anti-AD外,可增加下面的两个去广告规则
#GOODBYEADS去广告规则
https://raw.githubusercontent.com/8680/GOODBYEADS/master/data/rules/dns.txt
# AdBlockDNS去广告规则
https://raw.githubusercontent.com/217heidai/adblockfilters/main/rules/adblockdns.txt
无视误拦截的,可以参考:OpenWrt-AdGuard Home 配置教程 提供的去广告规则
🛠️ 第五步:全屋设备接管(收尾工作)
最后一步,我们需要让主路由告诉全屋所有设备:“找旁路由去要 DNS 结果”。
回到 主路由 的 iStoreOS 后台。
进入 网络 -> 接口 -> LAN -> 编辑 -> DHCP 服务器 -> 高级设置。
在 DHCP 选项 中加入以下参数:
6,192.168.1.253
(注:代码 6 代表通告 LAN 口设备,它们的 DNS 服务器应该强制设为 192.168.1.253)
4. 保存并应用。

🎯 验证成果
完成以上所有配置后,断开手机/电脑的 Wi-Fi 并重新连接或者禁用/启用 本地网卡连接,查看本地网络详情,确认 DNS 已经成功变更为 192.168.1.253。
在电脑上打开那个黑色的命令行窗口(Windows 叫命令提示符/CMD,Mac 叫终端/Terminal),按顺序输入下面两行命令:
第一步:验证国外分流与 0毫秒秒开(测 YouTube)
在窗口中输入:
Bash
nslookup youtube.com成功标志: 出来的结果里,IP 地址必须是
198.18.x.x(比如198.18..11.87)。
C:\Users\Administrator>nslookup youtube.com
服务器: UnKnown
Address: 192.168.1.253
名称: youtube.com
Address: 198.18.11.87只要看到
198.18,就说明海外域名成功被 MosDNS 识别,并交给了 OpenClash。OpenClash 丢出了标志性的 Fake-IP(假 IP),海外网站秒开就是因为这个。
第二步:验证国内直连不走代理(测 百度)
在窗口中输入:
Bash
nslookup baidu.com成功标志: 出来的结果里,IP 地址必须是正常的国内大厂真实 IP(比如
111.63.65.247)。
C:\Users\Administrator>nslookup baidu.com
服务器: UnKnown
Address: 192.168.1.253
非权威应答:
名称: baidu.com
Addresses: 111.63.65.247
124.237.177.164
110.242.74.102
111.63.65.103
#这里就有用过smartdns的朋友会说:为什么不可以像SmartDNS那样出现一个优选最快的IP
#我只想说,坑我踩过了!速度快慢深有体会!
#本人的理解很简单:你看到多个公网IP,是因为MosDNS把互联网最真实、最具容灾备用能力的官方CDN加速结果交给了你的网络;而SmartDNS则是把过滤加工后、只剩单条路的神级结果交给了你的网络。只要出来的不是
198.18这种假 IP,而是国内CDN加速域名 IP,就说明完全没有惊动 OC,而是被MosDNS直接通过阿里/腾讯的 DNS 解析出来了。
💡 终极一瞥:去广告验证
打开你的浏览器,登录旁路由后台的 AdGuard Home 界面 (http://你的旁路由:3000)。
只要顶部的“总查询次数”和“已拦截的过滤器数量”数字在不断往上涨,就说明全屋的广告过滤已经全部生效了。
在客户端排行也会看到你局域网的客户端IP了。
打开查询日志;也可以看到那个设备和那些广告被拦截了!
测试广告拦截效果的地址:https://adblock.turtlecute.org/ https://adblock-tester.com/
两个测试结果均有不同,取决于你用的是那些拦截黑名单规则!