DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。自己搭建公共DNS更加灵活,如果是在本地搭建,还可以大幅提高解析速度。
安装DNSmasq
可以下载软件包编译安装,不过一般Linux软件仓库已经提供了DNSmasq,相关命令如下:
#centos安装
yum -y install dnsmasq
#如果是ubuntu系统
apt-get -y install dnsmasq
配置DNSmasq
DNSmasq配置文件再/etc/dnsmasq.conf
,我们需要修改几个参数,分别为:
- resolv-file=/etc/resolv.dnsmasq.conf 这个参数表示 dnsmasq 会从这个指定的文件中寻找上游 dns 服务器
- 取消注释的 strict-order ,表示严格按照 resolv-file 文件中的顺序从上到下进行 DNS 解析, 直到第一个成功解析成功为止
- 注释掉 no-hosts, 默认情况下这是注释掉的, dnsmasq 会首先寻找本地的 hosts 文件再去寻找缓存下来的域名, 最后去上游 dns 服务器寻找.
- 设置 listen-address=127.0.0.1 ,
127.0.0.1
改成自己服务器IP
我们来整理下上面我们修改了那些配置内容
#需要新建一个resolv.dnsmasq.conf文件,这个是配置上游DNS,也就是真正的公共DNS
vi /etc/resolv.dnsmasq.conf
#内容如下
nameserver 119.29.29.29
nameserver 1.2.4.8
#修改/etc/dnsmasq.conf
#上游DNS路径
resolv-file=/etc/resolv.dnsmasq.conf
#取消strict-order注释
strict-order
#监听地址,改成自己服务器公网IP
listen-address=127.0.0.1
使用方法
DNSmasq可以设置不同的域名指定不同的DNS进行解析,修改/etc/dnsmasq.conf
文件即可,若不对域名设置DNS,则从上游DNS获取记录。
#指定淘宝使用114 DNS进行解析
server=/taobao.com/114.114.114.114
#google指定8.8.8.8进行解析
server=/google.com/8.8.8.8
也可以对指定的域名进行解析,相当于就是本地hosts指向,可以利用这个功能实现广告屏蔽等效果。也是需要修改/etc/dnsmasq.conf
文件,DNSmasq也可以对域名进行泛解析,填写*.xiaoz.me
,这样的格式即可。
#将广告域名指向到127.0.0.1实现广告屏蔽
address=/ad.youku.com/127.0.0.1
address=/ad.iqiyi.com/127.0.0.1
#对xiaoz.me进行泛解析
address=/*.xiaoz.me/192.168.20.138
启动与测试
#启动
/etc/init.d/dnsmasq start
#停止
/etc/init.d/dnsmasq stop
#重新启动
/etc/init.d/dnsmasq restart
比如我在本地一台Linux服务器(192.168.20.127)安装了DNSmasq,并在局域网内其它PC将DNS配置为192.168.20.127,使用dig命令进行测试,第一次查询相对较长,第二次几乎再10ms内,如下截图。
总结
如果是在内网搭建DNSmasq,不仅可以提高解析速度,还可以有效的防止DNS劫持,实现屏蔽广告等作用。如果是在公网搭建DNSmasq,还可以对指定的域名解析hosts指向,从而避免DNS污染,实现fq
如果您发现DNSmasq启动正常,但就是无法解析,请注意防火墙是否放行tcp/upd 53端口。
此文参考了:利用 Dnsmasq 搭建自己的 DNS 服务器
Dnsmasq安装与配置-搭建本地DNS服务器 更干净更快无广告DNS解析
我自建的dns几乎天天被打,都快哭了
http://blog.awenzi.win/?p=523
这东西自己用就好了,没必要公开分享。
就是 低调啊 非要高调 不死的快
博主 你好
我一直弄不明白dnsmasq本地localhost解析和公网解析需要哪些必须选项支撑 网上的option太多了 有时候看教程看的晕的 尤其是dnsmasq的优化选项 上游dns和下游dns的分别是怎么设置 分别是起的什么效果 还有dhcp内网要怎么写option也是晕的 选项太多了 自己就太不专业 天天Google看别人的教程 弄成了三两水 这个好像可以 那个也好像可以
好想彻底理解dnsmasq的原理和各个选项作用 使用的效果 和不同网络环境的配置方法 我现在还应用在android手机上的Linux系统中 做localhost抗污染 然后VPN 可以超级稳定
你会被递归攻击的,自建公网DNS经常被打的不能自理
那看来我还是把公网关了内网用。
这是什么?那么危险??
国内vps用这个是不是也不能实现fq啊
可以实现的,不过得有hosts列表,然后在DNSmasq配置。
不错,各个公司都有自己的DNS服务器,我还没接触过呢,先试试
是的,DNSmasq适合公司或者家庭等小型网络。
博主 你还会 bind 么?能不能写一个教程?主要学会抗污染解析根域名
对Bind不熟悉,小规模的话用Dnsmasq应该足够了。