首页/网络/网络排障速查/DNS 服务器日志排查(query log 思路)
DNS 与解析排查46 条

DNS 服务器日志排查(query log 思路)

『部分客户端解析失败』时打开查询日志能直接看到:谁问了什么、结果是什么;用查询日志定位比盲猜有效得多(注意隐私与性能开销)。

网络排障速查网络更新于 2026-10-13

DNS 服务器日志排查是什么

『部分客户端解析失败』这类问题靠推断很难收敛,打开查询日志就能直接看到谁问了什么、得到什么结果。BIND 用 rndc querylog 临时开启查询日志,Unbound 调高 verbosity,dnsmasq 用 log-queries,systemd-resolved 则看 journal。查询日志信息密度高、见效快,但涉及内部主机名与访问轨迹,属于敏感数据,排查结束必须立即关闭并按规定清理。

基本信息

适用平台Linux 与常见 DNS 软件(BIND、Unbound、dnsmasq、systemd-resolved)
开关方式rndc querylog、verbosity、log-queries 配置项
查看位置DNS 软件自己的日志文件或 journalctl
数据属性含内部主机名与访问轨迹,属敏感数据

典型使用场景

  • 部分客户端解析异常:对照日志确认请求是否到达服务器、返回什么 rcode
  • 解析被策略拦截:确认是客户端没发查询,还是服务器返回了拒绝
  • 定位异常查询源:找出大量无效查询或扫描行为来自哪台主机
  • 验证变更是否生效:改完记录后看新查询返回是否已更新
  • 排障收尾:关闭日志并归档必要的片段作为证据

临时开启与查看

临时开启与查看
# BIND:开启查询日志,排查完成记得关闭
rndc querylog on
# 排查结束后关闭
rndc querylog off
# Unbound:提高日志级别并实时观察
unbound-control verbosity 2
journalctl -u unbound -f
# dnsmasq:需在配置中加 log-queries 后重启,再观察日志
journalctl -u dnsmasq -f
# systemd-resolved
journalctl -u systemd-resolved -f

日志内容判读

日志信息含义下一步
查询记录无对应条目请求未到达该服务器检查客户端指向与网络路径
返回 NXDOMAIN域名或记录不存在核对记录与视图配置
返回 REFUSEDACL 或策略拒绝检查 allow-query 与来源限制
查询量异常放大可能扫描或有程序异常重试定位来源并评估限速
排查完立刻关闭查询日志:忘记关闭是最常见的问题,既占用磁盘又长期留下敏感记录,还可能在合规检查中被判定为数据留存不当。
在高 QPS 的解析器上长期开启查询日志会同时压垮磁盘与 I/O 性能:只开几分钟、只针对必要的时间窗,是最稳妥的做法。

易错点

  • 在高 QPS 解析器上长期开查询日志:磁盘与 I/O 双双告急,可能引发解析整体变慢
  • 排查完忘记关闭:敏感记录长期留存,合规与安全双重风险
  • 只看服务器日志不看客户端:请求根本没发出的情况会被忽略
  • 把 REFUSED 与 NXDOMAIN 混为一谈:前者是策略拒绝,后者是记录不存在,处置完全不同
  • 日志时间与服务时间未对齐:抓包与日志无法对应,延长排查时间

数据来源与参考

  • BIND 9:rndc querylog
  • Unbound/dnsmasq 日志文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌