基于缓存快照的DNS容灾方法研究与实现
2018-10-17段立鸿王奕婷刘三伟张祥宇
◆段立鸿 王奕婷 李 晗 刘三伟 张祥宇 杨 健
基于缓存快照的DNS容灾方法研究与实现
◆段立鸿 王奕婷 李 晗 刘三伟 张祥宇 杨 健
(中国移动通信集团河南有限公司 河南 450000)
DNS作为互联网访问的关键设施,面临较高的安全风险,为了加强DNS防护能力,并使其具备相应的快速恢复能力,利用DNS系统缓存快照功能,可以更好的保证互联网访问的稳定性,减少异常情况的故障时间。
DNS应急备份技术;DNS缓存快照
0 前言
DNS是网络应用的基础设施,它的安全性对于互联网的安全有着举足轻重的影响。目前互联网域名解析深度依赖DNS根权威域名服务器和各顶级域权威服务器,一旦这些服务器出现故障,对互联网访问的影响是灾难性的,将出现全网性、大规模用户访问网站故障,给运营商造成极大压力。
1 研究背景
“1.21”全国网络大瘫痪,对于中国互联网可以说始料未及。全国三分之二的DNS服务器处于瘫痪状态,致使国内大量用户无法访问以“.com”、“.net”等结尾的网站,包括腾讯、新浪、百度等多家全国顶级网站也未能逃过此劫。
(1)故障说明:2014年1月21日下午15时左右,有消息称某互联网公司产品出现大范围网络故障,致使部分业务无法正常运转。当用户请求根服务器时,被跳转至一个错误的IP地址。就此,某安全卫士官微声称,经测试发现,很多网站被解析到了一个异常IP,而原因有可能是国际节点出现故障,造成国内三分之二DNS处于瘫痪状态。
(2)影响范围:影响到运营商家庭宽带、互联网专线和手机用户的互联网访问。21日16点,某省平均流量同比下降17.11%,18点后,流量逐步恢复正常水平。根据该省份相关数据分析,故障期间,受影响域名133989个,意味着影响了用户对13多万个网站的访问。
从该事件中看出,全球顶级域名服务器出现解析异常时,运营商DNS系统运行是正常的,但是由于无法通过顶级域名服务器获得相应域名的IP地址信息,从而也无法向用户提供解析服务,导致了用户访问大量互联网业务出现异常。此种现象的出现不止一次,2009年10月13日凌晨,瑞典国家顶级域名.SE的管理人员使用了错误的配置脚本来更新.se的解析数据,致使全球DNS系统不能正确解析.se下的90万个域名。
由此可见,需要研究一种有效的DNS应急备份技术,能够在这些重要权威服务器故障情况下保证运营商DNS在足够长一段时间内为用户提供互联网上绝大部分域名解析,降低故障对用户的影响。
2 缓存快照技术方案
缓存快照技术方案需要实现生成重点域名清单、对缓存内容进行快照和查询以及实现缓存快照功能的一键启用,本方案在现有DNS缓存系统上设计了三个关键的进程(统计汇总进程、缓存内容查询进程、管理控制进程)来实现以上能力,具体系统逻辑架构如图1。
图1 系统逻辑架构
(1)生成重点域名清单
从理论上来说,将整个缓存的内存数据库备份到硬盘,需要时再恢复回内存,这在技术上是可行的,但是在工程实践中代价过高。如果内存数据库中存在3000万域名资源记录,大约20~30G的内存空间,完整的备份到硬盘或从硬盘恢复到内存需要花费太长的时间,在系统故障时无法满足快速恢复的时限要求。因此在实际使用中只对重点域名进行缓存快照,保证故障情况下的快速恢复,同时也保证缓存快照能够覆盖绝大多数用户的正常访问要求。
重点域名采用访问次数来衡量,将访问次数最多的域名作为重点域名。当用户进行DNS查询时,缓存系统实时统计域名访问计数,然后将域名访问计数信息实时上报给后台统计程序。后台程序会自动累加域名计数,汇总出重点域名,并将重点域名列表保存到数据库。
(2)对重点域名的缓存快照与查询
每天定时会启动缓存快照程序,该程序从数据库中取出前面汇总程序的统计结果获取重点域名列表,然后按照域名查询缓存,获取每个重点域名缓存内容后,将重点域名的正常解析结果保持到另外一个数据库(称为缓存快照)。
缓存快照进程通过缓存接口获取的缓存内容是二进制的DNS报文格式,该格式按照RFC规范约定书写。缓存快照进程会进行二进制格式解码,并将解码后数据写入数据库。数据库中的解码数据通过web界面呈现给管理员。
目前的DNS缓存系统中,缓存数据是存储在内存数据库中,该内存数据库可以根据域名快速检索数据(检索速度非常快,微秒级别),因此缓存快照程序生成快照的过程是高效的。
(3)缓存快照功能的一键启用
启用缓存快照命令下达到管理控制进程,该进程从数据库中取出缓存快照内容,然后通过缓存内容下发接口将缓存快照写入缓存中。
缓存快照写入时进行了特殊的标记,对缓存快照域名进行了锁定,因此在缓存快照启动期间,所有在缓存快照中的域名都将使用缓存快照内容应答用户,不再受递归结果影响。
3 技术实现
(1)缓存快照备份与查询:通过重点域名缓存快照功能来实现此种故障状态下的容错。缓存系统每天定期保存缓存中重要域名的正常解析结果(称为缓存快照),以某运营商现有网数据为例,一天DNS访问量约90亿次,其中排名前10万的域名时访问量约为89.4亿次,也就是说只要缓存快照中恢复了前10万个重点域名,则99.2%的用户访问将不受影响。
(2)缓存快照启用:如果发生大面积域名解析内容错误时,管理员可以通过管理界面选择“启用缓存快照”,可以选择一个缓存快照(系统每天生成一个重点域名缓存快照,一般保留最近7天缓存快照),此时所有在缓存快照中的域名都将使用缓存快照内容应答用户,不受顶级DNS服务器故障或无法通信导致的影响。
(3)实施创新方案后的流程变化(图2)。
①故障时的业务访问简化流程
第一步:用户向运营商DNS发起解析请求;
第二步:运营商DNS进行递归查询,向上级DNS逐级进行解析访问,获取域名的解析IP;
第三步:运营商DNS向用户返回解析结果。
②启用缓存快照的业务访问流程
第一步:用户向运营商DNS发起解析请求;
第二步:运营商DNS向用户返回缓存快照结果。
图2 实施创新方案后的流程变化
4 应用效果
缩短故障历时:2.5小时→15分钟,缩短99%。
在根DNS及顶级域DNS故障后,相关各级DNS均需刷新缓存逐级恢复,有些域名的缓存刷新速率较差,有些长达数天时间,因此普遍故障历时较长。由于本方案设备所需处置时间不足1分钟,考虑维护人员收到接收并分析判断故障的时间,总体故障恢复时间可控制在15分钟内。对比1月21日故障历时2.5小时以上,此方案可缩短99%的故障历时。
该技术的提出和部署,能够在顶级DNS服务器故障以及本省DNS无法递归时,利用缓存快照的缓存内容,向用户提供解析服务,从而保障用户访问互联网业务的正常。
[1]孔政,姜秀柱.DNS欺骗原理及其防御方法[J].计算机工程,2010.
[2]董新科,邢雨,高维银.DNS网络安全系统分析与设计[J].计算机安全,2010.
[3]李基,杨义先.DNS安全问题及解决方案[M].北京:北京邮电大学信息安全中心,2005.