Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为DHCP 服务器,dnsmasq 可以用于为局域网电脑分配内网ip地址和提供路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络。此外它还自带了一个 PXE 服务器。

默认是关闭dhcp功能。

#安装
yum install dnsmasq -y
#编辑配置文件/etc/dnsmasq.conf
[root@node dnsmasq.d]# grep -Ev "^$|^[#;]" /etc/dnsmasq.conf  
listen-address=10.0.40.246,127.0.0.1
cache-size=10000
conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig

默认会从/etc/hosts,/etc/resolv.conf读取文件。

/etc/hosts 会读取到本地域名配置文件(不支持泛域名)

/etc/resolv.conf 会读取上游DNS配置文件,如果读取不到/etc/hosts的地址解析,就会转发给resolv.conf进行解析地址

如果你想使用泛指域名的话,可以在/etc/dnsmasq.d编辑一个配置文件

[root@node dnsmasq.d]# cat /etc/dnsmasq.d/address.conf 
address=/xxxlocal.com/10.0.40.247

下面是网上找到的一个例子,仅作参考:

address=/www.taobao.com/127.0.0.1  #正向解析
ptr-record=127.0.0.1.in-addr.arpa,www.taobao.com    #反向解析(可选)

address=/baidu.com/127.0.0.1    #泛域名解析

最后可选项:

配置日志轮询

#配置日志轮转,编辑/etc/logrotate.d/dnsmasq
/var/log/dnsmasq.log {
    daily
    copytruncate
    missingok
    rotate 30
    compress
    notifempty
    dateext
    size 200M
}

重启服务


命令:

systemctl enable dnsmasq
systemctl start dnsmasq
systemctl restart dnsmasq
#查看dnsmasq是否启动正常,查看系统日志:
journalctl -u dnsmasq


测试dns缓存,要测试查询速度,请访问一个 dnsmasq 启动后没有访问过的网站,执行

[root@node ~]# dig archlinux.org | grep "Query time"
;; Query time: 212 msec
[root@node ~]# dig archlinux.org | grep "Query time"
;; Query time: 2 msec

再次运行命令,因为使用了缓存,查询时间应该大大缩短。100倍



参考:

https://wiki.archlinux.org/index.php/Dnsmasq_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

http://www.cnblogs.com/wsl222000/p/5981299.html