首页/网络/抓包与流量分析速查/SERVFAIL 的常见根因
应用层报文判读71 条

SERVFAIL 的常见根因

解析器无法完成解析时统一回 2:上游超时、有已知但取不到数据、DNSSEC 验证失败都可能;本地抓包只能看到表象,需结合解析器日志。

SERVFAIL 是转述的失败

服务器失败是解析器在无法完成本次解析时回给客户端的统一结果码(取值 2)。它本身并不指向某个具体故障:上游超时、上游返回不可用、验证失败、解析器自身过载都可能归结在这个码点上。因此它的正确用法是当作分流信号而不是结论——先看响应的延迟分布与查询链路形态,必要时再结合解析器自身的日志,把范围从「解析器故障」收窄到具体环节。

基本信息

适用平台Wireshark / tshark,与解析器实现无关
过滤字段dns.flags.rcode == 2
观察维度响应到达时间、是否可见上游查询、是否只有特定域名
常见根因上游超时、上游服务异常、验证失败、解析器资源不足

典型使用场景

  • 业务侧报域名解析失败,需要区分是域名问题还是解析链路问题
  • 确认失败是否只集中在少数域名,从而区分域名级与解析器级故障
  • 用响应时间判断是否为等待上游超时后的兜底回答
  • 在解析器切换或迁移前后做失败率对照
  • 为上游服务方的工单提供可量化的失败证据
  • 区分间歇性与持续性失败,指导是否立即切换备用解析器

判断线索

判断线索
dns.flags.rcode == 2
# 本地发出查询后隔数秒才收到该结果 → 多为等待上游超时
# 抓包中能同时看到解析器向上一级发起的查询 → 可进一步分层
# 同一域名间歇失败且多解析器行为不一致 → 指向解析器侧
# 只有个别域名失败、其他域名正常 → 指向该域名的上游或委派

表现与方向对照

观察表现可能根因进一步动作
数秒后统一返回失败等待上游超时核对上游可达性与超时配置
仅个别域名失败该域名委派或上游异常换解析器对照验证
所有域名同时失败解析器或出口链路异常检查解析器状态与出口连通性
失败集中在业务高峰解析器资源不足评估查询量与缓存命中率
只测一个域名无法区分解析器级故障与域名级问题,准备多个对照域名能显著提高判断准确度。
抓包显示「数秒后才返回失败」本身就是超时窗口的直接证据,但要注意两端时钟对齐,否则时间差不可用。

易错点

  • 把失败码当成根因:它只是解析器给出的兜底结论,真正的原因往往在更上一级的链路
  • 只用单个域名测试:缺少对照会把域名级问题误判为解析器故障
  • 忽略响应延迟:失败是立刻返回还是超时后返回,指向完全不同的方向
  • 不区分间歇与持续:间歇失败更适合对照切换验证,持续失败要先看解析器自身状态

数据来源与参考

  • RFC 1035
  • RFC 8914(扩展错误码)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌