什么是 DNSSEC?
DNS(域名系统)本身在设计之初并未考虑安全性,这导致了一系列攻击风险:DNS 缓存投毒、域名劫持、中间人攻击等。DNSSEC(Domain Name System Security Extensions)是一套通过数字签名对 DNS 记录进行验证的安全扩展协议,能有效防止上述攻击。
DNSSEC 解决了哪些问题?
- DNS 缓存投毒:攻击者向解析器注入虚假 DNS 记录,将用户导向恶意 IP
- 域名劫持:通过伪造权威 DNS 响应欺骗用户
- 中间人攻击:在 DNS 查询传输过程中篡改响应内容
DNSSEC 工作原理
DNSSEC 通过非对称加密(公私钥对)对 DNS 数据进行签名和验证,整个流程分为两个阶段:
1. 配置阶段(管理员操作)
- 在权威 DNS 服务商启用 DNSSEC,系统自动生成 ZSK(Zone Signing Key) 和 KSK(Key Signing Key)
- ZSK 对区域内所有 DNS 记录签名,生成 RRSIG 记录
- KSK 对 ZSK 公钥签名,生成 DNSKEY 记录
- 生成 DS 记录(公钥的加密指纹),提交至上级域(如 .com 注册局)
2. 验证阶段(用户访问时自动发生)
- 解析器向权威 DNS 请求记录,同时获取 RRSIG 签名
- 解析器从上级域获取已备案的 DS 记录
- 用 DS 记录验证 DNSKEY,再用 DNSKEY 验证 RRSIG
- 签名有效 → 接受响应;签名无效 → 拒绝连接,保护用户安全
DNSSEC 关键记录类型
| 记录类型 | 全称 | 作用 |
|---|---|---|
| DNSKEY | DNS Public Key | 存储区域公钥 |
| RRSIG | Resource Record Signature | DNS 记录的数字签名 |
| DS | Delegation Signer | 子区域 DNSKEY 的哈希,存于父区域 |
| NSEC/NSEC3 | Next Secure | 证明某记录不存在(防止枚举攻击) |
如何为域名配置 DNSSEC?
方法一:通过域名注册商/DNS 服务商一键开启
大多数主流服务商(阿里云、腾讯云、Cloudflare 等)已提供 DNSSEC 一键启用功能:
- 登录 DNS 控制台,找到目标域名
- 进入「安全」或「DNSSEC」设置页面
- 点击「启用 DNSSEC」,系统自动生成密钥并签名
- 将生成的 DS 记录提交至域名注册商(如使用同一平台则自动完成)
- 等待 DS 记录同步至根域(通常 24-48 小时生效)
方法二:自建 BIND9 配置 DNSSEC(Linux 服务器)
# 1. 生成 ZSK(区域签名密钥)
dnssec-keygen -a ECDSAP256SHA256 -n ZONE example.com
# 2. 生成 KSK(密钥签名密钥)
dnssec-keygen -a ECDSAP256SHA256 -n ZONE -f KSK example.com
# 3. 将公钥包含到区域文件
echo '$INCLUDE "/etc/bind/Kexample.com.+013+XXXXX.key"' >> /etc/bind/zones/db.example.com
# 4. 签名区域文件
dnssec-signzone -A -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) -N INCREMENT -o example.com -t db.example.com
# 5. 修改 named.conf 使用签名后的区域文件
# zone "example.com" { file "db.example.com.signed"; };
方法三:使用 Cloudflare 托管(推荐新手)
- 将域名 NS 指向 Cloudflare
- 在 DNS 页面 → 左侧「DNSSEC」→ 点击「启用」
- Cloudflare 自动生成 DS 记录,复制后粘贴至注册商
- 完成!Cloudflare 免费提供 DNSSEC + DDoS 防护
验证 DNSSEC 是否生效
# 使用 dig 查询 DNSSEC 记录
dig example.com DNSKEY +short
# 检查 DS 记录是否已提交至上级域
dig example.com DS +short
# 完整验证(确认签名有效)
dig +dnssec example.com A
# 在线工具验证
# https://dnssec-debugger.verisignlabs.com/
常见问题与注意事项
- 密钥轮换:ZSK 建议每月或每季度轮换一次,KSK 每年轮换,轮换前需提前更新 DS 记录
- TTL 设置:启用 DNSSEC 后,SOA 的 TTL 不宜过长,建议不超过 3600 秒,便于快速回滚
- 迁移注意:迁移 DNS 服务商时,需先在新服务商配置好 DNSSEC,再切换 NS,避免验证链断裂
- 兼容性:极少数老旧解析器不支持 DNSSEC,但现代浏览器和系统均已支持
- 性能影响:DNSSEC 响应包体积增大约 3-10 倍,建议配合 DNS over HTTPS (DoH) 使用
2026 年 DNSSEC 现状
根据 ICANN 统计,截至 2026 年初,全球已有超过 40% 的顶级域(TLD)启用了 DNSSEC 验证,主流国家代码域(.cn、.uk、.de 等)均已支持。随着零信任网络架构的普及,DNSSEC 与 DoH(DNS over HTTPS)、DoT(DNS over TLS)的组合使用正成为企业安全 DNS 方案的标配。
总结
DNSSEC 是保护域名解析安全的重要基础设施,配置并不复杂,却能有效阻止一大类 DNS 攻击。建议所有拥有重要域名的站长和企业尽快启用。如果你使用 Cloudflare 或阿里云,几分钟即可完成配置,没有理由不开启。