在双路由(主路由 + 旁路由)的网络架构中,如何“规则分流”、“局域网精准去广告”以及“DNS秒开且不泄漏”,一直是某些软路由玩家的终极追求。

网络上有很多关于 SmartDNSMosDNS 的争论。在开始搭建前,先用最直白的底层逻辑,聊聊为什么在如今的网络环境下,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.datgeoip.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.5119.29.29.29

    💡 注意: 这个 DNS 仅仅用来解析你的订阅域名。千万不要在这里将 DNS 指向旁路由的 192.168.1.253,否则会引发无限环路死循环,可能导致断网。

  • Fallback (海外 DNS)全部留空,一个都不填!

    💡 原因: 在 Fake-IP 模式下,真实的海外解析发生在远端节点。如果在本地 Fallback 填了 8.8.8.8 等,不仅直连会超时拖慢启动速度,还会引发 DNS 泄漏。

    OC安装和其他设置不再累赘描述;自行设置!!

🛠️ 第二步:旁路由基础接口设置

斐讯 N1 作为旁路由,其自身的网络配置也必须正确:

  1. 进入iStoreOS/OpenWRT系统 -> 网络 -> 接口 -> LAN

  2. IPv4 网关:填写主路由 IP 192.168.1.254

  3. 使用自定义的 DNS 服务器:填写 127.0.0.1(让旁路由自身也享受去广告和分流),或者填写 223.5.5.5

  4. 修改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 点。

  • 参考下图:

  • 1779293830419.png
    1779293879513.png

🛠️ 第四步:旁路由 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:5338
  • Bootstrap 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 结果”。

  1. 回到 主路由 的 iStoreOS 后台。

  2. 进入 网络 -> 接口 -> LAN -> 编辑 -> DHCP 服务器 -> 高级设置

  3. 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/

两个测试结果均有不同,取决于你用的是那些拦截黑名单规则!


免费疑问解答 | 有偿:技术支持、人工服务、远程调试

下方评论留下联系方式或填写邮箱,邮件回复联系方式↓↓↓

[为保证不泄露联系方式等私隐,已经开启评论验证屏蔽显示]