$ORIGIN example.com. ; not necessary, using this to self-document
$TTL 3600
@ IN SOA ns1.example.com. admin.example.com. (
1970010100 7200 1800 1209600 300)
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
@ IN A 198.51.100.1
ns1 IN A 198.51.100.2
ns2 IN A 198.51.100.3
sub1 IN NS ns1.example.edu.
sub2 IN NS ns1.sub2
ns1.sub2 IN A 203.0.113.1 ; inline glue record
Run Code Online (Sandbox Code Playgroud)
NS 记录在域顶点下的作用是众所周知的。它们的存在是为了将子域的权限委托给另一个名称服务器。上面的例子应包括的NS记录sub1和sub2。这些允许名称服务器为它认为自己不具有权威性的域部分分发引用。
在NS的目的,记录在一个域的顶点,ns1而ns2在这种情况下,似乎较少地受到互联网的大了解。我的理解(可能不是整体的)如下:
这是我的问题:
dig +trace忽略 Glue 记录?digor dig +trace,或者递归名称服务器是否也“手动验证”它收到的粘合记录?这是更长的解释:
这是引发这些问题的 DNS 事务的完整捕获。
我正在使用 dig +trace 来跟踪 DNS 过程,以进行简单的 A 记录解析www.pizza.com。正如预期的那样,第一个请求是发送给我的 DNS 服务器,寻找根名称服务器(数据包 #1)。然后,我的 DNS 服务器会响应所有 13 个名称服务器的列表(数据包 #2):
请注意,在 Packet#2 中,不包含任何附加记录。这会提示我的客户查找每个提供的根名称服务器的 A 记录。这发生在数据包 3 到 28 中:
到目前为止,这是预期的。但接下来就变得有趣了。
数据包 29 是我的客户端,向 192.5.5.241 (f.root-servers.net) 发出请求,查找 www.pizza.com 的 A 记录。显然,根 NS 不知道 A 记录,因此提供.comTLD 名称服务器的 FQDN(a.gtld-servers.net、b.gtld-servers.net 等)。请注意,F 根 NS 还提供“附加记录”,即与每个 .com TLD 名称服务器 FQDN 对应的 A 记录:
接下来就是我的问题所围绕的内容。尽管我的客户收到了与 .com TLD 名称服务器相关的 A …
这个问题是类似的,但没有详细说明为什么NS无法获得记录的令人困惑的情况。
我们的缓存 DNS 环境之一(RHEL 5.8、BIND 9.3.6-20.P1.el5_8.4)已完全停止为区域返回任何有用的数据。通常这类问题最终会成为陈旧NS或粘连的记录,但在这种特殊情况下,我似乎甚至无法让缓存报告NS该区域的记录。
dig @mycache somedomain NS返回SERVFAIL。根本没有缓存任何名称服务器记录。dig +trace显示健康的委托路径,最终名称服务器返回响应。dig针对最终名称服务器手动运行查询返回有效NS记录,相应A记录存在并与胶水一致等。是什么赋予了?为什么NS我从 DNS 缓存中没有任何记录可以获取,甚至没有错误记录?
当为域指定 DNS 信息时(例如在注册商控制面板中),可以使用作为域子域的名称服务器。例如,如果我有一个域 example.com,我可以设置名称服务器“ns1.example.com 1.1.1.1”和“ns2.example.com 1.1.1.2”(IP 地址是必需的)。解析名称ns1.example.com的过程是怎样的?