com*_*eak 3 dnssec dnsmasq debian-jessie
我正在使用名为dnsmasq(version 2.72-3+deb8u1)的 DNSSEC 验证 DNS 解析器运行本地 Debian 8.1 安装。
我将它设置SERVFAIL为在无法验证启用 DNSSEC 的域时返回 a ,即如果域具有 DNSSEC 条目,则它必须正确验证才能转发到客户端。
当我今天浏览时,我想访问IETF相当有名的站点,但我无法访问,因为无法解析域。我检查了命令行以验证这一点,我确实得到了一个SERVFAIL. 我检查了谷歌 DNS 服务器(8.8.8.8),SERVFAIL但没有得到 IP 地址。
之后,我为每个 dns 请求启用日志记录并检查结果。看来我的感觉是对的,DNSSEC 验证失败了,尽管它从 DNS 转发器得到了与我从 Google 得到的相同的响应。
这里是 my 的相应行syslog:
Sep 5 13:27:13 dnsmasq: query[A] www.ietf.org from 192.168.1.10
Sep 5 13:27:13 dnsmasq: forwarded www.ietf.org to 81.3.21.188
Sep 5 13:27:13 dnsmasq: forwarded www.ietf.org to 178.63.73.246
Sep 5 13:27:13 dnsmasq: dnssec-query[DNSKEY] ietf.org to 81.3.21.188
Sep 5 13:27:13 dnsmasq: dnssec-query[DS] ietf.org to 81.3.21.188
Sep 5 13:27:13 dnsmasq: dnssec-query[DNSKEY] org to 81.3.21.188
Sep 5 13:27:13 dnsmasq: dnssec-query[DS] org to 81.3.21.188
Sep 5 13:27:13 dnsmasq: dnssec-query[DNSKEY] . to 81.3.21.188
Sep 5 13:27:13 dnsmasq: reply . is DNSKEY keytag 1518
Sep 5 13:27:13 dnsmasq: reply . is DNSKEY keytag 19036
Sep 5 13:27:13 dnsmasq: reply org is DS keytag 21366
Sep 5 13:27:13 dnsmasq: reply org is DS keytag 21366
Sep 5 13:27:13 dnsmasq: reply org is DNSKEY keytag 19629
Sep 5 13:27:13 dnsmasq: reply org is DNSKEY keytag 21366
Sep 5 13:27:13 dnsmasq: reply org is DNSKEY keytag 9795
Sep 5 13:27:13 dnsmasq: reply org is DNSKEY keytag 12023
Sep 5 13:27:13 dnsmasq: reply ietf.org is DS keytag 45586
Sep 5 13:27:13 dnsmasq: reply ietf.org is DS keytag 45586
Sep 5 13:27:13 dnsmasq: reply ietf.org is DNSKEY keytag 45586
Sep 5 13:27:13 dnsmasq: reply ietf.org is DNSKEY keytag 40452
Sep 5 13:27:13 dnsmasq: dnssec-query[DNSKEY] cloudflare-dnssec.net to 81.3.21.188
Sep 5 13:27:13 dnsmasq: dnssec-query[DS] cloudflare-dnssec.net to 81.3.21.188
Sep 5 13:27:13 dnsmasq: dnssec-query[DNSKEY] net to 81.3.21.188
Sep 5 13:27:13 dnsmasq: dnssec-query[DS] net to 81.3.21.188
Sep 5 13:27:13 dnsmasq: reply net is DS keytag 35886
Sep 5 13:27:13 dnsmasq: reply net is DNSKEY keytag 45464
Sep 5 13:27:13 dnsmasq: reply net is DNSKEY keytag 35886
Sep 5 13:27:13 dnsmasq: reply cloudflare-dnssec.net is DS keytag 537
Sep 5 13:27:13 dnsmasq: reply cloudflare-dnssec.net is BOGUS DNSKEY
Sep 5 13:27:13 dnsmasq: validation result is BOGUS
Sep 5 13:27:13 dnsmasq: reply www.ietf.org is <CNAME>
Sep 5 13:27:13 dnsmasq: reply www.ietf.org.cdn.cloudflare-dnssec.net is 104.20.0.85
Sep 5 13:27:13 dnsmasq: reply www.ietf.org.cdn.cloudflare-dnssec.net is 104.20.1.85
Run Code Online (Sandbox Code Playgroud)
现在我不确定域是暂时配置错误还是我的连接被篡改或者我的 DNS 服务器配置错误,即使到目前为止所有其他域都运行良好,包括“ietf.org”(没有 www)。
如果有人可以帮助我追踪问题,我将不胜感激。
小智 5
这是由于 CloudFlare(IETF 的 CDN 提供商)选择 ECDSAP256SHA256 作为其签名算法。Dnsmasq 从 2.69 开始实施 ECDSA,但是它被破坏并且直到 2015 年 3 月发布的 2.73 才被修复。因此,您需要更新的 dnsmasq 或修补版本才能正确解决它。
来自2.73 部分的 dnsmasq更改日志:
Fix broken DNSSEC validation of ECDSA signatures.
Run Code Online (Sandbox Code Playgroud)
来自 Cloudflare DS 记录集:
cloudflare.net。86400 在 DS 2371 13 2 90F710A107DA51ED78125D30A68704CF3C0308AFD01BFCD7057D4BD0 3B62C68B
13 是算法类型。DNSSEC 中每个允许的算法都有一个指定的编号。算法 13 是 ECDSA,具有使用 SHA-256 的 P-256 曲线。
最后dig +trace ds www.ietf.org包括通过 Cloudflare 的 CNAME 记录。
www.ietf.org。1800 IN CNAME www.ietf.org.cdn.cloudflare-dnssec.net。