OPT 是什么
OPT(TYPE 41)是 EDNS(0) 的伪记录:它不是真正的资源记录,只出现在报文的附加区,用来协商 UDP 报文大小、携带 DNSSEC 的 DO 位,并承载各种扩展选项(客户端子网 ECS、DNS Cookie、扩展错误 EDE 等)。它不写入区域文件,也不参与区域传输(RFC 6891)。
基本信息
| 类型 | OPT(TYPE 41,伪记录) |
|---|---|
| 位置 | 报文附加区,不进入区域文件 |
| 字段 | 请求者 UDP 载荷大小(CLASS 位)、扩展 RCODE 与标志(含 DO 位)、选项列表 |
| 规范 | RFC 6891(EDNS0) |
| 注意 | 不缓存、不用于区域传输 |
| 常见载荷 | 1232 字节,用于避免 IP 分片 |
典型使用场景
- 排障「加 +dnssec 就超时」:EDNS 协商或 UDP 分片问题
- 权威与递归服务器配置:调整 UDP 载荷上限与选项支持
- 解析生态观察:ECS 对 CDN 就近调度的影响
- 协议学习:理解 DO 位与扩展 RCODE 的作用
- 安全加固:用 DNS Cookie 提升应答的可信度
- 排障提速:用扩展错误码定位验证失败的具体原因
观察 EDNS 协商
观察 EDNS 协商
# 查看附加段里的 OPT 伪记录
dig +noall +additional example.com A
# ; EDNS: version: 0, flags: do; udp: 1232
# udp: 1232 是当前推荐的安全载荷,尽量避免触发 IP 分片
# 故意用较小载荷观察回退行为
dig +bufsize=512 +dnssec example.com AEDNS 常见选项
| 选项 | 用途 | 典型现象 |
|---|---|---|
| UDP 载荷 | 协商单报文可接收的大小 | 设太大容易分片丢包 |
| DO 位 | 请求 DNSSEC 记录 | 与 dig 的 +dnssec 对应 |
| ECS | 携带客户端子网信息 | 影响 CDN 就近调度与隐私 |
| Cookie | 防伪造与放大攻击 | 提升应答可信度 |
| EDE | 扩展错误码 | 明确指出验证失败的原因 |
经典症状是「普通查询正常、加 +dnssec 就超时」:多为链路对较大 UDP 报文处理有问题,把载荷上限压到 1232 字节可规避多数分片问题。
老防火墙或 NAT 设备可能直接丢弃带 EDNS 选项的报文,导致解析随机失败;排障时用 dig 对比有无 EDNS 的结果最直接。
OPT 的 TTL 字段被借用来表示扩展 RCODE 与版本信息,解读报文时不能按普通记录的 TTL 含义理解。
递归与权威两侧都需要支持 EDNS;只有一侧开启时协商会退化为传统 512 字节载荷,DNSSEC 应答只能走 TCP 重试,延迟明显上升。