Loading... > 众所周知,总是套路得人心 最近在折腾阿里云轻量服务器的DNSMASQ,初衷是加快一些域名的解析,减少使用的卡顿感,但是问题出现了。 <!--more--> 我用惯了Ubuntu Server,对于`dnsmasq`的配置还算是比较熟悉,一把梭就是干。结果无论怎么调试,在`systemctl`的日志下总是使用的是110开头阿里云的DNS。仔细查看,来自阿里云镜像的`dnsmasq`的`dnsmasq.service`会默认使用`/var/run/dnsmasq/resolv.conf`这里的解析文件。 ## Day 1 别问,问就是一把梭。尝试直接修改`resolv.conf`文件中的`nameserver`,成功!但是......直到改完的第二天晚上,我才发现,`dnsmasq.service`会莫名其妙的进行类似重启的操作,而一旦重启,就会使得`resolv.conf`文件重置为阿里云这个镜像默认的阿里云DNS。:new_moon_with_face: ## Day 2 行吧,惹不起还跑不起吗,purge完`dnsmasq`,立马动手开始编译安装。过程十分愉悦,只是需要手动 `systemctl unmask dnsmasq.service` 配置好直接启动,然后我就去睡觉了,但是莫名其妙的,自编译安装的`dnsmasq`并不能运行......到这一步我就没继续往下追查了,因为......我看到了我能搜到的唯一一篇关于阿里云DNS问题的[文章](https://www.willnet.net/index.php/archives/60/ "文章"),这篇文章里的老哥也是遇到了这个问题,但是是通过屏蔽环境变量的方式解决的,可是`/var/run/`这个目录一般是存放pid的位置,凡是动环境变量总是要多多小心,于是决定换个思路。 ## Day 3 在Day1的时候就发现在`/var/run/dnsmasq/resolv.conf`的文件会变,但是那句话怎么说的来着 > 一切可变文件在软连接的面前都是纸老虎 停止`dnsmasq.service`,删除`resolv.conf` ```shell ln -s /var/run/dnsmasq/resolv.conf /etc/resolv.dnsmasq.conf ``` 然后启动`dnsmasq.service`,完美解决问题! 然而...软连接出来的符号在系统看来并不能算作一个文件,于是在这个`dnsmasq`重启之后,`/var/run/dnsmas`q的目录下,会出现两个`resolv.conf`文件...所以还是不起作用。:mask: ## Day 4 这个问题最影响的还是域名解析的时间,因为`dnsmasq`默认的缓存是150条,这对于现代的网络浏览来说,可能真的就是几个网页的问题,所以和没缓存没有什么区别。 直到有一天我找到了...[这篇文章](https://www.jianshu.com/p/81c0221de34c "这篇文章"),很显然,在`/etc/default`下有一个小捣蛋鬼在拦着我们自定义`resolv.conf`。 去掉`IGNORE_RESOLVCONF=yes`的注释,终于是顺利的用上了自定义的`resolv.conf`。 最后修改:2019 年 02 月 25 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏