dnsmasq返回(false)DNSSECvalidation的“假”结果

我正在运行一个名为dnsmasq (版本2.72-3+deb8u1 )的DNSSECvalidationDNSparsing程序的本地Debian 8.1安装。

如果它无法validation启用了DNSSEC的域,则将其设置为返回SERVFAIL ,即,如果域具有DNSSEC条目,则必须正确validation才能将其转发到客户端。

当我今天浏览时,我想访问IETF的相当着名的网站,但是我不能,因为域名无法解决。 我检查命令行来validation这一点,我得到了一个SERVFAIL 。 我检查了谷歌DNS服务器(8.8.8.8),并没有得到SERVFAIL但IP地址。

之后,我启用了每个DNS请求的日志logging,并检查结果。 似乎我的感觉是正确的,DNSSECvalidation失败了,即使它得到了像我从Google获得的DNS转发器的相同响应。

这里是我的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 

现在我不确定域名是否暂时configuration错误,或者我的连接被篡改,或者我的DNS服务器configuration错误,即使目前为止所有其他域名都工作正常,包括“ietf.org”(没有www)。

如果有人能帮我追查这个问题,我会感激的。

这是由于CloudFlare(IETF的CDN提供商)selectECDSAP256SHA256作为其签名algorithm。 Dnsmasq从2.69开始实现了ECDSA,但是在2015年3月发布的2.73版本之前,它已经被破解并且没有被修复。因此,你需要一个更新的dnsmasq或补丁版本来正确parsing它。

从2.73部分的dnsmasq 更改日志 :

 Fix broken DNSSEC validation of ECDSA signatures. 

从Cloudflare DSlogging集:

cloudflare.net。 86400 IN DS 2371 13 2 90F710A107DA51ED78125D30A68704CF3C0308AFD01BFCD7057D4BD0 3B62C68B

13是algorithmtypes。 DNSSEC中的每个允许的algorithm都有一个指定的数字。 algorithm13是使用SHA-256的具有P-256曲线的ECDSA。

最后, dig +trace ds www.ietf.org包含一条通过Cloudflare的CNAMElogging。

http://www.ietf.org&#x3002; 1800 IN CNAME http://www.ietf.org.cdn.cloudflare-dnssec.net&#x3002;