提示

此方案无法完全规避dns污染,最终还是选择了双adg配合pw实现的内外分流,经测试可以完美规避dns污染。以下方案可以做到简单的dns防污染和去广告,但无法完全规避dns污染,优点就是有具体的客户端ip显示。

背景

有一天,我突然想要查看AdGuardHome的数据记录。当我的软路由正在使用PassWall时,发现和AdGuardHome的配合并不好,基本上DNS被污染,无法正常强国。

问题描述

在AdGuardHome中将其设置为dnsmasq的上游服务器时,发现AdGuardHome的数据记录居然都是127.0.0.1(localhost),这样就无法看到具体哪个客户端访问了哪些内容。

通过查阅相关资料,发现可以使用重定向的方式记录正常的IP访问情况。但在使用53端口替换dnsmasq的情况下,软路由本身的dnsmasq功能无法正常使用,甚至在软路由shell中无法进行DNS解析,导致PassWall无法测速。

解决方案

最终选择了第二种方式:重定向53端口到AdGuardHome。在这种情况下,各方面功能都正常,但PassWall的强国又无法使用了。

经过再次查阅资料发现,PassWall依赖于dnsmasq,所以设置了重定向后会导致一些莫名其妙的问题。解决办法是将PassWall中的远程DNS改为通过UDP请求,地址为AdGuardHome的地址,例如:192.168.1.1:5335

配置AdGuardHome

为了防止DNS被污染,需要在AdGuardHome中配置GFW列表排除国内信息。AdGuardHome自带加入GFW列表功能,但这种情况下会将上游DNS服务器撑满,提示65535错误。

官方文档建议,如果有很多上游DNS服务器规则,推荐使用upstream_dns_file来解决这个问题。经过测试,这个方法确实可行,基本完美解决了问题。

详细设置

以下是详细设置步骤图:

1.先ssh到软路由将脚本上传至/root下,手动执行一遍,添加定时任务,后续步骤如图即可
脚本下载

1.png
2.jpg
3.png
4.png
5.jpg

效果:
6.png
7.jpg
基本完美!
以下是附赠的去广告规则:
黑名单规则:
https://anti-ad.net/easylist.txt
https://fastly.jsdelivr.net/gh/mphin/adguardhome_rules@main/Blacklist.txt
白名单规则:
https://fastly.jsdelivr.net/gh/mphin/adguardhome_rules@main/Allowlist.txt

文章目录