DNS 解析如何设置合适的 TTL 值?
TTL 值是DNS解析环节中一个重要的参数,其大小直接影响解析过程的准确性和稳定性,因此在进行 DNS 解析配置的工作中设置合理的 TTL 值至关重要。
什么是 TTL 值?
TTL(Time-To-Live,生存时间),简单地说它表示一条域名 DNS 解析记录在 DNS 服务器上缓存时间。
当各地的 DNS 服务器接收到解析请求时,就会向域名指定的 DNS 服务器发送解析请求,从而获得解析记录。在获得解析记录之后,本地 DNS 服务器会将该记录存储一段时间,在这段时间中如果再次接到对同样域名的解析请求,DNS 服务器会直接将解析记录返回给客户端,而无需再次进行全球范围的递归查询。这条解析记录在 DNS 服务器中保留的时间,就是 TTL 值。
如何设置合适的 TTL 值?
一般情况下,解析记录的 TTL 值都选择默认时间,无需进行再次修改,但也可根据用户的喜好和需要对 TTL 值进行调整。
(1)增大 TTL
增大 TTL 值意味着解析记录在本地 DNS 服务器中保留的时间加长,这样在更长的时间段内,用户访问网站,本地 ISP 的 DNS 服务器无需向域名的 NS 服务器发出解析请求,而是直接从本地缓存中返回域名解析记录,整个解析过程大大缩短,因此访问所需时间更短,用户可以获得更好的访问体验,同时较长的缓存时间会使得 DNS 查询流量减小,DNS 解析服务器的压力降低。
但 TTL 值过大的弊端在于,如果更换站点服务器,用户在较长的一段时间内无法访问网站,需要等到 TTL 值失效后,获得新的解析记录,才能继续访问新的站点。另一方面,TTL 值过大,DNS 记录缓存时间太长,攻击者就会很容易利用缓存投毒等方式劫持域名,将其指向其他网站,造成不必要的损失。
(2)减小 TTL 值
降低 TTL 值,意味着解析记录在本地 DNS 服务器中保留时间缩短,当用户访问站点时,DNS 服务器向权威 DNS 查询的频次会增加,这样可以使得用户可以及时获得最新的 IP 地址,保障了解析准确性,降低域名被劫持的风险。因此,从理论上讲,TTL 值越小,解析准确性就越高。
但 TTL 值过低,同样有较大的弊端。一是,TTL 值过低,每次用户的解析请求,都需要向全球发起递归查询,整个过程相比直接从缓存中获取记录要花费更多的时间,并且失败率也会升高。二是,TTL 值过低,DNS 服务器发起查询的频次越高,服务器压力越大,因此对于 DNS 性能要求就越高,解析稳定性和速度就会受到较大影响。
建议
因为 TTL 值的选择很大程度取决于外部因素,因此并没有一个适用于所有场景的 TTL 最佳值。对一般情况而言,建议使用运营商默认的 TTL 值即可。如果采用性能更为强大的云解析,基于 DNS 负载均衡和 DDoS 防护的考虑,可以设置更低的 TTL 值,可有效提升解析准确性和防劫持能力。
评论