如何解决recursion中间的DNS问题?

我的DNS有一个很奇怪的问题。 我的域名( strugee.net )从某些networking无法parsing,可以从其他网站parsing。

例如,在我的家庭networking上(服务器在同一networking上):

 % dig strugee.net ; <<>> DiG 9.10.3-P4 <<>> strugee.net ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10086 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;strugee.net. IN A ;; ANSWER SECTION: strugee.net. 1800 IN A 216.160.72.225 ;; Query time: 186 msec ;; SERVER: 205.171.3.65#53(205.171.3.65) ;; WHEN: Sat Apr 16 15:42:36 PDT 2016 ;; MSG SIZE rcvd: 56 

但是,如果我login到Digital Ocean上的服务器,则该域无法parsing:

 % dig strugee.net ; <<>> DiG 9.9.5-9+deb8u3-Debian <<>> strugee.net ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 58551 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;strugee.net. IN A ;; Query time: 110 msec ;; SERVER: 2001:4860:4860::8844#53(2001:4860:4860::8844) ;; WHEN: Sat Apr 16 18:44:25 EDT 2016 ;; MSG SIZE rcvd: 40 

但是 ,直接进入权威的域名服务器工作得很好:

 % dig @dns1.registrar-servers.com strugee.net ; <<>> DiG 9.9.5-9+deb8u3-Debian <<>> @dns1.registrar-servers.com strugee.net ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30856 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;strugee.net. IN A ;; ANSWER SECTION: strugee.net. 1800 IN A 216.160.72.225 ;; AUTHORITY SECTION: strugee.net. 1800 IN NS dns3.registrar-servers.com. strugee.net. 1800 IN NS dns4.registrar-servers.com. strugee.net. 1800 IN NS dns2.registrar-servers.com. strugee.net. 1800 IN NS dns1.registrar-servers.com. strugee.net. 1800 IN NS dns5.registrar-servers.com. ;; Query time: 3 msec ;; SERVER: 216.87.155.33#53(216.87.155.33) ;; WHEN: Sat Apr 16 18:46:36 EDT 2016 ;; MSG SIZE rcvd: 172 

很明显,某个大型networking有问题,无法解决我的域名,但我似乎无法弄清楚在哪里。 我浏览了dig ,寻找可能有帮助的选项,但没有发现任何特别有用的内容。

我在Namecheap上既作为域名注册商也作为DNS托pipe。 我打开了DNSSEC选项。 我最近没有对我的DNS设置进行任何更改。

我怎样才能debugging这个问题,并find有问题的名称服务器?

我怎样才能debugging这个问题,并find有问题的名称服务器?

daxd5提供了一些很好的开始build议,但唯一真正的答案是你需要知道如何像recursionDNS服务器一样思考。 由于在授权层有许多错误的configuration可能会导致SERVFAIL不一致,因此您需要DNS专业或在线validation工具。

无论如何,我们的目标不是要帮助你,而是要确保你明白这个问题没有确定的答案。


在你的具体情况下,我注意到strugee.net似乎是用DNSSEC签名的区域。 这从推荐链中DSRRSIGlogging的存在是明显的:

 # dig +trace +additional strugee.net <snip> strugee.net. 172800 IN NS dns2.registrar-servers.com. strugee.net. 172800 IN NS dns1.registrar-servers.com. strugee.net. 172800 IN NS dns3.registrar-servers.com. strugee.net. 172800 IN NS dns4.registrar-servers.com. strugee.net. 172800 IN NS dns5.registrar-servers.com. strugee.net. 86400 IN DS 16517 8 1 B08CDBF73B89CCEB2FD3280087D880F062A454C2 strugee.net. 86400 IN RRSIG DS 8 2 86400 20160423051619 20160416040619 50762 net. w76PbsjxgmKAIzJmklqKN2rofq1e+TfzorN+LBQVO4+1Qs9Gadu1OrPf XXgt/AmelameSMkEOQTVqzriGSB21azTjY/lLXBa553C7fSgNNaEXVaZ xyQ1W/K5OALXzkDLmjcljyEt4GLfcA+M3VsQyuWI4tJOng184rGuVvJO RuI= dns2.registrar-servers.com. 172800 IN A 216.87.152.33 dns1.registrar-servers.com. 172800 IN A 216.87.155.33 dns3.registrar-servers.com. 172800 IN A 216.87.155.33 dns4.registrar-servers.com. 172800 IN A 216.87.152.33 dns5.registrar-servers.com. 172800 IN A 216.87.155.33 ;; Received 435 bytes from 192.41.162.30#53(l.gtld-servers.net) in 30 ms 

在我们继续之前,我们需要检查签名是否有效。 DNSViz是一个经常用于此目的的工具,它确认确实存在问题 。 图中的愤怒的红色表明你有问题,而不是把所有事情都放在一边,只是扩大左边的通知

 RRSIG strugee.net/A alg 8, id 10636: The Signature Expiration field of the RRSIG RR (2016-04-14 00:00:00+00:00) is 2 days in the past. RRSIG strugee.net/DNSKEY alg 8, id 16517: The Signature Expiration field of the RRSIG RR (2016-04-14 00:00:00+00:00) is 2 days in the past. RRSIG strugee.net/DNSKEY alg 8, id 16517: The Signature Expiration field of the RRSIG RR (2016-04-14 00:00:00+00:00) is 2 days in the past. RRSIG strugee.net/MX alg 8, id 10636: The Signature Expiration field of the RRSIG RR (2016-04-14 00:00:00+00:00) is 2 days in the past. RRSIG strugee.net/NS alg 8, id 10636: The Signature Expiration field of the RRSIG RR (2016-04-14 00:00:00+00:00) is 2 days in the past. RRSIG strugee.net/SOA alg 8, id 10636: The Signature Expiration field of the RRSIG RR (2016-04-14 00:00:00+00:00) is 2 days in the past. RRSIG strugee.net/TXT alg 8, id 10636: The Signature Expiration field of the RRSIG RR (2016-04-14 00:00:00+00:00) is 2 days in the past. net to strugee.net: No valid RRSIGs made by a key corresponding to a DS RR were found covering the DNSKEY RRset, resulting in no secure entry point (SEP) into the zone. (216.87.152.33, 216.87.155.33, UDP_0_EDNS0_32768_4096) 

问题很明显:您区域的签名已过期,需要刷新密钥。 您看到不一致结果的原因是因为并非所有recursion服务器都启用了DNSSECvalidation。 validation的一方正在放弃您的域名,而对于那些不正常的域名则是正常的。


编辑:康卡斯特的DNS基础设施被称为实施DNSSECvalidation,作为他们的客户之一,我可以确认,我也看到一个SERVFAIL

 $ dig @75.75.75.75 strugee.net | grep status ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 2011 

当您确实看到授权名称服务器正确响应时,您需要跟踪整个DNSparsing链。 这是从根服务器向上走下整个DNS层次结构。

 $ dig net NS ;; ANSWER SECTION: net. 172800 IN NS c.gtld-servers.net. net. 172800 IN NS f.gtld-servers.net. net. 172800 IN NS k.gtld-servers.net. ;; snipped extra servers given $ dig @c.gtld-servers.net strugee.net NS ;; AUTHORITY SECTION: strugee.net. 172800 IN NS dns2.registrar-servers.com. strugee.net. 172800 IN NS dns1.registrar-servers.com. ;; snipped extra servers again 

这基本上检查公共DNS服务器是否正在工作,并且你正在做你的DNSparsing器应该做的相同的事情。 所以你应该在数字海洋服务器上获得与上面相同的答案,除非他们的DNSparsing器出现问题:

 $ dig net NS $ dig strugee.net NS $ dig strugee.net 

如果前两个查询失败,则数字海洋方面的DNS失败。 检查你的/etc/resolv.conf并尝试查询辅助DNS服务器。 如果次要工作,只需切换parsing器的顺序,然后再试一次。