CNAME记录上的TTL是什么意思?


22

由于我的网络中包含多少台服务器,因此很难将它们全部整理得井井有条。其中一些没有静态IP,因此我认为如果创建config.mydomain.com域可能会很好。在该域上,我可以为每个服务器存储A记录和IP。这是我的设置方式:

s1.config.mydomain.com.     A   10.0.0.1    #ttl 60
s2.config.mydomain.com.     A   10.0.0.2    #ttl 60
s3.config.mydomain.com.     A   10.0.0.3    #ttl 60
# etc

这些记录中的每条记录的TTL为60,以防万一我需要快速更改IP,但是我并不一定希望每60秒连接一次的客户端进行更新。现在假设我设置了域以使用它们,如下所示:

mydomain.com.           CNAME   s2.config.mydomain.com.   #ttl 3600
mail.mydomain.com.      CNAME   s2.config.mydomain.com.   #ttl 10800
svn.mydomain.com.       CNAME   ns1.config.mydomain.com.  #ttl 21600

CNAMES的TTL较高,因此,假设我转到mydomain.com。它向我的DNS服务器询问IP的IP mydomain.com,然后我的服务器返回。CNAME s2.config.mydomain.com.然后,它向我的服务器询问IP的IP s2.config.mydomain.com,然后我的服务器返回10.0.0.1

它将CNAME s2.config.mydomain.com记录缓存3600秒,并将A 10.0.0.1记录缓存60秒吗?意味着每60秒仍会询问我的服务器IP地址吗?

或者,它将缓存see CNAME s2.config.mydomain.com,获取A 10.0.0.1并将它们都缓存3600秒。

如果是第一个,那么我可能不得不寻找另一种方法来管理它们,所以我希望它是第二个,但是我不确定。您知道更好的跟踪方式吗?


可以更清晰地定义你的“就意味着谁缓存”?不幸的是,有许多不同的解析器实现,如果您发现两种行为都是正确的,我将不会感到惊讶。
Zoredache

@zoredache我想@Ryan想知道的是:DNS解析程序通常会缓存CNAME或已解析的CNAME查找的结果吗?
coredump

@coredump,是的,这就是我的意思。
瑞安·彭德尔顿

Answers:


10

根据ISC邮件列表上的此消息,CNAME及其指向的记录是通过解析名称服务器(理智的解析名称服务器)缓存的,这样做是为了使解析程序能够优化客户端的解析/缓存过程。

因此,如果CNAME TTL有效,但指向的A无效,则它将仅重复查找指向的记录,而不是原始CNAME(直到CNAME TTL也升高)。


因此,如果我理解这一权利,那么CNAME记录将在TTL过期后被请求,并且指向它的A记录也将被请求,但是在其自身的TTL过期之后呢?
瑞安·彭德尔顿

1
是。这意味着TTL对CNAME记录的作用与对其他记录的作用相同。
coredump

3

您所有的CNAME记录将最多缓存3600、10800和21600秒。

A记录是独立处理的,将每60秒再次查询一次。

但是,如果CNAME过期,则应同时更新A记录。

CNAME记录具有RFC 1912中解释的各种陷阱。mydomain.com。不能成为CNAME,因为您使用过SOA和NS记录:这是com的委派。域。

您的问题很旧。如今,某些DNS提供商没有通过允许用户将CNAME放入SOA(它们称为APEX域)来遵循RFC。同样,使用风险自负。

最后但并非最不重要的一点是,当客户要求IPv6记录:AAAA时,在您的CNAME上设置较高的TTL值可能会有所帮助。至少CNAME映射将保留在缓存中,并且只会询问IP地址两次。

简而言之:在CNAME上设置较高的TTL将减少客户看到的响应的大小。它还应有助于解析器服务器。但是,每秒的请求数应该大致相同。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.