跳到主要内容

DNS 编码速查表

OxiDNS 在 qtypeqclassrcode matcher 以及 reject [rcode] 等配置中,通常同时支持十进制数字和英文助记名。英文助记名大小写不敏感,例如 SERVFAILservfailServFail 都可以表示同一个 RCODE。

未知或未来扩展的 QTYPEQCLASSRCODE 可以在 matcher 中使用十进制数字匹配。reject [rcode] 是例外:它只能生成基础 DNS RCODE 0..15,不会自动生成需要 EDNS OPT 表示的扩展 RCODE。

RCODE 响应码

数字Code 表示意义
0NOERROR查询成功,响应没有错误。没有答案时通常表示 NODATA,而不是域名不存在。
1FORMERR请求格式错误,服务器无法解析请求。
2SERVFAIL服务器处理失败,常见于上游故障、验证失败或内部错误。
3NXDOMAIN域名不存在。
4NOTIMP服务器不支持请求的操作。
5REFUSED服务器拒绝处理请求,常用于策略拒绝或权限限制。
6YXDOMAINDNS UPDATE 中使用:本不应存在的名称已经存在。
7YXRRSETDNS UPDATE 中使用:本不应存在的 RRSet 已经存在。
8NXRRSETDNS UPDATE 中使用:应存在的 RRSet 不存在。
9NOTAUTH服务器对该区域不具权威性,或操作未授权。
10NOTZONE名称不属于指定区域。
11..15未分配基础 RCODE 保留空段。reject 可接受这些数字,但通常不建议用于常规策略。
16BADVERS / BADSIGEDNS 中表示 OPT 版本错误;TSIG 中表示签名失败,具体含义取决于上下文。
17BADKEYTSIG/TKEY key 无法识别。
18BADTIMETSIG 签名时间窗口不合法。
19BADMODETKEY 模式错误。
20BADNAMETKEY 名称重复或不合法。
21BADALG算法不支持。
22BADTRUNCTSIG 截断错误。
23BADCOOKIEEDNS Cookie 缺失或错误。

常见策略写法:

- matches: "rcode SERVFAIL,3"
exec: "forward 8.8.8.8"

- matches: "qname domain:blocked.example"
exec: "reject NXDOMAIN"

QCLASS 查询类别

数字Code 表示意义
1INInternet,绝大多数普通 DNS 查询都使用这个类别。
2CSCSNET,历史类别,现已很少使用。
3CHCHAOS,常见于少量诊断查询。
4HSHesiod,历史类别。
254NONEDNS UPDATE 中使用,表示没有类别。
255ANY / *任意类别,主要用于特殊查询或匹配表达。

常见策略写法:

- matches: "qclass IN"
exec: "$forward_main"

QTYPE 查询类型

数字Code 表示意义
1AIPv4 地址记录。
2NS权威名称服务器记录。
5CNAME规范名称别名记录。
6SOA区域起始授权记录,也常用于负缓存 TTL 判断。
12PTR反向解析指针记录。
15MX邮件交换记录。
16TXT文本记录,常用于 SPF、验证和策略文本。
28AAAAIPv6 地址记录。
33SRV服务定位记录。
35NAPTR命名授权指针记录,常用于服务发现。
41OPTEDNS 伪记录,不是普通资源记录。
43DSDNSSEC 委托签名记录。
46RRSIGDNSSEC 记录签名。
47NSECDNSSEC 否定证明记录。
48DNSKEYDNSSEC 公钥记录。
50NSEC3DNSSEC NSEC3 否定证明记录。
51NSEC3PARAMNSEC3 参数记录。
52TLSADANE TLSA 证书关联记录。
64SVCB服务绑定记录。
65HTTPSHTTPS 服务绑定记录。
99SPFSPF 专用记录类型;实际部署中更常见的是 TXT
249TKEY动态密钥协商记录。
250TSIG事务签名伪记录。
251IXFR增量区域传送。
252AXFR完整区域传送。
255ANY / *请求任意类型记录;实际递归解析器通常会限制或最小化响应。
256URIURI 记录。
257CAA证书颁发机构授权记录。
261RESINFO解析器信息记录。

常见策略写法:

- matches: "qtype A,AAAA,HTTPS,65"
exec: "$forward_main"

如果需要匹配表中没有列出的类型,可以直接写十进制数字;如果 OxiDNS 已内置该类型名称,也可以写对应英文助记名。