NS 记录和 CNAME 记录在委派子域控制方面的实现差异

NS 记录和 CNAME 记录在委派子域控制方面的实现差异

我想控制目标 IP 地址www.example.com(但不example.com)使用 DNS 和对该子域名 TTL 施加最大控制因为我无法直接控制父域本身。我知道我可以使用两种机制:

  1. 我可以在我的名称服务器中为 设置一个区域www.example.com,并让名称服务器为example.com设置 NS 记录www.example.com
  2. 我可以使用 CNAME 指向www.example.com然后example.mydomain.com控制example.mydomain.com。这对于远程方来说可能更简单,因为在我经常接触的圈子里,使用 NS 记录进行委托的情况很少见。

我不太清楚 TTL 机制的微妙之处 - 尤其是缓存方面。如果我使用 CNAME,实际 TTL 是否由记录上的 TTLwww.example.com和 上的 TTL控制example.mydomain.com,或者(假设 CNAME 记录不变),这是否仅与 的 A 记录相关example.mydomain.com

类似地,如果我使用 NS 条目,是否可以这样说(假设名称服务器没有改变),对解析的更改的 TTLwww.example.com由 A 记录的 TTL 控制www.example.com,并且我不需要担心 NS 记录的 TTL?

答案1

记录的 TTL 仅适用于该记录,并且一旦进入任何给定名称服务器/缓存解析器的缓存即开始过期。

请注意,许多(大多数?)缓存名称服务器(即最终客户端使用的缓存解析器)将对以任何较低值获取的所有记录设置最低 300 秒的 TTL。另请注意,客户端和权威名称服务器之间可以有多个缓存名称服务器。

您可能希望任何 CNAME(或 NS、MX 等)记录上的 TTL 相对较长,并且可能希望任何 A 记录上的 TTL 更短(例如短至 300 秒)。

让某人委托一个主机名(例如)以允许您控制最终 A 记录的最简单方法www.example.com当然是使用 CNAME,但当然请记住,这样的主机名必须是子域名,即它不能位于区域切割,因为 CNAME 当然可能不与同一节点上的任何其他记录共存。

例如在父域名服务器中:

$ORIGIN example.com.
www  1w  IN  CNAME  foo.mydomain.example.

然后在你的名称服务器中:

$ORIGIN mydomain.example.
foo  1h  IN  A  192.168.0.1

相关内容