DNS缓存能加速域名解析,提升网络访问效率,但遇到网站无法访问或解析异常时,查看DNS缓存是排查问题的关键一步,本文将详解Linux系统下查看DNS缓存的多种方法,涵盖不同发行版和工具,助你快速定位问题。
一、通过 systemd-resolved 查看(适用于Ubuntu/CentOS 8+)
适用场景:主流现代Linux发行版(如Ubuntu 20.04+、Fedora、CentOS 8+)。
1、确保服务已启用:
sudo systemctl is-active systemd-resolved # 检查服务状态
2、查看完整DNS缓存记录:
sudo resolvectl statistics # 显示缓存统计与记录
3、提取缓存中的具体域名(如example.com
):
sudo resolvectl query example.com # 查询缓存解析结果
输出示例:
example.com: 192.0.2.1 -- 缓存命中(Cache Hit)
二、使用 dnsmasq 工具(常见于路由器或轻量级配置)
适用场景:OpenWrt、部分Debian/Ubuntu桌面环境。
1、确认dnsmasq运行状态:
sudo systemctl status dnsmasq
2、发送SIGUSR1
信号触发缓存日志输出:
sudo kill -SIGUSR1 $(pgrep dnsmasq) # 发送信号 sudo journalctl -u dnsmasq -n 50 # 查看最近50条日志(含缓存)
日志关键字段:
cached example.com is 192.0.2.1
三、通用方法:通过dig
或nslookup
间接验证
原理:若域名解析速度极快(毫秒级),则可能命中缓存。
1、使用dig
测试响应时间:
dig example.com | grep "Query time" # 关注查询耗时
结果分析:
Query time: 0 msec
→ 可能来自缓存
Query time: 30 msec
→ 未走缓存
2、通过nslookup
多次查询对比:
nslookup example.com # 首次查询 nslookup example.com # 二次查询(若瞬间返回则可能缓存生效)
1、nscd(Name Service Cache Daemon):
sudo nscd -g | grep "dns cache" # 查看缓存统计(需提前安装nscd)
2、清除缓存(故障排查必用):
sudo systemd-resolve --flush-caches # systemd-resolved清理 sudo pkill dnsmasq # dnsmasq重启清空
权限要求:大部分命令需sudo
权限。
服务差异:不同发行版默认DNS服务不同,优先确认系统使用的服务(systemd-resolved
/dnsmasq
)。
缓存时效:DNS记录有TTL限制,超时后自动失效。
作为站长,我强烈建议掌握DNS缓存查看技能——它不仅是网络故障排查的“黄金钥匙”,更是优化网站访问体验的底层保障,对于高频访问的站点,合理配置DNS缓存能显著降低解析延迟,若遇到解析异常,先清缓存再测试,往往能事半功倍,保持对系统工具的熟悉度,关键时刻能避免不必要的停机时间!
文章摘自:https://idc.huochengrm.cn/dns/9003.html
评论
杜才艺
回复在Linux中,可以通过`cat /var/cache/bind/db.`查看DNS缓存。
可忆雪
回复在Linux系统中,可以通过命令`cat /etc/resolv.conf`查看DNS缓存。
象刚豪
回复在Linux系统中,可以使用`systemd-resolved DNS缓存查询命令 `nscd -c 或使用`/etc/resolv.db 文件查看DNS解析记录来检查系统的域名系统(Domain Name System)的本地主机名映射信息。