记一次 dnsmasq 安装与折腾-搭建无污染DNS

其他内容

本文最后更新于 2019年9月28日   请注意相关内容可能已过时

·缘由

安装dnsmasq的缘由起因于gfw的dns投毒越来越严重了,虽然有教育网的dns可以勉强支撑着,但是我这里本地是电信。教育网的dns老是把一些大站的cdn节点解析到教育网的ip上面,而且的有时候解析到的ip根本连接不上。很是令人头痛。遂干脆自己搭了个dns自己用。

其实现在还是用dnsmasq的话,并不是最好的选择,因为现在gfw连非53端口也能投毒,还好dnsmasq的上游dns可以设置成多个。

其实我用dnsmasq的原因是因为我使用的路由器刷了个潘多拉,里面自带了dnsmasq,我直接设置成解析局域网的dns请求,然后全部转发到我的服务器上面解析。

我感觉比windows上面安装客户端方便一点。这里就记一记怎么折腾的。

最开始直接在我的vps安装dnsmasq以后,把端口改成了2323以后就直接填到路由器上面。

一开始还可以解析,用了两天发现解析不到数据了。

排查了好久的问题才发现是上游dns无法解析了。

因为我这里的服务器是国外的机器,所以部分有国内外CDN的网站都会解析到国外的IP上,而国内连接这些IP的速度都会很慢。导致这部分网站打开速度很慢。

所以我有指定这部分网站的上游dns为国内的运营商dns,这样解析到ip还是国内的。比如最简单的google.cn这个域名,国内解析到的ip是国内的ip,但是如果你在国外的话,解析出来的ip是国外的。(如图)

这是国外的IP解析出来的地址:

使用上游dns为国内运营商dns解析出来的地址:

但是据我实测,有部分国内dns也会在国外ip请求的时候返回国外的ip,例如114dns。


·安装dnsmasq

安装dnsmasq很简单。以我使用的centos7来说直接输入以下命令就可以了。

yum install dnsmasq -y

如果是ubuntu系统

apt-get  install dnsmasq -y

·修改dnsmasq的配置文件

dnsmasq的配置文件位置在/etc/dnsmasq.conf

其配置文件我使用的很简单

port=2323
resolv-file=/etc/resolv.dnsmasq.conf
conf-dir=/etc/dnsmasq.d
cache-size=150

其中 port是端口可以随便修改,

resolv-file 指的是 dnsmasq的上游dns,也就是真正的dns,我这里指定的文件就是在etc目录下面的resolv.dnsmasq.conf 这个文件,我上游dns用的有两个,

nameserver 8.8.8.8
nameserver 1.0.0.1

conf-dir的含义是该文件夹下面的域名文件自定义的dns,在该文件夹下面新建一个任意的文件,后缀为conf,然后写入你要指定的域名及使用的dns即可。例如:

server=/google.cn/8.8.8.8

cache-size 指的是dns的缓存大小。一般150就够了。

安装修改完成后 重启一下dnsmasq

service dnsmasq restart

设置dnsmasq开机自启动

systemctl enable dnsmasq.service

·关于广告屏蔽

dnsmasq也可以对指定的域名进行解析,相当于就是本地hosts指向,可以利用这个功能实现广告屏蔽等效果。也是需要修改/etc/dnsmasq.conf文件,DNSmasq也可以对域名进行泛解析,直接填写*.baidu.com这样的格式即可。

#将广告域名指向到127.0.0.1实现广告屏蔽
address=/ad.youku.com/127.0.0.1
address=/ad.iqiyi.com/127.0.0.1
#对baidu.com进行泛解析
address=/*.baidu.com/8.8.8.8

 


·配置国内域名使用国内dns解析

关于一部分在国内国外都有cdn的网站,在github上有个项目,记录了平时会使用到的网站。项目地址

可以使用该项目列表,下载里面的域名列表放在/etc/dnsmasq.d 目录下面,然后重启dnsmasq就可以了。

对了这个项目里面的dns是114,建议修改成国内运营商的dns,注意要先在vps上面测试下能不能解析。目前部分省的运营商dns现在屏蔽了来自国外的请求。

发表评论

邮箱地址不会被公开。 必填项已用*标注