DNS服务器搭建

DNS服务器搭建

八月 14, 2019

DNS服务器搭建

DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络。作为域名解析服务器(DNS),dnsmasq可以通过
缓存DNS来提高对同一网址的访问速度。作为DHCP服务器,dnsmasq可以用于为局域网主机分配内网ip地址、提供路由功能。
DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络,更适用于虚
拟化和大数据环境的部署。此外它还自带了一个PXE服务器。

下载地址:

1
http://www.thekelleys.org.uk/dnsmasq/

1.下载安装

1
yum -y install dnsmasq

2.配置dnsmasq

1
2
3
4
5
6
7
8
9
10
vim /etc/dnsmasq.conf
修改或添加下列内容:
resolv-file=/etc/resolv.dnsmasq.conf
strict-order
listen-address=192.168.122.131,127.0.0.1
addn-hosts=/etc/dnsmasq.hosts
cache-size=100
bogus-nxdomain=223.5.5.5
log-queries
log-facility=/var/log/dnsmasq.log

开启dnsmasq日志切割

1
2
3
4
5
6
7
8
9
10
11
12
cat >/etc/logrotate.d/dnsmasq <<-EOF
/var/log/dnsmasq.log {
daily
copytruncate
missingok
rotate 3
compress
notifyempty
dateext
size 30M
}
EOF

3.编辑/etc/resolv.dnsmasq.conf文件并添加上游DNS服务器地址

1
echo 'nameserver 223.5.5.5' > /etc/resolv.dnsmasq.conf

4.创建dnsmasq.hosts文件

1
cp /etc/hosts /etc/dnsmasq.hosts

5.启动dnsmasq

1
2
systemctl start dnsmasq
systemctl enable dnsmasq

6.检测服务是否开启

1
netstat -tlunp | grep dnsmasq

dnsmasq性能优化

我们都知道Bind不配合数据库的情况下,经常需要重新载入并读取配置文件,这是造成性能低下的原因。根据这点教训,我们可以考虑不读取/etc/hosts文件。而是另外指定一个在共享内存里的文件,如/dev/shm/dnsrecord.txt ,这样就不费劲了,又由于内存的非持久性,重启就消失,可以定期同步硬盘上的某个内容到内存文件中。

具体实现步骤如下:

a.配置dnsmasq

1
2
3
vim /etc/dnsmasq.conf 
no-hosts
addn-hosts=/dev/shm/dnsrecord.txt

b.解决同步问题

开机启动

1
echo "cat /etc/hosts > /dev/shm/dnsrecord.txt" >> /etc/rc.local

定时同步内容

1
2
echo '*/10 * * * * root /usr/bin/cat /etc/hosts > /dev/shm/dnsrecord.txt' >> /etc/crontab
systemctl restart crond

Dnsmasq选择最快的上游DNS服务器
​ 经常会有这样的情景,Dnsmasq服务器配了一堆上游服务器,转发本地的dns请求,缺省是Dnsmasq事实上是只挑了一个上游dns服务器来查询并转发结果,这样如果选错服务器的话会导致DNS响应变慢。

1
2
3
4
5
vi /etc/dnsmasq.conf

all-servers
server=223.5.5.5
server=114.114.114.114

all-servers表示对以下设置的所有server发起查询,选择回应最快的一条作为查询结果返回。
上面设置了两个dns server,收到解析请求会同时查询这两个服务器,询问dns地址谁返回快就采用谁的结果。

技术参考:
https://www.hi-linux.com/posts/30947.html
https://www.cnblogs.com/wclwcw/p/8806256.html