是否存在这样的情况:域或子域的 SOA 记录或 NS 记录中的信息@
用于 DNS 名称解析?
假设我没有在名称服务器@
上发布任何 SOA 或 NS 记录josh.com
,这会对任何事情产生影响吗?
换个角度问,我是否曾经期望域名的私有 DNS 服务器josh.com
获取@
NS 记录或 SOA 记录的查询?
例子:
假设我有自己的域名 josh.com 私有 DNS 服务器。注册商拥有此名称服务器的 IP 地址,并将其发布到 TLD 服务器。
我想解决www.josh.com
...
我向根 NS 服务器询问
com.
,他们使用com
权威部分中的 NS 记录以及.com
附加部分中的 GTLD 服务器的 IP 地址来回答。然后,我使用上一步返回的其中一个 GTLD 服务器的 IP 地址进行请求
josh.com.
,它会使用josh.com.
权威部分中的名称服务器以及附加部分中的 IP 地址进行回答。josh.com
最后,我向上一步返回的其中一个服务器询问www.josh.com.
,并在答案部分得到答案。
似乎@
这里从未触及过任何 SOA 或 NS 记录?
答案1
这些记录存储在 区域文件 并且对于 DNS 服务器的运行和定义 DNS 区域本身至关重要。它们通常不会在处理 DNS 查询时使用,而只是告诉 DNS 服务器从哪里获取信息。
一个SOA 记录由从属或辅助域服务器使用,指向主区域服务器,并包含与其同步所需的所有参数,例如刷新时间。该过程称为 DNS 区域传输。
NS 记录(或名称服务器记录)将域名映射到对指定域具有权威性的 DNS 服务器列表,该列表主要包括委派。区域原点可以用 表示@
。这些服务器也参与 DNS 区域传输。
唯一一次 DNS 服务器被查询这些记录是当它是区域的主 DNS 服务器时,由从属/辅助 DNS 服务器在执行 DNS 区域传输的过程中进行查询。
DNS 是一个庞大的主题,我对它的了解并不全面。如果你想了解更多,你可以从这些资源开始:
答案2
假设我没有在 josh.com 名称服务器上发布任何 SOA 或 @NS 记录,这会对任何事情产生影响吗?
是的,这至少会破坏 DNSSEC 和 QNAME 最小化。(具有讽刺意味的是,您在示例中使用了 QNAME 最小化……)
此外,SOA 字段的最后一项是负 TTL,并让递归名称服务器知道缓存 NXDOMAIN 回复多长时间。因此需要 SOA 记录。
看https://www.rfc-editor.org/rfc/rfc7816#appendix-A有关递归名称服务器用于执行 QNAME 最小化的详细算法:您将看到它需要NS
记录来逐步找到区域切割。
对 DNSSEC 的需求与名称服务器需要找到正确的 DNSKEY 和 DS 记录的需求相同。
还要注意,一般来说,NS 记录存在于区域切割的两侧:父区域和子区域。递归名称服务器相信子侧的内容,因为它是权威侧。父区域中的 NS 记录仅用于解析,但父区域对它们没有权威性。如果子侧没有这些记录(如果您设法让名称服务器在这种情况下加载区域,这当然是不能保证的),可能会阻止递归名称服务器进行任何类型的正确数据缓存。