有Alogging和NSlogging的子域是否有效?

假设我拥有example.com

然后我在test.example.com上创build一个Alogging到1.1.1.1

然后我在ns1.anotherdnshost.com上创buildNSlogging到ns1.anotherdnshost.com

在另一个DNS主机上,我为根( test.example.com )添加一个Alogging到2.2.2.2

当客户端查询test.example.com ,哪条logging会被返回? 哪一个会更“主导” Alogging? 这样的设置是否有效?

这是无效的,不。 它可能会返回1.1.1.1,因为它会被parsing的第一个服务器返回,但“正确的”值应该是任何名称服务器被注册为SOAlogging的主服务器。 但是,返回的内容可能取决于运行哪个版本的名称服务器软件。 如下所示,它只会将其转发到下一个名称服务器,并且1.1.1.1将永远不会显示。

现在在您的区域列出其他NSlogging是正确的,但另一个NS应该是具有相同区域的名称服务器。 但是,您可以将您的子域名指向备用名称服务器。

因此,您的注册商example.com指向ns1.example.com和ns2.example.com,并使用注册商名称服务器(glue)中的1.2.3.4和2.3.4.5 IP。

然后,您将有一个SOAselectns1或ns2作为主要的区域,然后您将有两个NSlogging指向ns1.example.com和ns2.example.com与Alogging该域(和mx,txt ,cname等)。

NS1和NS2.example.com都应该有相同的区域,它们应该自动复制到对方。

现在它是有效的,拿test.example.com,并指向ns1.somethingelse.com和ns2.somethingelse.com,但没有一个loggingtest.example.com ns1和ns2.example.com的名称服务器,除ns1和ns2.example.com应该自动发送ns1和ns2.somethingelse.com的IP,如果它有胶水的话。 (如果TLD不同,即.com和.org)

我希望大家都有道理,如果有任何混淆,我可以澄清一些。

以下是对发生的事情的testing:

在shadowrpg.net的名称服务器上:

 $ttl 38400 @ IN SOA shell2.reganw.com. root.shell2.reganw.com. ( 1298345653 10800 3600 604800 38400 ) @ IN NS shell2.reganw.com. test.shadowrpg.net. IN A 127.0.0.1 test.shadowrpg.net. IN NS saber.reganw.com. 

在test.shadowrpg.net的名称服务器(军刀)上:

 $ttl 38400 @ IN SOA saber.reganw.com. root.shell2.reganw.com. ( 1298345653 10800 3600 604800 38400 ) @ IN NS saber.reganw.com. test.shadowrpg.net. IN A 127.0.0.2 test.shadowrpg.net. IN NS saber.reganw.com. 

第一个结果是用saber没有configuration,来显示引用。

 [regan@gamma ~]$ dig +trace test.shadowrpg.net ; <<>> DiG 9.7.3-P1-RedHat-9.7.3-2.P1.fc13 <<>> +trace test.shadowrpg.net ;; global options: +cmd . 518400 IN NS G.ROOT-SERVERS.NET. . 518400 IN NS C.ROOT-SERVERS.NET. (snip) ;; Received 512 bytes from 127.0.0.1#53(127.0.0.1) in 2 ms net. 172800 IN NS a.gtld-servers.net. net. 172800 IN NS m.gtld-servers.net. (snip) ;; Received 493 bytes from 199.7.83.42#53(199.7.83.42) in 55 ms shadowrpg.net. 172800 IN NS ns1.reganw.com. shadowrpg.net. 172800 IN NS ns2.reganw.com. shadowrpg.net. 172800 IN NS ns3.reganw.com. ;; Received 232 bytes from 192.35.51.30#53(192.35.51.30) in 54 ms test.shadowrpg.net. 38400 IN NS saber.reganw.com. ;; Received 110 bytes from 209.161.6.3#53(209.161.6.3) in 2123 ms test.shadowrpg.net. 38400 IN NS saber.reganw.com. ;; BAD (HORIZONTAL) REFERRAL ;; Received 110 bytes from 173.45.238.245#53(173.45.238.245) in 81 ms test.shadowrpg.net. 38400 IN NS saber.reganw.com. ;; BAD (HORIZONTAL) REFERRAL ;; Received 110 bytes from 173.45.238.245#53(173.45.238.245) in 82 ms test.shadowrpg.net. 38400 IN NS saber.reganw.com. ;; BAD (HORIZONTAL) REFERRAL ;; Received 110 bytes from 173.45.238.245#53(173.45.238.245) in 112 ms 

并configuration了军刀:

 ^C[regan@gamma ~]$ dig +trace test.shadowrpg.net ; <<>> DiG 9.7.3-P1-RedHat-9.7.3-2.P1.fc13 <<>> +trace test.shadowrpg.net ;; global options: +cmd . 518400 IN NS L.ROOT-SERVERS.NET. . 518400 IN NS J.ROOT-SERVERS.NET. (snip) ;; Received 512 bytes from 127.0.0.1#53(127.0.0.1) in 2 ms net. 172800 IN NS m.gtld-servers.net. net. 172800 IN NS a.gtld-servers.net. (snip) ;; Received 493 bytes from 198.41.0.4#53(198.41.0.4) in 129 ms shadowrpg.net. 172800 IN NS ns1.reganw.com. shadowrpg.net. 172800 IN NS ns2.reganw.com. shadowrpg.net. 172800 IN NS ns3.reganw.com. ;; Received 232 bytes from 192.12.94.30#53(192.12.94.30) in 165 ms test.shadowrpg.net. 38400 IN NS saber.reganw.com. ;; Received 110 bytes from 209.161.6.3#53(209.161.6.3) in 38 ms test.shadowrpg.net. 38400 IN A 127.0.0.2 test.shadowrpg.net. 38400 IN NS saber.reganw.com. ;; Received 126 bytes from 173.45.238.245#53(173.45.238.245) in 80 ms [regan@gamma ~]$ 

所以一旦你添加一个NSlogging,它就会引用它,并忽略任何查询本身。 现在,如果为名称服务器添加一条Alogging,则它将以NSlogging作为胶水(因此parsing器不必再查找新的名称服务器的IP)。

这个问题有点微妙,所以让我一一解释。

正确的configuration当然是只有两个之一 – NS 任何其他logging。

test.example.com添加NSlogging时, test.example.com和下面的所有内容委托给另一个名称服务器。 test.net-me.net的Alogging的正常位置将在ns1.anotherdnshost.com

现在您的问题可能会被重新表述 – 是否可以in the "parent" example.com zone ? The same question may be asked regardless of any records which may exist or not in the使用test.example.com A … in the "parent" example.com zone ? The same question may be asked regardless of any records which may exist or not in the in the "parent" example.com zone ? The same question may be asked regardless of any records which may exist or not in the在另一个主机上委派的区域中是否in the "parent" example.com zone ? The same question may be asked regardless of any records which may exist or not in the

我的答案是辩证的:) 1.是的,在“父”区有这样的logging是可以的。 但是2.自从ns1.anotherdnshost.com 委托ns1.anotherdnshost.com以来,在ns1.anotherdnshost.com以外的任何服务器上碰巧存在(出于任何原因)的 ns1.anotherdnshost.com及其以下版本的logging不再具有权威性

父区域服务器,当它回答ns1.anotherdnshost.com查询时,a) 必须发送NSlogging指向ns1.anotherdnshost.com和b) 可能或不可能发送一个loggingns1.anotherdnshost.com碰巧有, c)即使它发送了logging, 也不能将其标记为“ 权威 ”的答案,d)即使它存在并标记权威的答案,parsing器收到这样的答复,因为它知道test.example.com是被覆盖的 ,应该考虑它的权威服务器的答案 – ns1.anotherdnshost.com )。

我用bind9testing了这样的configuration:

  • named,也没有named-checkzone不会在这样的区域投诉 – 显然这个区域被认为是正确的。
  • 当我查询test.example.com的父服务器时,它只返回NSlogging,就像test.example.com A 1.1.1.1根本不存在一样。

其他DNS服务器软件的行为可能不同,但无论如何都必须遵守上述一般规则。

Verisign的这篇相关文章帮助我理解了这个问题。

我很抱歉,所有的等等等等等等

这不是一个有效的设置,你永远不会知道你将被redirect到哪里。

在您的域上定义NSlogging时,该DNS将成为权限。 如果有人要求你的域名的IP,它会检查他的caching,如果没有logging,那么它会问你的NSlogging中列出的DNS。

如果在另一个DNS中为您的域创build另一个Alogging(2.2.2.2),现在会发生什么? 那么所有使用该DNS的客户端都将获得您的“新”IP(2.2.2.2),而不是真正的IP。

这是完全有效的,但不是你想的方式。

一旦您将一个子域名委托给另一组名称服务器,它们就具有权威性。 他们可以合法地宣传一个域名的Alogging; 确实,这是正常的做法,请参阅,例如dig google.com

我不知道如果在代理名称服务器上公布Alogging会发生什么情况 – 我猜想,没有什么好的,因为其他人都正确地build议你。 但是,在委托服务器上宣传这样的logging是完全有效的,这也许就是为什么你不能在RFC中find禁止的原因。

所以这个问题并不存在一个域的A和NSlogging; 它试图宣传来自相同名称服务器的这些logging。

test.example.com A 2.2.2.2应该被返回,因为它是权威(“主导”)。

这个设置不违反RFC。

推理在这里看到我的更长的答案。