前言
最近编译了openwrt固件,在openwrt上使用了adguardhome+smartDNS+passwall的dns配置,实现过滤广告+国内dns国外dns分流解析的功能
dns解析路线如下
|
|
这样无论哪里的网站访问速度都非常快,而且经过了广告过滤,体验很好
感兴趣可以移步别人写的配置Openwrt 正确配置 AdguardHome 和 smartdns 和 passwall
但唯一有一点很奇怪,当passwall重启时,dns解析不会经过adguardhome,但又能正确经过passwall分流,即便我已经在dnsmasq里设置了上游服务器127.0.0.1#23333

可以看到我在20:44:11发起了对www.baidu.com的dns查询,但adguardhome并没有接收到解析,可以推断dnsmasq并没有将adguardhome作为上游服务器

我就在想是不是passwall的脚本的问题,在passwall重启的时候会将dnsmasq的配置文件覆盖
于是尝试service dnsmasq restart重启dnsmasq以后adguardhome就恢复正常解析了
我的临时解决方式是在crontab里添加定时重启dnsmasq的命令,但实际上治标不治本,今天就来详细解决一下这个问题
解决问题思路及流程
首先找到passwall与dnsmasq相关的配置文件
|
|

在这里以直觉判断就是/overlay/upper/usr/share/passwall/helper_dnsmasq_add.lua这个文件修改了dnsmasq配置
使用vim查看, 输入?dnsmasq回车,即可搜索到和dnsmasq相关内容,我这里是直接跳转到最后

这里我已经做了修改了,我修改的内容是
|
|
把原来的添加dns服务器lua语句用--注释掉,然后添加conf_out:write("server=127.0.0.1#23333\n")这一句,adguardhome就能在passwall重启后正常作为dnsmasq的上游服务器
尝试重启passwall,并尝试解析dns
|
|


可以看到adguardhome正常解析了,问题就此解决