曾经热衷于Lofter
现已独居,地址:
https://www.skyblond.info
感谢来访,详情请见最后一次更新。

© 天空 Blond
Powered by LOFTER

【歪门邪道】在树莓派上搭建DNS服务器

        今天写化学作业的时候突然搞不清楚溶解性和溶解度的区别了,想让网查一下,结果。。

Chrome:DNS_PROBE_FINISHED_NXDOMAIN.

我:Excuse me???

        重置DNS缓存无果,重置winSock无果,挂代理无果。果然谷歌的DNS不靠谱,但是备用的一个防污染DNS也不好使了。所以我决定用树莓派搭一个局域网内的DNS服务器,带上缓存的话能够大幅提高DNS解析速度。

        这次使用的是DNSmasq,没用Bind,因为我觉得DNSmasq比较容易配置。在树莓派上执行命令:

sudo apt-get install dnsmasq

        即可安装好dnsmasq,默认开机自启动。它的配置文件在/etc目录下。名字非常好认:dnsmasq.conf

        在里面取消注释strict-order这一行,就可以让程序按照/etc/resolve.conf这个文件来请求上游DNS服务器了,还有就是调成cache数量,我选择的是5000,因为cache缓存是放在内存里的,树莓派内存有限,而且我还在上面装了lnmp和我自己的网站签到(java),后者有crontab定时调用,所以5000条的话我觉得应该差不多不会占用太多内存。

        然后关于listen-address这里,我看网上好多教程写的是127.0.0.1和树莓派本身的ip地址,但是我并没有写,因为我的树莓派除了加入局域网之外还加入了一个我个人的ZeroTier虚拟网络,以保证我出门在外时能够通过树莓派访问到我家里的资源(所以下一篇教程很可能就是给话说Z10PA-D8加入网络开机功能,或者用树莓派开启一个电脑),所以这样一来一个树莓派有好多IP,写起来太麻烦,索性就不写了2333

        进行完如上设定之后,你也可以选择开始DNSSec,但是我不知道apt-get安装的dnsmasq有没有在编译时集成dnsSec这个功能,所以我开了,但是感觉没啥用。下面就是配置/etc/resolve.conf,这个文件里配置的是当DNSmasq缓存内没有请求的dns地址时,该向谁发起查询请求。

        这里我注释掉了127.0.0.1那一行,我使用了谷歌提供的两个DNS和另一个防污染DNS的主备用服务器。配置的格式仿照程序生成的127.0.0.1那一行即可。保存,然后重启服务。

sudo service dnsmasq restart

        然后

sudo service dnsmasq status

        如果显示绿色active,那就表明dns正在运行,只要在电脑上设定好,然后清空之前的DNS缓存即可。


        不过这里还是要说一点题外话。搭建完成后我进行了一些测试,我发现现在GFW不只是用DNS投毒这样的技术来干扰网站的访问了,在不挂代理(树莓派是走个人搭建的SS代理的)的情况下会出现连接超时的问题。所以即便弄好了无污染DNS,访问部分网站还是需要代理才可以。

        

评论