有几种方案
- 客户端→Dnsmasq(53)→Clash(7874)→ADG(5335)
- 客户端→Dnsmasq(53)→ADG(5335)→Clash(7874)
- 客户端→ADG(53)→Clash(7874)
方案思考
以下ADG指AdGuard Home,Clash指OpenClash,Dnsmasq是openwrt里自带的dns服务应用
一开始我用的是1,在clash里开启dns劫持,让Dnsmasq把请求转发到clash,然后在clash里设置自定义上游dns,把底下所有的上游dns勾选都去掉,新建一个FallBack从ADG里获取结果
这样配置成功了,但广告去除效果不好,经大佬的解答,如果要屏蔽广告的地址在Clash就已经决定走代理,就不会向上游ADG去请求,而且ADG里客户端只能看见127.0.0.1这一条,不够完美,所以这条方案放弃
随后我选择的是方案2,配置成功了,ADG里的客户端也都能正常显示了,但这时候个人感觉前面多了Dnsmasq似乎多余了,因为他就是转发了一下,所以衍生除了方案3,但方案3有个缺点,因为Dnsmasq和dhcp功能是在一起的,跳过了Dnsmasq则dhcp也不能用了,解决方案就是用ADG里的dhcp功能,去lan接口里设置忽略此接口(不在此接口提供dhcp服务),完美 👏👏
方案3的配置(其他方案可网上自行搜索)
- 网络-接口-Lan,底下基本设置勾选 「忽略此接口」
- 网络-DHCP/DNS-高级设置,把dns服务器端口由53改为其他,比如5335,主要不要端口冲突,保存生效
- 服务-AdGuard Home,点更新核心,点启用,重定向选择「无」,点手动设置,按如下修改,改完保存&应用
bind_host: 0.0.0.0
bind_port: 3003
...
dns:
bind_hosts:
- 0.0.0.0
port: 53
...
upstream_dns:
- 127.0.0.1:7874
- 服务-OpenClash-全局设置-dns设置,去掉本地dns劫持,勾选自定义上游dns服务器,然后在下面自定义dns里看够不够,有更好的dns也可以加上去,勾选远程域名解析,应用配置
配置结束,点击AdGuard Home里AdGuardHome Web:3003,可以打开ADG的管理界面,点击「过滤器->dns封锁清单」,去网上找一些大神维护的ADG的去广告规则,加进去
去找个广告多的页面试试看,拦截数有没有加,正常情况下应该没问题了