Linux安装DNSmasq搭建自己的公共DNS
DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。自己搭建公共DNS更加灵活,如果是在本地搭建,还可以大幅提高解析速度。
安装DNSmasq
可推火网以下载软件包编译安装,不过一般Lux软件仓库已经提供了DNSmasq,相关命令如下
code
#centos安装yum -y stall dnsmasq#如果是ubuntu系统apt-get -y stall 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
我们来整理下上面我们修改了那些配置内容
code
#需要新建一个resolv.dnsmasq.conf文件,这个是配置上游DNS,也就是真正的公共DNSvi /etc/resolv.dnsmasq.conf#内容如下nameserver 119.29.29.29nameserver 1.2.4.8
code
#修改/etc/dnsmasq.conf#上游DNS路径resolv-file=/etc/resolv.dnsmasq.conf#取消strict-order注释strict-order#监听地址,改成自己服务器公网IPlisten-address=127.0.0.1
使用方法
DNSmasq可以设置不同的域名指定不同的DNS进行解析,修改/etc/dnsmasq.conf文件即可,若不对域名设置DNS,则从上游DNS获取记录。
code
#指定淘宝使用114 DNS进行解析server=/taobao./114.114.114.114#google指定8.8.8.8进行解析server=/google./8.8.8.8
也可以对指定的域名进行解析,相当于就是本地hosts指向,可以利用这个功能实现广告屏蔽等效果。也是需要修改/etc/dnsmasq.conf文件,DNSmasq也可以对域名进行泛解析,填写.xiaoz.me,这样的格式即可。
code
#将广告域名指向到127.0.0.1实现广告屏蔽address=/ad.youku./127.0.0.1address=/ad.iqiyi./127.0.0.1#对xiaoz.me进行泛解析address=/.xiaoz.me/192.168.20.138
启动与测试
code
#启动/etc/it.d/dnsmasq start#停止/etc/it.d/dnsmasq s#重新启动/etc/it.d/dnsmasq restart
比如我在本地一台Lux服务器(192.168.20.127)安装了DNSmasq,并在局域网内其它PC将DNS配置为192.168.20.127,使用dig命令进行测试,第一次查询相对较长,第二次几乎再10ms内,如下截图。
如果是在内网搭建DNSmasq,不仅可以提高解析速度,还可以有效的防止DNS劫持,实现屏蔽广告等作用。如果是在公网搭建DNSmasq,还可以对指定的域名解析hosts指向,从而避免DNS污染,实现fq
如果您发现DNSmasq启动正常,但就是无法解析,请注意防火墙是否放行tcp/upd 53端口。