![NS 记录和 CNAME 记录在委派子域控制方面的实现差异](https://linux22.com/image/1617740/NS%20%E8%AE%B0%E5%BD%95%E5%92%8C%20CNAME%20%E8%AE%B0%E5%BD%95%E5%9C%A8%E5%A7%94%E6%B4%BE%E5%AD%90%E5%9F%9F%E6%8E%A7%E5%88%B6%E6%96%B9%E9%9D%A2%E7%9A%84%E5%AE%9E%E7%8E%B0%E5%B7%AE%E5%BC%82.png)
我想控制目标 IP 地址www.example.com
(但不example.com
)使用 DNS 和对该子域名 TTL 施加最大控制因为我无法直接控制父域本身。我知道我可以使用两种机制:
- 我可以在我的名称服务器中为 设置一个区域
www.example.com
,并让名称服务器为example.com
设置 NS 记录www.example.com
。 - 我可以使用 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