首页/网络/协议速查/DNS 响应码(RCODE)
DNS 与域名解析60 条

DNS 响应码(RCODE)

解析失败先看 RCODE:SERVFAIL 多为上游/权威故障或 DNSSEC 验证失败,REFUSED 是策略拒绝,FORMERR 是报文格式问题。

协议速查网络更新于 2026-10-13

DNS 响应码是什么

RCODE 是 DNS 应答头里的四位状态字段,说明这次查询的结果类别。解析失败时先看它比什么都快:NOERROR 表示查询本身成功(答案可能为空)、NXDOMAIN 表示域名根本不存在、SERVFAIL 通常是上游或权威出问题、REFUSED 是策略拒绝。区分这几种,能立刻把排查方向缩小到一半。

基本信息

字段位置DNS 报文头的 4 位 RCODE 字段
扩展形式EDNS0 可扩展到 12 位,支持更多取值
常见取值0 NOERROR、2 SERVFAIL、3 NXDOMAIN、5 REFUSED
规范RFC 1035 §4.1.1、RFC 6895、IANA 注册表
查看方式dig 输出中的 status 字段
易混淆项NOERROR 且无答案不等于失败

典型使用场景

  • 解析失败的第一诊断步骤:先确认是域名不存在还是服务器故障
  • 排查递归器与权威的分歧:直连权威对比 RCODE 定位问题在哪一侧
  • 识别策略拒绝:内网 DNS 的 ACL 不允许递归时返回 REFUSED
  • DNSSEC 验证失败排查:验证不过常表现为 SERVFAIL
  • CDN 与 DNS 服务商的展平记录异常时,上游返回的 SERVFAIL 会透传给用户

查看与对比 RCODE

查看与对比 RCODE
dig @8.8.8.8 example.invalid +noall +comments | grep -i status
dig example.com +noall +comments | grep -i -E 'status|flags'
dig @ns1.example.com example.com A +noall +comments | grep -i status   # 直连权威对比
dig +dnssec example.com +noall +comments      # 观察 AD 标志与 status
dig +short +tries=1 example.com A            # 减少重试,看清单次结果

RCODE 逐值读法

RCODE含义常见原因
NOERROR (0)查询成功,答案可能为空记录类型不匹配时也会返回 0 且无答案
FORMERR (1)报文格式错误请求方构造异常或中间设备改写报文
SERVFAIL (2)服务器处理失败权威超时、DNSSEC 验证失败、上游故障
NXDOMAIN (3)域名不存在拼写错误、未创建记录、否定缓存
NOTIMP (4)操作未实现非常规 Opcode 或功能未开启
REFUSED (5)策略拒绝ACL 不允许递归或不允许区域传送
BADVERS (16)EDNS 版本不支持老设备遇到 EDNS0 查询
看到 NOERROR 却没有答案,不代表解析坏了:可能是查询类型不对(例如查 A 但只配了 CNAME 到别处),也可能是该名字存在但没有对应类型。要进一步看 ANSWER 与 AUTHORITY 区段的内容。
区分递归器与权威的故障:直连权威拿到正常答案而递归返回 SERVFAIL,说明问题在递归器或其 DNSSEC 验证链上;两边都 SERVFAIL 则更可能是权威本身不可达或配置错误。

易错点

  • 把 SERVFAIL 当成「域名不存在」处理:前者是服务器侧问题,后者是记录未创建,处理方向完全不同
  • 只看单次查询结果:递归器会重试,多次尝试后的结果可能掩盖首次的 RCODE
  • CDN 或 ALIAS 展平失败时只盯权威排查:这类故障往往表现为递归侧 SERVFAIL,源头在服务商的解析逻辑
  • 把 NOERROR 无答案误判为解析失败,据此去改本来正确的记录,反而制造故障

数据来源与参考

  • RFC 1035 §4.1.1
  • RFC 6895
  • IANA DNS RCODE 注册表

相关工具

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