share-image
ESC

使用dnsmasq搭建dns服务器

DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。自己搭建公共DNS更加灵活,如果是在本地搭建,还可以大幅提高解析速度。

相比较BIND那复杂的配置来说,dnsmasq绝对轻量多了。

安装

yum -y install dnsmasq

配置

1.配置文件在 /etc/dnsmasq.conf,我们要让他能用起来需要做如下配置


#指定上游dns服务器
resolv-file=/etc/resolv.dnsmasq.conf
#表示严格按照 resolv-file 文件中的顺序从上到下进行 DNS 解析, 直到第一个成功解析成功为止
strict-order
# 开启后会寻找本地的hosts文件在去寻找缓存的域名,最后到上游dns查找
#no-resolv
listen-address=0.0.0.0 #0.0.0.0 设置为公网IP
conf-dir=/etc/dnsmasq.d # 我们的解析记录都写到这个目录下

2.创建 /etc/resolv.dnsmasq.conf ,然后添加


# cat /etc/resolv.dnsmasq.conf
nameserver 119.29.29.29
nameserver 114.114.114.114
nameserver 8.8.8.8
nameserver 168.95.1.1

3.然后创建 /etc/dnsmasq.d/cloud.conf。添加

address=/baidu.com/127.0.0.1 #将百度的域名解析到127.0.0.1
address=/ad.youku.com/127.0.0.1 # 禁止优酷广告
address=/ad.iqiyi.com/127.0.0.1 # 禁止iqiyi广告

格式是

address=/domain.com/dns

比如上面的百度,我就把他都解析到127.0.0.1

实现DNS分流

server=/cn/114.114.114.114 # cn的域名都走114的dns
server=/google.com/115.159.220.214 # 将谷歌的解析都走115.159.220.214


上面的是将所有cn结尾的域名都走114解析,下面是将google.com 走115.159.220.214解析

开启防火墙53端口

由于我是阿里云,内部的iptables 我已经关闭了 需要去安全组设置udp 53端口入方向放行

然后本地测试下是否是通的

➜  www nc -vuz 121.42.18.6 53
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif (null)
src 192.168.2.32 port 49939
dst 121.42.18.6 port 53
rank info not available

Connection to 121.42.18.6 port 53 [udp/domain] succeeded!

然后启动

service dnsmasq start

设置为开机自启动

# systemctl enable dnsmasq
Created symlink from /etc/systemd/system/multi-user.target.wants/dnsmasq.service to /usr/lib/systemd/system/dnsmasq.service.

测试

  www dig m.baidu.com @121.42.18.6

; <<>> DiG 9.8.3-P1 <<>> m.baidu.com @121.42.18.6
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41523
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;m.baidu.com. IN A

;; ANSWER SECTION:
m.baidu.com. 0 IN A 127.0.0.1

;; Query time: 30 msec
;; SERVER: 121.42.18.6#53(121.42.18.6)
;; WHEN: Mon Aug 28 10:32:27 2017
;; MSG SIZE rcvd: 45


哈哈,百度的子域名已经被解析到127.0.0.1了。

此外还可以配合dnscrypt-proxy 对查询进行加密

文章作者:阿文
文章链接: https://www.awen.me/post/9868.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿文的博客
本文于 2017-08-28 发布,已超过半年(3076天),请注意甄别内容是否已过期。