TTL值是DNS解析环节中一个重要的参数,其大小直接影响解析过程的准确性和稳定性,因此在进行DNS解析配置的工作中设置合理的TTL值至关重要。
TTL(Time-To-Live,生存时间),简单地说它表示一条域名DNS解析记录在DNS服务器上缓存时间。
当各地的DNS服务器接收到解析请求时,就会向域名指定的DNS服务器发送解析请求,从而获得解析记录。在获得解析记录之后,本地DNS服务器会将该记录存储一段时间,在这段时间中如果再次接到对同样域名的解析请求,DNS服务器会直接将解析记录返回给客户端,而无需再次进行全球范围的递归查询。这条解析记录在DNS服务器中保留的时间,就是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值,可有效提升解析准确性和防劫持能力。
关于国科云