由于我的网络涉及许多服务器,我很难将它们全部组织起来。其中一些服务器没有静态 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 mydomain.com
,然后我的服务器返回CNAME s2.config.mydomain.com.
然后它会向我的服务器请求 的 IP s2.config.mydomain.com
,然后我的服务器返回10.0.0.1
。
它会缓存CNAME s2.config.mydomain.com
3600 秒的记录,缓存A 10.0.0.1
60 秒的记录吗?这意味着每 60 秒它仍会向我的服务器询问 IP 地址?
或者它会缓存查看CNAME s2.config.mydomain.com
、获取A 10.0.0.1
,并将它们都缓存 3600 秒。
如果是第一种,我可能必须找到另一种方法来管理它们,所以我希望是第二种,但我不确定。你知道有更好的方法来跟踪它们吗?
答案1
根据ISC 上的这条消息邮件列表、CNAME 及其指向的记录由解析名称服务器缓存(健全的解析名称服务器) 这样做是为了让解析器能够优化客户端的解析/缓存过程。
因此,如果 CNAME TTL 有效但它指向的 A 无效,它将只重复查找指向的记录,而不是原始 CNAME(直到 CNAME TTL 也到期)。
答案2
您所有的 CNAME 记录将最多缓存 3600、10800 和 21600 秒。
A记录被独立处理并且每60秒会再次查询一次。
然而,如果CNAME过期,则A记录应该同时更新。
CNAME 记录有各种陷阱,在 RFC 1912 中有解释。mydomain.com. 不能是 CNAME,因为您使用了 SOA 和 NS 记录:它是 com.domain 的委托。
您的问题已经过时了。如今,一些 DNS 提供商不遵守 RFC,允许用户将 CNAME 放入 SOA(他们称之为 APEX 域)。再次提醒,使用时请自担风险。
最后但同样重要的是,当您的客户请求 IPv6 记录时,在您的 CNAME 上设置更高的 TTL 值可能会有所帮助:AAAA。至少 CNAME 映射将保留在缓存中,并且只会询问 IP 地址两次。
简而言之:在 CNAME 上设置更高的 TTL 将减少客户端看到的响应大小。这也应该有助于解析器服务器。但是每秒的请求数应该大致相同。