SERVFAIL 是转述的失败
服务器失败是解析器在无法完成本次解析时回给客户端的统一结果码(取值 2)。它本身并不指向某个具体故障:上游超时、上游返回不可用、验证失败、解析器自身过载都可能归结在这个码点上。因此它的正确用法是当作分流信号而不是结论——先看响应的延迟分布与查询链路形态,必要时再结合解析器自身的日志,把范围从「解析器故障」收窄到具体环节。
基本信息
| 适用平台 | Wireshark / tshark,与解析器实现无关 |
|---|---|
| 过滤字段 | dns.flags.rcode == 2 |
| 观察维度 | 响应到达时间、是否可见上游查询、是否只有特定域名 |
| 常见根因 | 上游超时、上游服务异常、验证失败、解析器资源不足 |
典型使用场景
- 业务侧报域名解析失败,需要区分是域名问题还是解析链路问题
- 确认失败是否只集中在少数域名,从而区分域名级与解析器级故障
- 用响应时间判断是否为等待上游超时后的兜底回答
- 在解析器切换或迁移前后做失败率对照
- 为上游服务方的工单提供可量化的失败证据
- 区分间歇性与持续性失败,指导是否立即切换备用解析器
判断线索
判断线索
dns.flags.rcode == 2
# 本地发出查询后隔数秒才收到该结果 → 多为等待上游超时
# 抓包中能同时看到解析器向上一级发起的查询 → 可进一步分层
# 同一域名间歇失败且多解析器行为不一致 → 指向解析器侧
# 只有个别域名失败、其他域名正常 → 指向该域名的上游或委派表现与方向对照
| 观察表现 | 可能根因 | 进一步动作 |
|---|---|---|
| 数秒后统一返回失败 | 等待上游超时 | 核对上游可达性与超时配置 |
| 仅个别域名失败 | 该域名委派或上游异常 | 换解析器对照验证 |
| 所有域名同时失败 | 解析器或出口链路异常 | 检查解析器状态与出口连通性 |
| 失败集中在业务高峰 | 解析器资源不足 | 评估查询量与缓存命中率 |
只测一个域名无法区分解析器级故障与域名级问题,准备多个对照域名能显著提高判断准确度。
抓包显示「数秒后才返回失败」本身就是超时窗口的直接证据,但要注意两端时钟对齐,否则时间差不可用。