软路由折腾篇四之AdGuardHome广告拦截
我已在网上看到了更好的解决方案,这篇记录的以下内容就不必再看了。
更好的解决方案如下:
https://blog.marisalnc.com/archives/openwrt%E8%AE%BE%E7%BD%AEsmartdnsadguardpasswall%E5%85%A8doh%E8%A7%A3%E6%9E%90

这一章节记录用 SmartDNS 配合 AdGuard Home 进行DNS分选以及广告过滤的方法。
我选用的iStoreOS起初没有安装这两个软件包, AdGuard Home自己从 https://github.com/rufengsuixing/luci-app-adguardhome/releases 下载,SmartDNS 可以在iStore里面找到并安装。
登入OpenWrt后台,【网络】->【DHCP/DNS】勾选【DNS重定向】,这样网络流量就会被调给dnsmasq进行DNS解析。

左侧边栏【服务】->【SmartDNS】,先不要启用SmartDNS服务,设置界面向下划找到【上游服务器】列表,此时应该是空的,自行添加DNS服务器。


添加完成了就依次编辑每一条DNS的信息,我用了“cn”和“overseas”两个服务器组来区分不同的DNS服务器承担的功能。
在页面上方的【常规设置】里本地端口最好保持默认6053,TCP、IPv6、双栈IP不要勾选,域名预加载可以,重定向一定不要打开。


在【高级设置】->【域名地址】里面添加两条语句:
bind :6054 -group cn
bind :6055 -group overseas
这两句的意思是把6054端口绑到cn服务器组,6055端口绑在overseas服务器组,让SmartDNS在这两个端口上分别提供DNS服务。
这个时候再去设置 AdGuard Home。【服务】->【AdGuard Home】进入设置界面,重定向选“作为dnsmasq的上游服务器”,“开机后网络准备好时重启”和“在关机时备份工作目录文件”全勾上,更新核心,保存并应用设置以后点击内有“AdGuardHome Web”字样的绿色按钮进入ADG的网页管理后台,初次设置界面网页管理端口建议保持3000,DNS运行端口只要不冲突即可。

网页面板【设置】->【DNS设置】里上游DNS只填一行“127.0.0.1:6054”,即使用 SmartDNS 提供的cn服务器组。BootStrap服务器不管,因为那些是用来解析上游dns里面以https或者tls等开头的服务器的,你清不清空没影响。

之后再去【过滤器】->【DNS拦截列表】选择适合自己的拦截规则就开启了广告拦截功能,

当然在启用SmartDNS服务之前还是无效的,甚至会导致因DNS解析失败而无法上网(6054端口的SmartDNS服务没开),所以回到SmartDNS启动服务并到【网络】->【DHCP/DNS】->【高级设置】把dnsmasq的缓存关闭。


至此双路由系统的网络流向已经梳理完毕并且所有网口都可用,网络流向相关的图如下。


配置完成以后在 PVE 管理面板重启一下整台主机就可以正常使用了。

