假设我拥有example.com
.
然后我在to上创建一个A
记录。test.example.com
1.1.1.1
然后我在to上创建一个NS
记录。test.example.com
ns1.anotherdnshost.com
在另一个 DNS 主机上,我将A
根 ( test.example.com
) 的记录添加到2.2.2.2
.
客户端查询时,会返回test.example.com
哪条记录?A
哪个会是更“主导”的A
记录?这样的设置有效吗?
假设我拥有example.com
.
然后我在to上创建一个A
记录。test.example.com
1.1.1.1
然后我在to上创建一个NS
记录。test.example.com
ns1.anotherdnshost.com
在另一个 DNS 主机上,我将A
根 ( test.example.com
) 的记录添加到2.2.2.2
.
客户端查询时,会返回test.example.com
哪条记录?A
哪个会是更“主导”的A
记录?这样的设置有效吗?
这个问题有点微妙,我来一一解释。
正确的配置当然是只有两者之一 - NS或任何其他记录。
当您添加 NS 记录时
test.example.com
,您将来自和下面的所有内容委托test.example.com
给另一个名称服务器。A 记录的正常位置test.net-me.net
是 onns1.anotherdnshost.com
。现在您的问题可能会被改写 - 是否可以在另一个主机上设置
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
委派区域。我的回答是辩证的:) 1. 是的,在“父”区有这样的记录是可以的。但是 2. 由于
test.example.com
委托给ns1.anotherdnshost.com
,test.example.com
以及以下的记录,这些记录碰巧(出于任何原因)存在于任何服务器上,而不是不再ns1.anotherdnshost.com
具有权威性。父区域服务器,当它回复
test.example.com
查询时,a)必须发送指向的 NS 记录ns1.anotherdnshost.com
b)可能会或可能不会发送 A 记录,因为test.example.com
它恰好有,c) 即使它确实发送了记录,它也不能标记它作为“权威”答案,d)即使它撒谎并将此类答案标记为权威,接收此类回复的解析器,因为它知道这test.example.com
是延迟的,应该只考虑来自它的权威服务器的答案 -ns1.anotherdnshost.com
)。我用bind9测试了这样的配置:
test.example.com A 1.1.1.1
根本不存在一样。其他 DNS 服务器软件的行为可能不同,但无论如何都必须遵守上述一般规则。
Verisign 的这篇相关文章帮助我理解了这个问题。
我为所有的胡说八道感到抱歉
这是无效的,不。
它可能会返回 1.1.1.1,因为它将由第一个解析的服务器返回,但“正确”值应该是 SOA 记录注册为主服务器的任何名称服务器。但是,返回的内容可能取决于运行的名称服务器软件的版本。见下文,它只会将其转发到下一个名称服务器,并且永远不会显示 1.1.1.1。现在在您的区域中列出其他 NS 记录是正确的,但其他 NS 应该是具有相同区域的名称服务器。但是,您可以将子域指向备用名称服务器。
因此,您的注册商的 example.com 使用来自注册商名称服务器(胶水)的 1.2.3.4 和 2.3.4.5 IP 指向 ns1.example.com 和 ns2.example.com。
然后,您将拥有一个 SOA 选择 ns1 或 ns2 作为主要区域的区域,然后您将拥有两个指向 ns1.example.com 和 ns2.example.com 的 NS 记录以及该域的 A 记录(以及 mx、txt , cname 等)。
NS1 和 NS2.example.com 都应该具有相同的区域,并且它们应该自动相互复制。
现在它是有效的,将 test.example.com 指向 ns1.somethingelse.com 和 ns2.somethingelse.com 但在 ns1 和 ns2.example.com 的名称服务器上没有 test.example.com 的记录,除了 ns1 和ns2.example.com 应该自动发送 ns1 和 ns2.somethingelse.com 的 IP,如果它有胶水的话。(如果 TLD 不同,即 .com 和 .org,则不会)
我希望一切都说得通,如果有任何令人困惑的地方,我可以澄清更多。
这是对发生的情况的测试:
在 shadowrpg.net 的名称服务器上:
在 test.shadowrpg.net 的名称服务器(军刀)上:
第一个结果是未配置 saber 以显示推荐。
并配置了军刀:
因此,一旦您添加了 NS 记录,它就会引用它,并且它会忽略对自身的任何查询。现在,如果您为名称服务器添加 A 记录,它将与 NS 记录一起作为胶水传递(因此解析器不必再查找新名称服务器的 IP)。
test.example.com A 2.2.2.2
应该返回,因为它是权威的(“主导”)。此设置不违反 RFC。
推理请参阅我在这里的更长答案。
这不是一个有效的设置,你永远不会知道你将被重定向到哪里。
当您在域上定义 NS 记录时,该 DNS 成为权威。如果有人询问您的域的 IP,它会检查他的缓存,如果没有记录,那么它会询问您的 NS 记录中列出的 DNS。
如果您在另一个 DNS 中为您的域创建另一个 A 记录 (2.2.2.2),现在会发生什么?然后,所有使用该 DNS 的客户端都会获得您的“新”IP (2.2.2.2),而不是真正的 IP。
这是完全有效的,但不是你的想法。
一旦您将子域委托给另一组名称服务器,它们就具有权威性。 他们可以非常合法地宣传该域的 A 记录;实际上,这样做是正常的做法,请参阅,例如
dig google.com
。我不知道如果您在委派名称服务器上宣传 A 记录会发生什么 - 我怀疑这没什么好,因为其他人都在正确地建议您。但是在委托的服务器上宣传这样的记录是完全有效的,这可能就是为什么您在 RFC 中找不到禁止的原因。
所以问题不在于域的 A 和 NS 记录都存在;它试图从相同的名称服务器宣传这两个记录。