- DNS缓存服务在服务器运维中承担着重要角色,当CentOS系统出现域名解析延迟、网站访问异常或DNS配置更新后未生效时,重启DNS缓存服务往往是关键操作,本文将提供三种主流DNS缓存服务(nscd、systemd-resolved、dnsmasq)的完整操作指南。
-
- 一、确认当前DNS缓存服务类型
- 执行以下命令快速识别运行中的服务:
systemctl list-units | grep -E 'nscd|dnsmasq|Systemd-resolved'
若输出包含::使用Name Service Cache Daemon
- nscd.service
:常见于KVM虚拟化环境
- dnsmasq.service
:新版CentOS默认方案 二、分场景操作指南 场景1:nscd服务管理
- systemd-resolved.service
重启服务

sudo systemctl restart nscd
清除现有缓存(重要!)
sudo nscd -i hosts
注意:修改- /etc/nscd.conf
配置后,必须删除旧缓存文件:
sudo rm -f /var/db/nscd/hosts
sudo systemctl restart nscd
- 场景2:systemd-resolved服务
重启核心服务

sudo systemctl restart systemd-resolved
强制刷新本地缓存
sudo resolvectl flush-caches
- 配置验证命令:
resolvectl statistics | grep "Cache Size"
- 场景3:dnsmasq服务
热重载配置(不中断服务)
sudo systemctl reload dnsmasq

完全重启
sudo systemctl restart dnsmasq
- 查看当前查询统计:
sudo journalctl -u dnsmasq --since "5 minutes ago"
- 三、服务状态验证方法
- 1、基础检查
systemctl status <服务名> | grep Active
- 2、实时解析测试
dig example.com +stats | grep "Query time"
- 3、缓存命中率监控
nscd -g | grep "hosts cache"
或
dnsmasq --test
四、典型故障排查清单问题现象:服务重启后解析仍失败
1、检查- /etc/resolv.conf
是否指向127.0.0.1
2、验证防火墙规则是否放行UDP 53端口:
sudo firewall-cmd --list-ports | grep 53
- 3、查看SELinux审计日志:
sudo ausearch -m avc -ts recent
- 问题现象:部分域名无法解析
- 1、测试DNS服务器连通性:
nc -zv 8.8.8.8 53
- 2、检查DNS后缀配置:
cat /etc/resolv.conf | grep search
- 五、安全操作建议
- 1、配置备份原则
sudo cp /etc/{nscd.conf,dnsmasq.conf,resolved.conf} /backup_path/
- 2、日志监控技巧
实时监控dnsmasq日志
sudo tail -f /var/log/dnsmasq.log | grep -E 'error|failed'
查看systemd-resolved错误
journalctl -u systemd-resolved -p 3 -xb
- 3、性能调优参数(以dnsmasq为例):
在/etc/dnsmasq.conf中添加
cache-size=5000
local-ttl=300
个人运维经验:在云服务器环境中,遇到过dnsmasq缓存未及时更新导致证书续签失败的情况,建议关键业务服务器在修改DNS记录后,立即执行- sudo pkill -HUP dnsmasq
触发缓存刷新,同时设置每周定时清理旧缓存的cron任务:
0 3 * * 6 systemctl restart dnsmasq && resolvectl flush-caches
当遇到复杂的DNS解析问题时,推荐使用- tcpdump
抓包分析:
sudo tcpdump -i eth0 port 53 -w dns.pcap
- 通过Wireshark分析流量特征,能快速定位是本地缓存问题还是上游DNS服务器异常。