← 返回题目列表

DNSSEC 是什么?它解决了 DNS 的什么安全问题?

高频 困难 第 17 / 27 题 更新于 2026/07/31
DNSDNSSEC域名安全签名验证

简化版

DNSSEC 是 DNS 的安全扩展,通过数字签名验证 DNS 记录是否真实、未被篡改。它解决的是 DNS 响应完整性和来源可信问题,但不加密查询内容,也不能隐藏你查了哪个域名。

详细版

传统 DNS 响应容易被伪造或污染,因为客户端很难确认“这个解析结果真的是权威 DNS 给的吗”。DNSSEC 给 DNS 记录加签名,并通过从根区到 TLD 再到域名区的信任链验证。

核心概念:

  1. RRSIG:资源记录集的数字签名。
  2. DNSKEY:用于验证签名的公钥。
  3. DS:父区保存子区密钥摘要,用于建立信任链。
  4. NSEC/NSEC3:证明某个记录不存在。
  5. DNSSEC 只保证真实性和完整性,不保证机密性。

面试要强调:DNSSEC 防篡改,不防窃听;DoH/DoT 加密传输,不等于 DNSSEC。

完整版教学

一、DNSSEC 要补 DNS 的哪块短板

普通 DNS 更关注“能解析”,安全性较弱。递归解析器收到一个 IP 响应,如果没有额外验证,很难确认它是否被中间人篡改、缓存投毒或污染。

用户查询 bank.example
攻击者伪造响应:bank.example -> 6.6.6.6
客户端若无法验证,就可能访问错误 IP

DNSSEC 的目标是让解析器能验证 DNS 数据确实来自对应权威区,且中途没有被改过。

记忆钩子:DNSSEC 给 DNS 记录加“防伪签名”,但不把查询内容装进密封信封。

二、签名验证的基本流程

DNSSEC 不是给单条字符串随便签一下,而是对资源记录集 RRset 签名。解析器拿到记录、签名和公钥后验证签名。

RRset: example.com A 1.2.3.4
RRSIG: signature over RRset
DNSKEY: public key

verify(DNSKEY, RRset, RRSIG) -> valid / invalid

如果记录被改成 6.6.6.6,原签名就验证不过。攻击者除非拿到私钥,否则无法伪造有效签名。

三、信任链如何从根传下来

只验证某个区的 DNSKEY 还不够,你还要确认这把 DNSKEY 本身可信。DNSSEC 通过父区的 DS 记录把信任往下传。

Root trust anchor
  -> .com DS
    -> example.com DNSKEY
      -> example.com A + RRSIG

根区信任锚内置在验证解析器中;.com 父区发布 example.com 的 DS 摘要;解析器用 DS 校验子区 DNSKEY,再用 DNSKEY 验证具体记录。

四、NSEC/NSEC3 为什么存在

DNS 不只要证明“某记录存在且值正确”,还要证明“某记录确实不存在”。否则攻击者可以伪造 NXDOMAIN。NSEC/NSEC3 用于可验证地证明不存在。

记录作用代价
NSEC证明某名称区间内无记录可能暴露区域枚举信息
NSEC3用哈希降低枚举风险验证更复杂

例如查询 no.example.com,权威服务器返回可验证的不存在证明,解析器能确认不是中间人伪造的“域名不存在”。

五、DNSSEC 不解决哪些问题

DNSSEC 不加密 DNS 查询。旁路观察者仍可能看到你查询了哪个域名。它也不保证解析出的 IP 一定是安全服务器,只能保证这是域名所有者发布的记录。

DNSSEC 能保证:
  example.com A 1.2.3.4 没被篡改

DNSSEC 不能保证:
  1.2.3.4 上的网站没有漏洞
  旁观者看不到你查了 example.com

想加密查询链路,要看 DoH/DoT;想验证网站身份,要看 HTTPS 证书链。

六、部署和故障风险

DNSSEC 部署不当会让域名解析失败。比如 DS 记录和子区 DNSKEY 不匹配、签名过期、密钥轮换错误,验证解析器会把结果判为 bogus。

问题现象排查方向
签名过期支持 DNSSEC 的解析器失败检查 RRSIG 有效期
DS 不匹配整个子区验证失败父区 DS 与 DNSKEY
密钥轮换错误部分地区解析异常KSK/ZSK 轮换流程
未签区被当签名区验证链断裂DS 配置

所以 DNSSEC 是安全增强,但需要严谨运维。

七、常见误区与追问

  • 误区:DNSSEC 会加密 DNS 请求。 DNSSEC 提供签名验证,不加密传输内容。
  • 误区:有 HTTPS 就不需要 DNSSEC。 HTTPS 验证服务器身份,DNSSEC 验证解析记录未被篡改,层次不同。
  • 误区:DNSSEC 只要开关打开就行。 DS、DNSKEY、签名有效期和密钥轮换都可能出故障。
  • 追问:DNSSEC 能防 DNS 污染吗? 能让验证解析器发现伪造结果无效,但不能阻止网络层拦截或丢包。
  • 追问:DS 记录有什么用? 父区用 DS 记录绑定子区 DNSKEY,形成信任链。
  • 追问:NSEC/NSEC3 解决什么? 用可验证方式证明某个名称或记录不存在。

八、加强记忆

DNSSEC 按“签名 + 信任链 + 不加密”记:RRSIG 验记录没被改,DNSKEY/DS 建立从根到子区的信任链,NSEC/NSEC3 证明不存在;它防篡改,不防窃听。