DNSSEC
DNSSEC 用 RRSIG/DNSKEY/DS 为 RRset 添加数字签名,让验证解析器确认数据来自合法 Zone 私钥、传输未被篡改、且能证明名称/记录不存在;整体体系由 RFC 9364 整理。
#type / concept
#status / growing
#tech / network
#protocol / dns
[!info] related notes
- 所属 MOC: DNS 知识地图
- 记录模型: 资源记录 RR 与 RRset
- 传输加密: DoT / DoH
- 排障: 负缓存与失败缓存(DNSSEC 失败也短暂缓存)
DNSSEC
一句话定义
DNSSEC(DNS Security Extensions) 为 DNS 的 RRset 添加数字签名,让验证解析器能够确认:数据来自拥有该 Zone 私钥的一方、传输后未被修改、且能证明某个名称或记录确实不存在。
核心机制 / 工作原理
关键记录
| 记录 | 作用 |
|---|---|
DNSKEY | Zone 的公钥(KSK 签发密钥、ZSK 区签名密钥) |
DS | 父区保存的子区密钥「摘要」,用于把信任从父传给孩子 |
RRSIG | 某个 RRset 的签名 |
NSEC / NSEC3 | 证明「名称不存在」或「该类型不存在」(覆盖负结论) |
信任链(Chain of Trust)
根区信任锚 (Root Trust Anchor)
↓ DS/DNSKEY
.top 的 DNSKEY
↓ DS/DNSKEY
anyrouter.top 的 DNSKEY
↓ RRSIG
anyrouter.top A RRset 的签名
验证解析器从根信任锚开始,逐层用父区的 DS 校验子区的 DNSKEY,最后用 Zone 的 DNSKEY 校验具体记录的 RRSIG。任一环对不上,验证失败。
最小例子 / 最小场景
dig +dnssec anyrouter.top A # 看 RRSIG/DNSKEY
dig anyrouter.top DS # 看父区给的摘要
若链路完整,支持验证的解析器会标 ad(authenticated data)标志。
边界与易混淆点
- DNSSEC 不提供查询保密:旁观者仍能看到「你查了 anyrouter.top」。保密是 DoH/DoT/DoQ 的事(见 dns-over-https-doh)。
- DNSSEC 不保证业务正确:若运营者错误地签名了
anyrouter.top → 错误 IP,DNSSEC 只会证明「这个错误答案确实由该 Zone 签发」——它验证来源,不验证内容对不对。 - 与 DoH/TLS/ECH 是不同层面的保护,互补而非替代:
| 技术 | 保护内容 |
|---|---|
| DNSSEC | 数据来源真实性与完整性 |
| DoH/DoT/DoQ | 客户端↔递归解析器传输机密性与完整性 |
| HTTPS/TLS | 浏览器↔网站通信 |
| ECH | TLS ClientHello 中的 SNI 等信息 |
- DNSSEC 验证失败会被短暂缓存(见 dns-negative-failure-caching),可能延迟恢复。
- 部署要求父区支持 DS 上传(即注册局/注册商侧开启 DNSSEC),常因注册商不支持而被卡住。