• 今天要给大家推荐的一个软件Dnsmasq

一个本地DNS和DHCP服务器(本文只讨论DNS)

也是国外大神做的一个免费软件,遵循GPL协议。这是项目的官网

http://www.thekelleys.org.uk/dnsmasq/doc.html

The DNS subsystem provides a local DNS server for the network, with forwarding of all query types to upstream recursive DNS servers and caching of common record types (A, AAAA, CNAME and PTR, also DNSKEY and DS when DNSSEC is enabled).

从官网的介绍大家可以看出,这个本地DNS服务器旨在转发DNS需求到上一级DNS,然后缓存DNS的结果到本地。DNS类型支持A、AAAA等,还是很全面的。

这里有2个关键点

  1. 他可以让你指定你需要询问的上级DNS服务器;
  2. 他可以缓存DNS结果,最多1w条数据。

第一点,非常重要,是防止DNS劫持和DNS污染的关键。你可以指定Google DNS 8.8.8.8 或者 114DNS 114.114.114.114,这2个都是靠谱的DNS,而不是运营商指定的DNS(有些网站会被莫名被搞到其他的网站)。一个显著的结果就是以前打不开的网站可以打开了!

第二点,你可以最多缓存1w条数据,只要拿到DNS数据以后还可以用,电脑拿到DNS手机可以复用,可以显著提高全网的DNS速度

 

  • 安装Dnsmasq

这里我用的lede软路由固件和某大神发布的Jump的软路由固件,都内置了Dnsmasq。具体设置在 网络 – DHCP/DNS

提供了一个GUI界面让你设置,你只需要填写后台GUI配置就OK了,不需要SSH进去改linux文件。

  1. 基本设置 – DNS 转发,请添加2条,一个是114.114.114.114,一个是8.8.8.8
  2. 高级设置 – DNS 查询缓存的大小,设置为9999 

其他不需要改变。

这里有2个坑,我测试了2天才有结论,给大家讲一下:

  1. koolshare论坛的Dnsmasq根据我多天的测试应该是bug版本。现象为一开始可以用,几个小时之后本地DNS服务器就挂了。之前我找了好久原因,各种设置都没用。最后更换JUMP固件就OK了。所以你需要找一个靠谱的固件。根据我的设置教程配置就好,如果有问题肯定不是配置问题,就是版本问题。
  2. 网上很多教程都是基于Linxu,设置reslov文件啥的,很复杂。我建议大家不要用,因为里面各种引用,改不止一处文件,很容易出错,而且Dnsmasq的版本不一样,引用规则也不一样,有些是读/etc文件夹的配置文件,有的是读/tmp文件夹下面的配置文件,搞不清楚的。建议直接用GUI设置就好了。千万不要乱SSH进去改文件。

建议大家都要部署Dnsmasq本地DNS,有问题可以提出。如果你使用之后有好的效果,或者有其他好的DNS解决方案可以文章下面留言。