两种情况:
案例 1- example.com 的区域文件:
@ IN SOA dns.example.com. info.example.com. (1 8H 8H 8H 8H)
IN NS dns
dns IN A 123.123.123.123
第二行和第三行有什么用?我理解它们可能是定义 dns.example.com 所必需的。还有其他用途吗?
案例 2- foo.com 的区域文件:
@ IN SOA dns.example.com. info.foo.com. (1 8H 8H 8H 8H)
IN NS dns.example.com.
在这种情况下,第二行是必要的吗?如果我们已经处于该区域内,那么为 foo.com 的区域添加此 NS 记录有什么用呢?
另外,第一行和第二行是否必须指向同一台服务器?如果不是,在什么情况下它们会不同?
答案1
NS
需要在区域本身中拥有记录的原因与 DNS 中区域/委派/权威等更基本的概念有关。
我将说明这如何应用于NS
记录,但同样的推理也可以应用于指向的A
/AAAA
记录(NS
如果它位于同一区域内):
example.com/IN/NS
example.com
是您的名称服务器所管辖的区域的一部分。
父区域的名称服务器(com
在此示例中)显然将提供委托example.com/IN/NS
记录(和适当的粘合),但这些记录不具有权威性,仅将客户端引导至实际的权威机构。
如果有人查询,example.com/IN/NS
他们会遵循委托链,最终要求您的服务器接收实际的权威数据。如果您以某种方式没有这些记录,则意味着您的名称服务器(该区域的权威机构)会声称他们确实知道没有example.com/IN/NS
记录。
然后,当然他们的负面回应example.com/IN/NS
很可能会被缓存,这意味着下次已经知道该example.com
区域没有名称服务器。
答案2
“SOA” 后面的第一个名称是主名称服务器。“SOA”是“授权开始”的缩写。它表示区域的授权,但不定义名称服务器 (NS) 记录,即使它提供了主服务器的主机名。SOA 还定义了 DNS 数据应缓存和刷新多长时间(以及其他事项)。
名称服务器需要明确定义,因此您还应为主名称服务器创建 NS 记录(或不创建)。NS 记录中的服务器不一定需要与 SOA 行中的服务器相同。当您不希望其他人查询您的主服务器时,通常会出现这种情况。
您的区域中至少需要一条 NS 记录,这样当有人查询您区域中的多个主机名时,NS 信息就可以被缓存(这样其他人就不必反复向 root 询问名称服务器的位置)。但是,您可以拥有多条 NS 记录。这在高流量环境中非常有用。
A 记录会告诉您名称服务器的 IP 地址。当您在 NS 记录中使用主机名时,需要此记录。否则,访问者的计算机将不知道如何找到您的名称服务器。(主机名主要供人类使用,而 IP 地址主要供计算机使用。)
所有这些记录的原因都是为了缓存数据。如果有人查询您区域中的多个主机名,他们的计算机(最多)只需要向根服务器询问一次您的服务器的 NS 记录。
一清二楚,对吧?