如果我们有示例.com我们可以进行如下设置:
$ORIGIN example.com.
@ 1D IN SOA ns1.example.com. hostmaster.example.com. (
2002022401 ; serial
3H ; refresh
15 ; retry
1w ; expire
3h ; nxdomain ttl
)
IN NS ns1.example.com.
IN NS ns2.example.com.
因为在父区域.com。已经有 NS 记录例如.com。儿童区和胶水记录ns1.example.com。我们为了什么目的要在子区域中再次声明 NS 记录?
而且,我们是否需要在子区域本身中为名称服务器声明 A 记录?
答案1
运作方式
权威NS
记录位于区域本身内(并ANSWER
在查询权威服务器时按部分提供),就像该区域中的所有其他记录一样。
为了能够遍历树,还会将引荐/委托/权威信息(NS
以及任何必要的胶水A
/AAAA
记录)添加到父区域。
但是,此信息不被视为“真实答案”,答案缺少AA
(权威答案)标志,并且NS
记录位于AUTHORITY
部分中以表明这只是有关谁拥有实际答案的信息。
这意味着,如果您直接查找NS
记录,您将遵循此引荐并查询权威服务器,尽管刚刚看到了什么应该是相同的信息。
为什么要定义它以这种方式工作?
大概是因为所有权威记录都驻留在它们所属的区域内被认为是正确/干净/合乎逻辑的,并且也应该有权威记录NS
。
这可以有不同的定义吗?
是的。例如,看看DS
在后来引入时记录是如何定义的。在这种情况下,子区域内没有这样的记录,而是父区域具有权威性。
我可以做不同的事吗?
不。因为它是这样定义的,而且所有的软件都是基于它的定义而工作的,如果你做得不正确,事情就会被破坏(通常是以微妙的方式)。
总结
您需要NS
在您的区域中以及父区域中的委托信息中使用相同的记录。同样,任何胶水A
/AAAA
记录也需要作为真正的权威记录实际存在。
答案2
尽管我不愿意与我尊敬的同事意见相左,但NS
区域内的记录确实有某些用途。例如,1ary NS 需要知道所有其他 NS 是谁,以便在发生区域更新时可以向所有 NS 发送 DNS NOTIFY,这样它们就知道要执行区域传输。这些信息是从这些区域内NS
记录中获取的。
对于DS
没有区域内对应项的记录,DS
是区域内 KSK 记录的简单摘要DNSKEY
。NS
如果不是因为 KSK 记录的长度相当长,以及对于拥有数千万个子条目的域(例如)的性能影响,那么该记录就像记录一样,会在区域内和区域外进行镜像.com
。因此,决定只在父区域中保留摘要 - 但它们仍然是相同的记录,并且区域内和区域外的副本必须匹配,就像NS
记录一样。
总结
Håkan 是对的;您需要这些区域内记录,并且它们确实应该与区域外(粘合)副本相匹配。通常,除非您非常确定自己知道自己在做什么,否则不要违反 RFC。