NXDOMAIN 是什么
NXDOMAIN 对应响应码 3,表示所查询的名字在权威数据中不存在。它有三类常见来源:用户或程序把域名拼错;记录被删除或尚未创建;终端在搜索域补全、CDN 探测与安全扫描时发出的大量无意义查询。大量 NXDOMAIN 会拖慢页面首屏,因为每次失败都要等一个响应才能继续,同时也会污染解析日志与失败率指标。排查思路是先按查询名聚集,把预期内的噪音与真正的拼写错误、配置遗漏区分开来。
基本信息
| 响应码 | 3(NXDOMAIN,名字不存在) |
|---|---|
| 抓包字段 | dns.flags.rcode == 3 |
| 常见来源 | 拼写错误、记录被删、搜索域补全、子域探测 |
| 性能影响 | 每次失败都要等待响应,首屏与重试逻辑变慢 |
| 相关机制 | 否定结果同样会被解析器缓存 |
典型使用场景
- 首屏变慢排查:确认是否存在大量等待失败响应的查询
- 配置核查:上线后发现解析不到,先确认记录是否真的存在
- 噪音识别:搜索域补全与探测类查询会产生预期内的失败结果
- 安全观察:子域扫描会造成失败查询的尖峰
- 日志治理:把无意义的失败查询从故障指标中剔除
聚集与观察
聚集与观察
tshark -r dns.pcap -Y 'dns.flags.rcode == 3' -T fields -e dns.qry.name \
| sort | uniq -c | sort -rn | head
# 按查询名聚集,区分预期噪音与真实错拼
# 再看来源地址分布:集中还是分散来源与处置
| 来源 | 特征 | 处置 |
|---|---|---|
| 拼写错误 | 集中在个别名称且长期重复 | 修正配置或代码中的域名 |
| 记录缺失 | 与变更时间点吻合 | 补齐记录并预留否定缓存时间 |
| 搜索域补全 | 名称带单标签或半截域名 | 统计时按特征剔除 |
| 子域扫描 | 来源分散、名称无规律 | 纳入安全告警而不是故障指标 |
否定结果同样会被缓存:记录修改之后,在否定缓存有效期内仍可能继续返回名字不存在,这属于预期行为,不要当成配置没有生效。
判断失败查询是否异常,先看来源分布:单一来源反复失败更像配置问题,来源分散且名称随机的查询更接近扫描行为。