一种防止dns缓存被染的方法、系统及本地dns服务器的制造方法
【技术领域】
[0001]本发明涉及数据传输领域,尤其涉及一种防止DNS缓存被染的方法、系统及本地DNS服务器。
【背景技术】
[0002]DNS (Domain Name System,域名系统)可以实现互联网域名到IP (InternetProtocol,互联网协议)地址的转换。参考图1,DNS域名解析流程为:客户端执行步骤101向本地DNS服务器发出DNS解析请求;若本地DNS服务器未存储请求对应的解析记录,则执行步骤102将请求发送给权威DNS服务器;权威DNS服务器执行步骤103返回请求对应的IP地址;本地DNS服务器执行步骤104将IP地址作为解析记录进行存储,并向客户端返回IP地址,完成域名解析。
[0003]DNS劫持又称域名劫持,是指拦截劫持范围内的DNS解析请求,返回错误的IP地址或者使请求失去响应。例如:在图2(a)所示的正常DNS解析流程中,通过步骤2011至2014客户端获得A网站的IP地址a.b.c.d,并通过a.b.c.d正常访问A网站。而在图2 (b)所示的发生DNS劫持的DNS解析流程中,客户端通过步骤2021和步骤2022向权威DNS服务器请求A网站的IP地址;权威DNS服务器由于发生DNS劫持,因此执行步骤2023向本地DNS服务器返回虚假的IP地址e.f.g.h ;本地DNS服务器执行步骤2024告知客户端A网站的IP地址e.f.g.h,由于IP地址错误,客户端无法通过e.f.g.h正常访问A网站。
[0004]DNS缓存延迟恢复时间(Time To Live, TTL)为DNS的一条解析记录在本地DNS服务器缓存中的存留时间。当本地DNS服务器缓存中存储有错误的解析记录时,由于TTL的缘故,会延长错误的解析记录恢复时间,不利于系统稳定。
【发明内容】
[0005]有鉴于此,为解决现有存在的技术问题,本发明实施例提供:
[0006]一种防止DNS缓存被染的方法,应用于本地域名系统DNS服务器,该方法包括:
[0007]对本地缓存的DNS的所有解析记录进行分析,获取第一预设时间内发生变化的解析记录的数量;
[0008]所述获取的发生变化的解析记录的数量满足第一预设条件时,确定DNS缓存被染;并
[0009]在接收到DNS解析请求后,向容灾服务器转发所述DNS解析请求,以获得所述容灾服务器返回的所述DNS解析请求对应的IP地址,并将所述IP地址作为解析记录进行存储。
[0010]—具体实施例中,所述对本地缓存的DNS的所有解析记录进行分析,包括:
[0011 ] 周期性对本地缓存的DNS的所有解析记录进行分析,和/或,根据指示信息对本地缓存的DNS的所有解析记录进行分析。
[0012]一具体实施例中,所述方法还包括:
[0013]为缓存的DNS的每条解析记录分别设置记录变化标识,所述记录变化标识在相应的解析记录发生变化时发生变化,
[0014]所述对本地缓存的DNS的所有解析记录进行分析,包括:
[0015]在本地缓存的DNS的所有解析记录对应的记录变化标识中确定第一预设时间内发生变化的记录变化标识的数量;
[0016]所述获取第一预设时间内发生变化的解析记录的数量,包括:
[0017]将所述第一预设时间内发生变化的记录变化标识的数量确定为第一预设时间内发生变化的解析记录的数量。
[0018]一具体实施例中,所述确定DNS缓存被染之后,还包括:
[0019]进行DNS缓存被染预警。
[0020]本发明实施例还提供一种本地DNS服务器,该DNS服务器包括:缓存模块、获取模块、判断模块和执行模块;
[0021 ] 所述缓存模块,用于缓存DNS的解析记录;
[0022]所述获取模块,用于对缓存模块缓存的DNS的所有解析记录进行分析,获取第一预设时间内发生变化的解析记录的数量;
[0023]所述判断模块,用于判断获取模块获取的发生变化的解析记录的数量是否满足第一预设条件;
[0024]所述执行模块,用于在判断模块确定获取的发生变化的解析记录的数量满足第一预设条件时,确定DNS缓存被染,并在接收到DNS解析请求后,向容灾服务器转发所述DNS解析请求,以获得所述容灾服务器返回的所述DNS解析请求对应的IP地址,并通知缓存模块将所述IP地址作为解析记录进行存储。
[0025]一具体实施例中,所述获取模块,具体用于周期性对本地缓存的DNS的所有解析记录进行分析,和/或,根据指示信息对本地缓存的DNS的所有解析记录进行分析。
[0026]一具体实施例中,所述缓存模块,还用于为缓存的DNS的每条解析记录分别设置记录变化标识,所述记录变化标识在相应的解析记录发生变化时发生变化;
[0027]所述获取模块,具体用于在本地缓存的DNS的所有解析记录对应的记录变化标识中确定第一预设时间内发生变化的记录变化标识的数量;以及将所述第一预设时间内发生变化的记录变化标识的数量确定为第一预设时间内发生变化的解析记录的数量。
[0028]一具体实施例中,所述执行模块,还用于在判断模块确定DNS缓存被染后,进行DNS缓存被染预警。
[0029]本发明实施例还提供一种防止DNS缓存被染的系统,包括:本地DNS服务器、客户端设备和权威DNS服务器;其中,
[0030]所述本地DNS服务器为权利要求5至8任一项所述的本地DNS服务器。
[0031 ] 一具体实施例中,该系统还包括容灾服务器,
[0032]所述容灾服务器,用于在DNS缓存被染后,向本地DNS服务器返回与DNS域名相应的IP地址。
[0033]本发明实施例所述的一种防止DNS缓存被染的方法、系统及本地DNS服务器,对本地缓存的DNS的所有解析记录进行分析,获取第一预设时间内发生变化的解析记录的数量;所述获取的发生变化的解析记录的数量满足第一预设条件时,确定DNS缓存被染;并在接收到DNS解析请求后,向容灾服务器转发所述DNS解析请求,以获得所述容灾服务器返回的所述DNS解析请求对应的IP地址,并将所述IP地址作为解析记录进行存储。通过本发明实施例所述的防止DNS缓存被染的方法、系统及本地DNS服务器,当出现非正常的DNS劫持时,能够及时判断,尽快恢复,有利于提高系统稳定性。
【附图说明】
[0034]图1为相关技术中域名解析系统结构示意图;
[0035]图2 (a)为正常的DNS解析流程示意图;
[0036]图2 (b)为发生DNS劫持的DNS解析流程;
[0037]图3为本发明实施例一种防止DNS缓存被染的方法流程示意图;
[0038]图4为本发明实施例一种本地DNS服务器结构示意图;
[0039]图5为本发明实施例1所述的防止DNS缓存被染的方法流程示意图。
【具体实施方式】
[0040]本发明实施例提出了一种防止DNS缓存被染的方法,应用于本地域名系统DNS服务器,如图3所示,该方法包括:
[0041]步骤31:对本地缓存的DNS的所有解析记录进行分析,获取第一预设时间内发生变化的解析记录的数量;
[0042]步骤32:所述获取的发生变化的解析记录的数量满足第一预设条件时,确定DNS缓存被染;并在接收到DNS解析请求后,向容灾服务器转发所述DNS解析请求,以获得所述容灾服务器返回的所述DNS解析请求对应的IP地址,并将所述IP地址作为解析记录进行存储。
[0043]本发明一实施例中,判断获取的发生变化的解析记录的数量是否满足第一预设条件主要为了确定记录波动范围是否超过设定的阈值(如预设的百分比,或者预设的数量)。
[0044]可选的,本发明一实施例中,所述对本地缓存的DNS的所有解析记录进行分析,包括:
[0045]周期性对本地缓存的DNS的所有解析记录进行分析,和/或,根据指示信息对本地缓存的的所有解析记录进行分析。
[0046]可选的,本发明一实施例中,所述方法还包括:
[0047]为缓存的DNS的每条解析记录分别设置记录变化标识,所述记录变化标识在相应的解析记录发生变化时发生变化,
[0048]所述对本地缓存的DNS的所有解析记录进行分析,包括:
[0049]在本地缓存的DNS的所有解析记录对应的记录变化标识中确定第一预设时间内发生变化的记录变化标识的数量;
[0050]所述获取第一预设时间内发生变化的解析记录的数量,包括:
[0051]将所述第一预设时间内发生变化的记录变化标识的数量确定为第一预设时间内发生变化的解析记录的数量。
[0052]可选的,本发明一实施例中,该方法还包括:
[0053]确定DNS缓存被染后,进行DNS缓存被染预警。
[0054]本发明实施例还相应地提出了一种本地DNS服务器,如图4所示,该DNS服务器包括:缓存模块41、获取模块42、判断模块43和执行模块44 ;
[0055]所述缓存模块41,用于缓存DNS的解析记录;
[0056]所述获取模块42,用于对缓存模块41缓存的DNS的所有解析记录进行分析,获取第一预设时间内发生变化的解析记录的数量;
[0057]所述判断模块43,用于判断获取模块42获取的发生变化的解析记录的数量是否满足第一预设条件;
[0058]所述执行模块44,用于在判断模块确定获取的发生变化的解析记录的数量满足第一预设条件时,确定DNS缓存被染,并在接收到DNS解析请求后,向容灾服务器转发所述DNS解析请求,以获得所述容灾服务器返回的所述DNS解析请求对应的IP地址,并通知缓存模块将所述IP地址作为解析记录进行存储。
[0059]可选的,本发明一实施例中