默认连接网络后,都是使用的网络运行商的DNS,而这类DNS都是被劫持和污染的,另一方便还方便了运行商给你推送广告。当然也有一些公众的DNS可以给大家选用,不过哪里有使用自己的私有DNS服务器爽呢?所以我们可以用Dnsmasq来搭建一个自己的私人DNS。
一、关于Dnsmasq
Dnsmasq提供DNS缓存和DHCP服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存DNS请求来提高对访问过的网址的连接速度。作为DHCP服务器,dnsmasq 可以用于为局域网电脑分配内网ip地址和提供路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络。此外它还自带了一个 PXE 服务器。
以上介绍来自ArchWiki。
当然Dnsmasq还可以自定义DNS路由、转发DNS请求之类的,用于屏蔽广告。当然本文主要介绍Dnsmasq的部署方法,至于高级操作将会重新写一篇文章。
至于Dnsmasq的工作原理呢,我也不在写了,毕竟我也没有官方文档了解的那么清楚,搭建起来后自己在去理解工作原理吧!!!
二、Dnsmasq部署
Dnsmasq的部署,不需要很强大的硬件资源,一下是我部署Dnsmasq的机子。
部署环境
系统环境:Debian 8.0 ×64
内存大小:1GB
VPS构架:KVM
三、安装Dnsmasq
1.安装DnsmasqLinux的软件仓库已经含有Dnsmasq,所以。。。
#安装Dnsmasq
apt-get -y install dnsmasq
至于CentOS用户,将apt-get替换成yum即可。
2.由于要编辑Dnsmasq配置文件的操作较多,因而建议操作之前先备份默认的Dnsmasq的配置文件。
#备份配置文件
cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
#编辑配置文件
vim /etc/dnsmasq.conf
3.配置上游DNS文件的路径。在Vim中搜索到resolv-file,将前面的注释符号#删除,并赋值为/etc/resolv.dnsmasq.conf。
resolv-file=/etc/resolv.dnsmasq.conf
4.解除strict-order的注释,Vim中搜索到strict-order,将注释符号#删除即可。
5.解除no-hosts的注释,Vim中搜索到no-hosts,将注释符号#删除即可。
6.在文档的最后一行,添加监听地址,并设置监听地址为你vps的ip地址。
listen-address=103.xxx.xxx.xxx(your vps IP address)
到此配置文件已经搞定了,复杂的东西都弄好了。
7.由于我们在第二步创建了上游DNS的配置文件路径,但是此时并没有配置文件。因此创建一个。
#创建配置文件
vim /etc/resolv.dnsmasq.conf
在Vim中添加nameserver值,我以Google DNS为例,没办法Google脑残粉,提示下Google DNS并不是最好的哦!!
nameserver 8.8.8.8 nameserver8.8.4.4
到此Dnsmasq的部署已经完毕了。
四、Dnsmasq使用测试
1.Dnsmasq的关闭、启动与重启。
#启动服务 /etc/init.d/dnsmasq start #关闭服务 /etc/init.d/dnsmasq stop #重启服务 /etc/init.d/dnsmasq restart
启动服务后,可以测试下Dnsmasq是否工作。
netstat -tunlp | grep 53
2.为了防止vps宕机后,Dnsmasq依旧可以服务,所以请加入开机启动。
chkconfig dnsmasq /etc/init.d/dnsmasq restart
3.测试以下Dnsmasq的效果。
我用我的博客测试的,由于我用Google DNS,加之vps也是在美国,所以速度效果不是很明显,但是也可以看见效果的提升。
五、Windows下配置DNS服务器
之前的操作都是在VPS上完成的操作,你弄了那么多,不在自己的设备上修改好DNS服务器,那么运行商该劫持你还是要劫持你,所以速度将DNS服务器改为你的私有DNS服务器吧。
到设置DNS的地方,将首选DNS服务器修改为你的IP地址即可,至于备用DNS服务器可以随便使用一个public dns即可,当然比如果有2个私有的DNS服务器的话,那么都填写上吧!
六、总结
Dnsmasq的魅力不仅仅只有这么简单地东西,高级点的玩法可以用于屏蔽广告,个人觉得这个Dnsmasq还是值得折腾的,可以多看下官方文档,当然如果你嫌弃麻烦,完全可以使用那些Open Public DNS服务器即可。
官方QQ群号码:922069959(空)、1093596563(空)