istoreOS:SmartDNS+AdGuardHome搭配使用

配置目的

  • 主路由负责DHCP,旁路由处理DNS/广告过滤

旁路由安装如下软件:

  • AdGuard Home:广告过滤 + 数据统计
  • SmartDNS:DNS查询优化 + 国内CDN加速

环境准备(以个人设置为例)

  • 主路由IP:192.168.0.1 / DHCP首要DNS(192.168.0.8)
  • 旁路由(iStoreOS) IP:192.168.0.8
  • 确保SmartDNS已安装、配置、运行

端口规划

  • SmartDNS端口号:6363,作用:DNS优化 + CDN加速
  • AdGuard Home网页管理端口号:3001 ,作用:管理界面
  • AdGuard Home DNS服务端口号6364 ,作用:广告过滤

效果:

配置步骤

1. 安装和配置AdGuardHome

**初始化配置:**http://192.168.0.8:3000

关键配置:

网页管理端口:3001(访问端口从3000改为3001)

DNS服务端口:6364 (不要用53,后面使用DNS重定向转发)

DNS设置入口:

上游DNS:

# 旁路由地址:SmartDNS端口号
tcp://192.168.0.8:6363
udp://192.168.0.8:6363

Bootstrap DNS:

223.5.5.5
119.29.29.29
8.8.8.8
1.1.1.1

DNS缓冲配置:

添加DNS黑名单:

阻止服务配置:(自定义勾选)


​注意:记住上面配置AdGuardHome的端口号:6364

​​​下面配置SmartDNS需要用到

​​​​到此就结束了AdGuardHome配置


2.配置SmartDNS

(注意:未安装配置SmartDNS的,请详见此帖首页链接择一配置。)

  • 在SmartDNS管理界面:

:cross_mark: 禁用"自动设置Dnsmasq"

  • 上游DNS服务器:

  • 继上回帖对SmartDNS加强优化:

设置——上游服务器下"域名规则",添加如下:

address /github.com/-
address /githubusercontent.com/-
server-tcp 8.8.8.8 -group overseas
server-tcp 1.1.1.1 -group oversea

  • 高级设置:

​​到此SmartDNS配置和加强优化就完成了


3.istoreOS旁路由设置:

设置DNS重定向和转发:

配置路径顺序:网络 → DHCP/DNS →常规→转发

  1. 常规:
  • DNS重定向::white_check_mark:勾选

2.转发:

DNS转发添加:

#  指向旁路由中的AdGuardHome
192.168.0.8#6364
# 看后面数据流向你就会明白为何先重定向转发到AdGuardHome(端口号:6364),
而不是SmartDNS(端口号:6363)

​​​到此istoreOS配置和加强优化就完成了


4.主路由配置:(已按上回SmartDNS设置的可以跳过)

主路由DHCP设置:

首选DNS服务器:192.168.0.8

数据流向

设备请求 → 主路由DHCP → dnsmasq重定向(53)→ AdGuard Home(6364,广告过滤) → SmartDNS(6363,CDN加速) → 最优上游DNS

(AdGuardHome在前,SmartDNS在后,53重定向应先转发到6364的AdGuardHome)


完美状态

:white_check_mark: AdGuardHome - 正常运行(6364端口)

  • 广告过滤功能正常
  • 查询统计工作
  • 管理界面可访问(3001端口)

:white_check_mark: SmartDNS - 正常运行(6363端口)

  • DNS 查询优化
  • 作为 AdGuardHome 的上游

:white_check_mark: DNS 重定向 - 正常工作

  • dnsmasq 正确重定向到 AdGuardHome
  • 所有设备自动获得广告过滤

:white_check_mark: 网络访问 - 完全正常

  • 正常网站可访问
  • 广告被有效拦截

:white_check_mark: 验证测试配置:成功 or 失败

  • 使用Xshell通过SSH连接istoreOS,分别操作如下:
service smartdns restart
service adguardhome restart
service dnsmasq restart
# 测试正常网站
nslookup baidu.com
nslookup github.com
# 测试广告拦截,应返回 0.0.0.0
nslookup doubleclick.net
# 查看响应速度和正常返回地址
nslookup baidu.com 192.168.0.8:6363
nslookup baidu.com 192.168.0.8:6364
  • 客户端测试:Windows为例
# 快捷键:win+R,输入CMD打开命令窗口,输入如下:
nslookup example.com
nslookup doubleclick.net
# 同样可以用上面istoreOS测试网址命令

  • 查看AdGuard Home统计

访问 http://192.168.0.8:3001

​​AdGuardHome日志显示有查询DNS和DNS黑名单列表拦截日志就证明成功了


注意如下:

如果安装了Tailscale,请用XshellSSH连接istoreOS,输入如下命令禁用覆盖全局DNS:

tailscale set --accept-dns=false

问题:为何AdGuardHome只有192.168.0.8一个客户端查询DNS和拦截显示?

在旁路由模式下,所有客户端的 DNS 请求流程:

客户端设备 → 主路由DHCP →iStoreOS(dnsmasq) →AdGuardHome
    ↓
客户端IP          

# dnsmasq IP(192.168.0.8)   看到的是dnsmasq的IP
# 如果是iStoreOS(dnsmasq)或AdGuardHome开启DHCP分配IP就会显示所有客户端

​AdGuard Home 看到的所有请求都来自 iStoreOS(dnsmasq) :192.168.0.8

​而不是客户端的真实 IP


设置总结(个人为例)

  • 主路由IP:192.168.0.1,

首要DNS:192.168.0.8(旁路由IP)

  • 旁路由IP:192.168.0.8,

路径:网络——DHCP

DNS重定向:white_check_mark:,转发:192.168.0.8#6364

  • SmartDNS

常规:端口号:6363

:cross_mark: 禁用"自动设置Dnsmasq"

添加“上游服务器”

添加“域名地址”

高级设置:

选“最快响应”

  • AdGuardHome

初始化设置:管理界面和DNS地址使用旁路由IP:192.168.0.8,端口号分别是3001和6364。

常规设置:留第一项

DNS设置——上游服务器

tcp://192.168.0.8:6363

udp://192.168.0.8:6363

缓存设置:勾选:white_check_mark:乐观缓存

  • 过滤器

DNS黑名单:添加列表

已阻止名单设置


​编辑不易

​​​【赐:点赞、收藏、关注】


完成效果

  • 全网设备自动广告过滤 :white_check_mark:
  • 网站访问优化 :white_check_mark:
  • DNS查询智能加速 :white_check_mark:
  • 详细的网络使用统计 :white_check_mark:
  • 无需额外防火墙配置 :white_check_mark:

​​​​​按照这个配置,你的网络就会拥有

​​广告过滤 + DNS加速

7 个赞

写这么长:rofl:

好贴,精品,值得收藏

这长贴我竟然看完了:joy:

1 个赞

感谢分享

我也是这个组合,以前是mosdns,但不好看统计,就试试这个组合了,
adg负责广告和统计及dns分流,大部分域名用阿里解析,被污染的几个常访问的域名如v2ex用doh解析,反正遇到污染域名手动自己加。
smartdns负责广告和域名自定义隐射和cf的ip自动隐射到优选ip上,还有缓存和修改了ddns的ttl。

1 个赞

这个配置思路挺清晰的,不过我一般习惯把SmartDNS直接放前面,AdGuard做上游,感觉这样CDN解析会更准一些

感谢支持。

大家一起学习

我主要还是去广告为主。
用久了习惯了,就离不开。

大家一起学习学习,有错误的地方请指出。

感谢分享,收藏备用