DNSSEC 故障排除
DNSSEC 故障排除
DNSSEC 可保护 DNS。 本文讨论如何检测影响 DNS 解析的 DNSSEC 问题。
本文内容
使用 Dig 测试 DNSSEC
Dig 是一个命令行工具,用于查询 DNS 记录的域名服务器。例如,dig 可以向 DNS 解析器请求 www.cloudflare.com 的 IP 地址(选项 + short 仅输出结果):
$ dig www.cloudflare.com +short198.41.215.162198.41.214.162
使用 dig 验证 DNSSEC 记录。 在下面的示例中,
$ dig www.cloudflare.com +dnssec +short198.41.214.162198.41.215.162A 13 3 300 20180927180434 20180925160434 35273 cloudflare.com.DYYZ/bhHSAIlpvu/HEUsxlzkC9NsswbCQ7dcfcuiNBrbhYV7k3AI8t46 QMnOlfhwT6jqsfN7ePV6Fwpym3B0pg==
查询根域的公共密钥,而不是子域的公共密钥:
$ dig DNSKEY cloudflare.com +short257 3 13 mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+ KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==256 3 13 koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z 1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==
DNS 响应包括两个记录:
- DNSKEY 记录 256 是名为“区域签名密钥”的公共密钥,用于验证 A、MX、CNAME、SRV 等的 DNS 记录签名。
当 + short 选项未与 dig 一起使用时,如果响应标头中出现 ad 标志,则 DNS 响应将通过 DNSSEC 进行身份验证:
$ dig www.cloudflare.com[...];; ->>HEADER<<- opcode:QUERY, status:NOERROR, id:65326;; flags: qr rd ra ad; QUERY:1, ANSWER:2, AUTHORITY:0, ADDITIONAL:1 [...] ;; QUESTION SECTION: ;www.cloudflare.com. IN A [...] ;; ANSWER SECTION: www.cloudflare.com.15 IN A 198.41.215.162 www.cloudflare.com.15 IN A 198.41.214.162
使用 Dig 查看 DNSSEC 信任链
域签名(例如:cloudflare.com)的完整验证涉及验证顶级域(例如:.com)的密钥签名密钥。 然后
启用 DNSSEC 后,注册商的 DNS 需要 DS 记录。_DS 记录_包含公共密钥签名密钥的哈希以及密钥的元数据。
使用 dig 查找 DS 记录:
$ dig +short DS cloudflare.com2371 13 2 32996839A6D808AFE3EB4A795A0E6A7A39A76FC52FF228B22B76F6D6 3826F2B9
dig 将确认答案是 返回:
$ dig DS cloudflare.com +trace[...]cloudflare.com. 86400 IN DS 2371 13 2 32996839A6D808AFE3EB4A795A0E6A7A39A76FC52FF228B22B76F6D6 3826F2B9[...]com. 172800 IN NS e.gtld-servers.net.[...];; Received 1213 bytes from 2001:502:1ca1::30#53(e.gtld-servers.net) in 37 ms
与手动运行上述所有步骤相比,更简单的替代方法是使用 DNSViz 在线工具。请参阅 使用 DNSViz 对 DNSSEC 验证进行故障排除的详细信息或 通过 DNSViz 获取 cloudflare.com 的 DNSSEC 结果的示例。
使用 Dig 对 DNSSEC 验证进行故障排除
如果更改权威 DNS 提供商而不更新或删除注册商中的旧 DNSSEC 记录,则会出现问题:
$ dig A brokendnssec.net @1.0.0.1;; flags: qr rd ra; QUERY:1, ANSWER:0, AUTHORITY:0, ADDITIONAL:0;; ->>HEADER<<- opcode:QUERY, status:SERVFAIL, id:10663
$ dig A brokendnssec.net @1.0.0.1 +dnssec +cd +short104.20.49.61104.20.48.61
在上面的示例中,如果在使用 +cd 选项时收到正确的 DNS 响应,但使用 DNSSEC 的查询返回 SERVFAIL 响应_,则说明 DNSSEC 配置错误。_ 当权威域名服务器发生更改但 _DS 记录_未更新时,通常会发生此问题。 如果攻击者试图伪造对查询的响应,也会发生此问题。
使用 DNSViz 对 DNSSEC 验证进行故障排除
- 浏览到 http://dnsviz.net/
- 在显示的文本字段中输入域名。
- 如果 DNSViz 之前从未分析过该站点,则单击显示的分析按钮。
- 如果 DNSViz 之前已分析过该站点,
后续步骤
如果在 DNSSEC 实施中发现问题,请与域名注册商联系,确认 _DS 记录_与权威 DNS 提供商指定的内容相匹配。如果 Cloudflare 是权威 DNS 提供商,请按照 使用 Cloudflare 配置 DNSSEC 的说明进行操作。