Cloudflare Docs
Support
Support
Visit Support on GitHub
Set theme to dark (⇧+D)

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 验证进行故障排除

  1. 浏览到 http://dnsviz.net/
  2. 在显示的文本字段中输入域名。
  3. 如果 DNSViz 之前从未分析过该站点,则单击显示的分析按钮。
  4. 如果 DNSViz 之前已分析过该站点,

Screen_Shot_2018-09-18_at_10.31.54_AM.png

Screen_Shot_2018-10-16_at_2.png

Screen_Shot_2018-09-18_at_10.25.49_AM.png


​​ 后续步骤 

如果在 DNSSEC 实施中发现问题,请与域名注册商联系,确认 _DS 记录_与权威 DNS 提供商指定的内容相匹配。如果 Cloudflare 是权威 DNS 提供商,请按照 使用 Cloudflare 配置 DNSSEC 的说明进行操作。


​​ 相关资源