在CentOS7系统中,dnsmasq是一个轻量级且高效的DNS和DHCP服务器,适用于小型网络环境,它能够快速响应DNS查询,同时提供DHCP服务,简化网络管理,本文将详细介绍dnsmasq在CentOS7上的安装、配置、启动及常见问题处理,帮助用户快速搭建本地DNS解析服务。

安装dnsmasq
在CentOS7上,dnsmasq可以通过yum包管理器直接安装,更新系统软件包列表以确保获取最新版本:
sudo yum update -y
执行以下命令安装dnsmasq:
sudo yum install -y dnsmasq
安装完成后,dnsmasq服务会自动启动,但建议先停止服务以便进行后续配置:
sudo systemctl stop dnsmasq
配置dnsmasq
dnsmasq的主配置文件位于/etc/dnsmasq.conf,默认配置已能满足基本需求,但用户可根据需要自定义设置,以下是常用配置项说明:
- 监听地址:通过
listen-address指定dnsmasq监听的IP地址,例如listen-address=127.0.0.1,192.168.1.1表示监听本地回环和局域网IP。 - 上游DNS服务器:使用
server参数指定外部DNS服务器,如server=8.8.8.8或server=114.114.114.114。 - DNS缓存大小:通过
cache-size调整缓存条目数,默认为150,可设置为cache-size=1000提升性能。 - DHCP配置:若需启用DHCP服务,需添加
dhcp-range参数,例如dhcp-range=192.168.1.100,192.168.1.200,255.255.255.0,24h表示分配IP范围和租期。
配置完成后,保存文件并检查语法是否正确:
sudo dnsmasq --test
启动与管理dnsmasq
配置无误后,启动dnsmasq服务并设置为开机自启:

sudo systemctl start dnsmasq sudo systemctl enable dnsmasq
可通过以下命令查看服务状态:
sudo systemctl status dnsmasq
若需停止服务,执行:
sudo systemctl stop dnsmasq
防火墙与SELinux配置
CentOS7默认使用firewalld管理防火墙,需开放DNS端口(53/TCP和53/UDP):
sudo firewall-cmd --permanent --add-service=dns sudo firewall-cmd --reload
若启用SELinux,需为dnsmasq添加布尔值以允许网络访问:
sudo setsebool -P dnsmasq_can_network on
日志与故障排查
dnsmasq的日志默认记录在/var/log/messages,可通过log-facility自定义日志路径,例如在/etc/dnsmasq.conf中添加:
log-facility=/var/log/dnsmasq.log
排查问题时,可结合journalctl查看实时日志:

sudo journalctl -u dnsmasq -f
优化与安全建议
- 限制查询来源:通过
except-interface或bind-interfaces限制仅允许特定IP访问,避免公网滥用。 - 禁用IPv6:若网络环境无需IPv6,可在配置文件中添加
no-dhcp6和no-resolv减少资源占用。 - 定期更新:保持dnsmasq和系统版本最新,修复潜在安全漏洞。
FAQs
如何解决dnsmasq启动失败的问题?
答:首先检查配置文件语法是否正确(dnsmasq --test),确认端口53未被其他服务占用(netstat -tuln | grep 53),若涉及SELinux,需检查相关布尔值是否启用(getsebool -a | grep dnsmasq),或临时关闭SELinux测试(sudo setenforce 0)。
如何配置dnsmasq实现域名解析加速?
答:在/etc/dnsmasq.conf中添加自定义域名解析规则,
address=/example.com/192.168.1.10 address=/internal.local/127.0.0.1
启用缓存并调整cache-size值,或使用no-negcache禁用负缓存提升响应速度。