DNSSEC通过为RRset添加RRSIG数字签名、发布DNSKEY和DS记录构建信任链,并要求客户端启用验证,实现防篡改;需严格时间同步与密钥轮换。

DNSSEC 不是直接修改 A、CNAME 等记录本身,而是为这些记录添加可验证的数字签名,让解析器能确认“收到的响应确实来自该域名的权威服务器,且中途没被改过”。它通过签名、密钥发布和信任链三步闭环实现防篡改。
对现有记录做整体签名,不是单条加密
DNSSEC 保护的是资源记录集(RRset),即相同名称+相同类型的记录组合。比如 example.com 的三个 AAAA 记录会被打包成一个 RRset,再用私钥统一签名,生成一条 RRSIG 记录。解析器要验证,就必须一次性获取全部 AAAA 记录和对应的 RRSIG,缺一不可。单独查一条 AAAA 是无法完成验证的。
密钥必须公开发布,供验证方使用
签名用的公钥(ZSK)必须作为 DNSKEY 记录发布在权威服务器上;而用于验证该 DNSKEY 本身的更高层密钥摘要,则以 DS 记录形式提交到父区域(如 .com 注册局)。这样就形成了从根→TLD→你的域名的逐级信任链。没有 DNSKEY,解析器拿不到公钥;没有 DS,递归服务器无法确认你发布的 DNSKEY 是否可信。
客户端必须启用验证,否则签名形同虚设
只在权威服务器端签名远远不够。Windows 客户端需运行 Set-DnsClientGlobalSetting -EnableDnsSecValidation $true;Linux 上的 Unbound 或 BIND 需开启 dnssec-validation auto;。验证成功时,dig +dnssec example.com 返回结果中会出现 ad(Authenticated Data)标志。若无此标志,说明链路某处未启用或验证失败。
运维关键点:时间同步与密钥轮换不能忽略
RRSIG 记录含有效期字段(Inception/Expiration),系统时间偏差超过 5 分钟就会导致验证失败。所有参与 DNSSEC 的设备(权威服务器、递归服务器、客户端)必须严格 NTP 同步。ZSK 建议每 90 天轮换一次,KSK 每年轮换;旧密钥需保留至其签名全部过期,避免验证中断。











