我有一个域名的DNS服务器设置为注册商的一个权威的DNS服务器。 但是,域的那些DNS服务器区域文件具有不同的NSlogging集。 一些DNS服务器将请求快速传递给区域文件中设置的NS服务器; 但是,其他一些(如Google,Level 3和OpenDNS的公共DNS服务器)不能正确parsinglogging。 他们返回正确的NSlogging,但在副委托的DNS服务器上的Alogging请求没有被返回。 我在下面提供了大量的输出。 但其要点是,这些请求没有被引用到我在QUICKROUTEDNS.COM设置的NSlogging中,这些logging是指向Amazon的云DNS的NSlogging。 而是在QUICKROUTEDNS.COM停止请求。 那么,如何指示DNS服务器继续将其查询作为其域名的权威,而不必在注册商处更改DNSlogging呢?
这是一个例子:
域名在注册商处的DNSlogging:
Name Server: NS1.QUICKROUTEDNS.COM Name Server: NS2.QUICKROUTEDNS.COM Name Server: NS3.QUICKROUTEDNS.COM
提取域的NSlogging(权威DNS,QUICKROUTEDNS.COM,将这些服务器设置为NSlogging):
$ host -t NS domain.com domain.com name server ns-1622.awsdns-10.co.uk. domain.com name server ns-1387.awsdns-45.org. domain.com name server ns-774.awsdns-32.net. domain.com name server ns-48.awsdns-06.com.
来自托pipe域的Amazon DNS服务器的Alogging:
$ host www.domain.com ns-1387.awsdns-45.org Using domain server: Name: ns-1387.awsdns-45.org. Address: 205.251.197.107#53 Aliases: www.domain.com has address 201.201.201.201
然而,当我从任何名字服务器请求它时:
$ host www.domain.com 8.8.8.8 Using domain server: Name: 8.8.8.8 Address: 8.8.8.8#53 Aliases: Host www.domain.com not found: 3(NXDOMAIN)
这在几乎每个DNS服务器中都是一致的,尽pipe有一些FEW会按预期报告Alogging。
当试图拉Alogging时,这是一个dig + trace输出:
$ dig @8.8.8.8 www.domain.com A +trace ; <<>> DiG 9.8.3-P1 <<>> @8.8.8.8 www.domain.com A +trace ; (1 server found) ;; global options: +cmd . 1341 IN NS m.root-servers.net. . 1341 IN NS j.root-servers.net. . 1341 IN NS a.root-servers.net. . 1341 IN NS d.root-servers.net. . 1341 IN NS f.root-servers.net. . 1341 IN NS c.root-servers.net. . 1341 IN NS b.root-servers.net. . 1341 IN NS e.root-servers.net. . 1341 IN NS i.root-servers.net. . 1341 IN NS h.root-servers.net. . 1341 IN NS g.root-servers.net. . 1341 IN NS l.root-servers.net. . 1341 IN NS k.root-servers.net. ;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 58 ms net. 172800 IN NS a.gtld-servers.net. net. 172800 IN NS e.gtld-servers.net. net. 172800 IN NS c.gtld-servers.net. net. 172800 IN NS b.gtld-servers.net. net. 172800 IN NS g.gtld-servers.net. net. 172800 IN NS i.gtld-servers.net. net. 172800 IN NS j.gtld-servers.net. net. 172800 IN NS k.gtld-servers.net. net. 172800 IN NS h.gtld-servers.net. net. 172800 IN NS f.gtld-servers.net. net. 172800 IN NS d.gtld-servers.net. net. 172800 IN NS m.gtld-servers.net. net. 172800 IN NS l.gtld-servers.net. ;; Received 503 bytes from 192.36.148.17#53(192.36.148.17) in 586 ms domain.com. 172800 IN NS ns1.quickroutedns.com. domain.com. 172800 IN NS ns2.quickroutedns.com. domain.com. 172800 IN NS ns3.quickroutedns.com. ;; Received 153 bytes from 192.55.83.30#53(192.55.83.30) in 790 ms domain.com. 3600 IN SOA cns1.atlantic.net. noc.atlantic.net. 2016033004 28800 7200 604800 3600 ;; Received 88 bytes from 69.16.156.227#53(69.16.156.227) in 712 ms
正如我们所看到的,它只能到达QUICKROUTEDNS.COM域名服务器,而不会从Amazon域名服务器请求。 那么,如何告诉DNS服务器从Amazon服务器获取查询,而不是在QuickRouteDNS.COM停止?
这里真的有两个问题,他们直接相互矛盾:
DNS区域中的每个代表团都必须比上一代更具体。 换句话说,您可以委托子域名,但不能重新委派已经委托给您的服务器的完全相同的名称。 正确的解决scheme是在注册商级别更改您正在尝试避免的configuration。
你现在所拥有的是一种常见的错误configuration,称为NSlogging不匹配,给人的印象是这个devise是可以实现的。 下面是对正在发生的事情的解释,但是如果没有很好地理解DNS概念,将会是一个挑战。 如果我失去了你,请认为理所当然的是纠正注册商数据是解决你的问题的正确方法。
为了说明,下面是两个示例区域片段:
$ORIGIN example.com @ 2941 IN SOA ns1.example.com. someone.example.com. ( 2015071001 ; serial 7200 ; refresh (2 hours) 900 ; retry (15 minutes) 7200000 ; expire (11 weeks 6 days 8 hours) 3600 ; minimum (1 hour) ) @ IN NS ns1 @ IN NS ns2 sub IN NS ns1.contoso.com. sub IN NS ns2.contoso.com.
在contoso.com域名服务器上:
$ORIGIN sub.example.com. @ 2941 IN SOA ns1.sub.example.com. someone.contoso.com. ( 2015071001 ; serial 7200 ; refresh (2 hours) 900 ; retry (15 minutes) 7200000 ; expire (11 weeks 6 days 8 hours) 3600 ; minimum (1 hour) ) @ IN NS bagel.contoso.com. @ IN NS bacon.contoso.com.
以上两个区域中的哪个NSlogging对于sub.example.com是否具有权威性? 如果你认为它是ns1和ns2.contoso.com ,你会错的。 与stream行的观点相反,执行委派的域名服务器不被认为是用于定义该委托的NSlogging的权威。 授权定义由代表处的接收端的区域拥有。
我们已经确定bacon和bagel是权威的。 这里不太明显的是,名人们不一定会马上意识到这一点。 代表团是善意的,最初假定接受委派的服务器是权威的。 只有当这些NSlogging被刷新时,脑损伤才会发生。 刷新可以由许多事情触发,从委托NSlogging的TTL过期到显式请求这些NSlogging的值。 一旦NSlogging被覆盖,新服务器就会被使用。
综上所述,在注册服务商定义的域名服务器开始使用的初始阶段,随后是使用第二组域名服务器的阶段。 在第一个阶段,只有第二组服务器上存在的logging将会失败。 在第二阶段,只有第一组服务器上存在的logging将失败。
这可能听起来像问题最终会解决(只是等待一切刷新),但是这绝不会发生。 人们将重新启动他们的名称服务器,清除caching,或站起来新的名称服务器。 您的域名将存在一个不一致的状态,直到NSlogging一致。 DNS大师可以做一些有趣的事情,但这种types的configuration有效的用例是less之又less。 普通用户应该不惜一切代价避免冲突的域名服务器定义。
说:“我有一个域名的DNS服务器设置为注册商的一个权威的DNS服务器集合,但是这些域名的DNS服务器区域文件有一个不同的NSlogging集。 意味着你创build了一个蹩脚的委派。 你可以在这里停下来,因为没有任何东西可以正确地使用这种设置,所以不要这样做!
排除故障的有用工具: http : //dnsviz.net/和https://www.zonemaster.net/
2件事情:
host进行故障排除,只能dig (但是@something和+ trace是矛盾的)