当前位置: 首页 » 教程 » 心得 » Linux安装DNSmasq搭建自己的公共DNS

Linux安装DNSmasq搭建自己的公共DNS

心得 12条评论 2017-4-4 11,608 views

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解析

标签: ,

12 条评论 “Linux安装DNSmasq搭建自己的公共DNS”

  1. 龙文说道:

    我自建的dns几乎天天被打,都快哭了
    http://blog.awenzi.win/?p=523

    1. 小z说道:

      这东西自己用就好了,没必要公开分享。

      1. test说道:

        就是 低调啊 非要高调 不死的快
        博主 你好
        我一直弄不明白dnsmasq本地localhost解析和公网解析需要哪些必须选项支撑 网上的option太多了 有时候看教程看的晕的 尤其是dnsmasq的优化选项 上游dns和下游dns的分别是怎么设置 分别是起的什么效果 还有dhcp内网要怎么写option也是晕的 选项太多了 自己就太不专业 天天Google看别人的教程 弄成了三两水 这个好像可以 那个也好像可以
        好想彻底理解dnsmasq的原理和各个选项作用 使用的效果 和不同网络环境的配置方法 我现在还应用在android手机上的Linux系统中 做localhost抗污染 然后VPN 可以超级稳定

  2. 菜鸟运维说道:

    你会被递归攻击的,自建公网DNS经常被打的不能自理

    1. 小z说道:

      那看来我还是把公网关了内网用。

    2. 钛客志说道:

      这是什么?那么危险??

  3. 国内vps用这个是不是也不能实现fq啊

    1. 小z说道:

      可以实现的,不过得有hosts列表,然后在DNSmasq配置。

  4. Mr.Li说道:

    不错,各个公司都有自己的DNS服务器,我还没接触过呢,先试试

    1. 小z说道:

      是的,DNSmasq适合公司或者家庭等小型网络。

      1. test说道:

        博主 你还会 bind 么?能不能写一个教程?主要学会抗污染解析根域名

        1. xiaoz说道:

          对Bind不熟悉,小规模的话用Dnsmasq应该足够了。

发表评论

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