解决阿里云的dnsmasq配置问题

众所周知,总是套路得人心

最近在折腾阿里云轻量服务器的DNSMASQ,初衷是加快一些域名的解析,减少使用的卡顿感,但是问题出现了。

我用惯了Ubuntu Server,对于dnsmasq的配置还算是比较熟悉,一把梭就是干。结果无论怎么调试,在systemctl的日志下总是使用的是110开头阿里云的DNS。仔细查看,来自阿里云镜像的dnsmasqdnsmasq.service会默认使用/var/run/dnsmasq/resolv.conf这里的解析文件。

Day 1

别问,问就是一把梭。尝试直接修改resolv.conf文件中的nameserver,成功!但是......直到改完的第二天晚上,我才发现,dnsmasq.service会莫名其妙的进行类似重启的操作,而一旦重启,就会使得resolv.conf文件重置为阿里云这个镜像默认的阿里云DNS。🌚

Day 2

行吧,惹不起还跑不起吗,purge完dnsmasq,立马动手开始编译安装。过程十分愉悦,只是需要手动
systemctl unmask dnsmasq.service

配置好直接启动,然后我就去睡觉了,但是莫名其妙的,自编译安装的dnsmasq并不能运行......到这一步我就没继续往下追查了,因为......我看到了我能搜到的唯一一篇关于阿里云DNS问题的文章,这篇文章里的老哥也是遇到了这个问题,但是是通过屏蔽环境变量的方式解决的,可是/var/run/这个目录一般是存放pid的位置,凡是动环境变量总是要多多小心,于是决定换个思路。

Day 3

在Day1的时候就发现在/var/run/dnsmasq/resolv.conf的文件会变,但是那句话怎么说的来着

一切可变文件在软连接的面前都是纸老虎

停止dnsmasq.service,删除resolv.conf

ln -s /var/run/dnsmasq/resolv.conf /etc/resolv.dnsmasq.conf

然后启动dnsmasq.service,完美解决问题!

然而...软连接出来的符号在系统看来并不能算作一个文件,于是在这个dnsmasq重启之后,/var/run/dnsmasq的目录下,会出现两个resolv.conf文件...所以还是不起作用。😷

Day 4

这个问题最影响的还是域名解析的时间,因为dnsmasq默认的缓存是150条,这对于现代的网络浏览来说,可能真的就是几个网页的问题,所以和没缓存没有什么区别。

直到有一天我找到了...这篇文章,很显然,在/etc/default下有一个小捣蛋鬼在拦着我们自定义resolv.conf

去掉IGNORE_RESOLVCONF=yes的注释,终于是顺利的用上了自定义的resolv.conf

Last modification:February 25th, 2019 at 10:30 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment