为了更好的控制解析过程,网站管理员常通过设置权威DNS的配置,达到控制解析端、排除不可控用户端的目的。但操作之后往往发现,解析路径中还存在一个影响因子,即本地递归DNS。
递归解析均由各线路的运营商提供,因此无论是网站管理方还是权威解析方都无权对递归解析进行配置改动。但在实际网站解析过程中,递归解析的效率往往是影响整个解析进程的关键所在。
说到递归解析的机制,不得不谈及解析记录中的一个关键词:存活时间(TTL,time to live)。
TTL是指递归解析在获取权威解析回答的解析记录时,该条解析记录在递归解析中缓存的有效时间,当时间超过TTL值,此条解析视为无效,新的访问请求发送到递归解析时,递归解析将重新询问此条解析记录。
TTL值的设置存在一定的矛盾性:若管理员希望解析记录高频率刷新以保证地址修改效果能快速呈现到客户端,或希望快速刷新掉因操作失误或攻击产生的错误地址,则需将TTL设置为较小值;如果服务器的地址稳定,且管理员希望客户访问网站能获得更好的访问体验,而不是每次访问都要经历解析层层询问的等待过程,则可将TTL设为较大值。
除TTL值会影响解析记录的刷新外,递归解析的一种“偷懒”机制——互相询问机制,也在其中扮演了重要角色。
当一条解析记录失效但有新的访问请求到来时,本应询问权威解析的递归解析并不愿意按规章制度查找一遍权威地址,然后再长途跋涉去“老师家”寻求解答,反而倾向于找“身边的同学”——也就是附近的其他递归解析,直接拷贝对方的解析记录返回给访客。
由于访问机制的原因,递归解析已成为黑客们攻击解析系统最方便的入手点之一。
黑客的主要目的无外乎对DNS进行劫持或污染,解析缓存投毒是其中最常用的攻击手段。根据上文提到的内容,如果TTL值设置较大,则缓存投毒将长期存在;如果TTL值设置较小,除了用户访问体验会变差,由于递归解析互相询问的机制,又会使缓存投毒在递归解析群落中反复传递,难以根除。
为了解决递归解析带来的麻烦,云解析服务商选择应用一种新的技术手段来应对,即DNS云加速技术。
DNS云加速是一种域名解析加速技术,通过全网部署海量加速节点、对临近公共DNS主动加速,减少公共DNS递归过程,有效提升用户访问体验。
其具体操作机制为:在各地部署服务节点以覆盖各地递归解析点,通过将事先录入的解析记录发放到各节点,然后由节点向附近的递归解析发送访问请求报文,保证递归解析能即时应对访问请求的同时对照收到的应答与真实解析记录来判断是否存在投毒等问题,如若存在问题,则直接将正确解析记录以权威解析报文的形式发放给目标递归解析,覆盖其缓存的错误结果,以达到净化递归解析的效果。
互联网中虽然危机四伏,但是互联网基础服务商总是能兵来将挡水来土掩,作为网站管理员,即使做不到未雨绸缪,未尝不可亡羊补牢及时止损。相信通过服务商与管理员之间的齐心协力,携手共创安全稳定的互联网环境指日可待。