一种抗DNS死域攻击的缓存方法及系统
技术领域
本发明属于互联网技术领域,更具体地说,是涉及一种抗DNS死域攻击的缓存方法及系统。
背景技术
递归查询系统中,递归服务器(本地DNS服务器)负责接受用户(解析器)发送的域名解析请求,然后向各级权威域名服务器发出查询请求,获得用户需要的查询结果,最后返回给用户。为减少查询次数和提高查询效率,递归服务器将所有查询结果数据放入缓存。下次解析器向递归服务器查询某个它所知的域名数据时,递归服务器只需直接向解析器返回该查询结果。即使没有将结果直接放入缓存中,递归服务器也可能已经获得该域名所在区的权威域名服务器的标识,然后直接向它们查询。
如图1所示为以客户端访问网站www.163.com为例,给出了递归域名解析的完整流程,即首先查询递归服务器有无此网站的IP地址,在没有的情况下再查询“DNS根服务器”,如没有则再查询“.com域服务器”,最后查询“163.com域服务器”得到了需要的IP地址。
通过本地DNS服务器缓存中有“www.163.com”的IP地址,则可直接向用户返回此IP,而不必执行Step2-Step7;若本地DNS服务器缓存中没有存储“www.163.com”的IP地址,但存储了163.com域服务器地址,则DNS服务器可直接向163.com域服务器查询“www.163.com”的IP地址,再将查询结果返回给用户,而不必执行Step2-Step5,提高了查询效率。
递归服务器使用“往返时间(roundtrip time,RTT)”来对同一区的权威域名服务器进行选择。RTT定义为远程域名服务器响应查询的时间长度。每次递归服务器向远程权威域名服务器发送查询时,都启动一个内部计时器。当它收到响应时就停止计时,并记录该权威域名服务器响应时长RTT。
递归服务器总是选择具有最小RTT的权威域名服务器来发送查询。同一区的权威域名服务器的RTT最初都随机给定一个比任何真实的RTT值都小的相同数值,在根据真实RTT值选择之前,递归服务器可随机选择一个权威域名服务器发起查询。递归服务器使用它成功收到响应的真实往返时间来更新缓存中的权威域名服务器的RTT值。但如果递归服务器在查询时遇到了一个错误,该错误表明该权威域名服务器已经停机或不可达到,或者查询超时,递归服务器将更新此权威域名服务器的RTT为:RTT+D,其中D为时间常量,并再次向该区具有最小RTT值的权威域名服务器发起查询,循环往复,直至查询成功或达到限制的最大查询次数N。对最终不可达的查询,返回“SERVFAIL”(服务器失败)。
上述查询机制仍存在缺陷。若由于网络拥塞或者其他因素,某次域名解析请求被返回“SERVFAIL”,则表明该域名所属区域的所有权威域名服务器都不可达。根据目前的查询机制,当此时递归服务器收到属于该域的域名查询请求,它仍会向该域的权威服务器发起查询,但显而易见,结果都将是在经过N次查询尝试后最终被返回“SERVFAIL”。所以,在区域的所有权威域名服务器都不可达的情况下,当前的查询机制存在冗余查询。若一些别有用心的人利用该缺陷,发起大量属于该域的域名查询请求(死域攻击),该缺陷的严重性会凸显:大量网络带宽和递归服务器CPU资源将被占用,造成网络拥堵甚至瘫痪,阻塞正常查询,用户得不到正确的查询结果。
发明内容
为解决上述技术问题,本发明提供了一种抗DNS死域攻击的缓存方法及系统,其中方法包括以下步骤:
1)客户端向递归服务器提出域名查询请求;
2)递归服务器按照递归流程查询该域名所对应的权威服务器;如果查询成功,则按递归流程进行后续查询;如果查询失败,则选择下一个权威服务器进行查询;依次执行该流程,直到该区域的所有权威服务器都被遍历一次;
3)重复2),遍历查询所有权威服务器指定次数都无法成功,则在失败地址缓存模块中添加该区域的信息并启动等待计时,若在计时时间内收到该区域的查询请求,直接返回服务器失败的消息。
进一步地,还包括以下步骤:
4)定时结束后,所述递归服务器从地址选择模块中选择该区域具有最小RTT的权威域名服务器进行查询,若查询失败则将该权威域名服务器的RTT值增加一个特定的时间常量,并查询此时RTT值最小的权威域名服务器。
进一步地,若查询成功,则修改该权威域名服务器的RTT值,清除失败地址缓存中该域名的记录,并进行后续查询。
进一步地,若查询该区域所有的域名服务器一遍后仍失败,则增大失败地址缓存模块中的该域名的等待计时时间,并重复步骤4)。
进一步地,所述步骤3)中对某一区域中所有权威域名服务器查询的次数为5次或其他次数。
进一步地,所述步骤3)中添加该区域的信息包括该区域的域名,等待查询的基础时长TTL、等待计时的时间以及等待的次数等其他信息。
另外,本发明还公开了一种抗DNS死域攻击的缓存系统,包括客户端、递归服务器以及权威域名服务器,其特征在于,所述递归服务器内布置有失败地址缓存模块,当客户端向递归服务器提出域名查询请求时,所述递归服务器开始对某一区域中所有权威域名服务器进行查询,如果在指定次数内不能查询到,则在所述失败地址缓存模块中添加该区域的信息并启动等待计时,若在计时时间内收到该区域的查询请求,直接返回服务器失败消息。
本发明的方法及系统通过在递归服务器上缓存查询失败的域的相关信息,改进递归服务器的查询机制,以减少冗余查询,使递归查询收敛,降低对网络造成的拥堵和服务器资源消耗,特别是防止利用域名查询请求的攻击,从而维护域名查询系统正常工作。
附图说明
图1是现有技术以访问网站www.163.com为例的递归域名解析的流程图;
图2是本发明实施例一抗DNS死域攻击的缓存方法的流程图;
图3是本发明实施例二抗DNS死域攻击的缓存系统的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例为实施本发明的较佳实施方式,所述描述是以说明本发明的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围应当以权利要求所界定者为准,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图2所示为本发明实施例一抗DNS死域攻击的缓存方法的流程图,如图2所示,方法包括:
步骤S101,客户端向递归服务器提出域名查询请求。
步骤S102,递归服务器从地址选择模块中挑选出具有最小RTT的权威服务器进行查询;如果查询成功,则以成功收到响应的真实往返时间来更新缓存中的权威域名服务器的RTT值,按递归流程进行后续查询;如果查询失败,则将该权威域名服务器的RTT值增加一个特定的时间常量,并从地址选择模块中选择下一个具有最小RTT的权威服务器进行查询;依次执行该流程,直到所有权威服务器都被遍历一次。
步骤S103:重复步骤S102,遍历查询所有权威域名服务器N次(指定值),如果都不能查询到,则在失败地址缓存模块中添加该区域的信息并启动等待计时,若在计时时间内收到该区域的查询请求,直接返回“SERVFAIL”(服务器失败)。
其中,在步骤S103中,失败地址缓存中添加的区域信息包括:该区的域名Domain、等待查询的基础时长TTL(单位:秒)和当前的等待次数K。
具体地,若递归服务器对某一区中所有权威域名服务器经过5次遍历查询仍不可达,则在失败地址缓存中添加该区域信息,设置K=1,启动一个内部定时计,从TTL*K秒开始倒计时。如:
Domain=test.example.com
TTL=5
K=1
表明“test.example.com”域的所有权威域名服务器均不可达,递归服务器进入第1次等待查询的状态,等待时间为5*1=5秒。
这里递归服务器对某一区域中所有权威服务器遍历查询的次数N、等待查询的基础时长TTL的大小均不作具体的限制,可以根据本行业技术人员具体的需求进行具体的设置。
其中,在等待时间内,若递归服务器收到属于该域的查询请求,则直接返回“SERVFAIL”而不必再次向权威域名服务器发起查询。
步骤S104,定时结束后,所述递归服务器选择该区域具有最小RTT的权威域名服务器进行查询,若查询失败则将该权威域名服务器的RTT值增加一个特定的时间常量,并查询此时RTT值最小的权威域名服务器。
其中,在步骤S104中,查询失败后将该权威域名服务器的RTT值增加为RTT+D,其中D为一时间常量,其数值根据本行业技术人员的具体情况做不同的设定,这里不作具体的限制。
步骤S105,若查询该区域所有的域名服务器一遍后仍失败,则增大失败地址缓存模块中的该域名的等待计时时间,并重复步骤S104。
具体地,若查询成功,则修改该权威域名服务器的RTT值,清除失败地址缓存中该域名的记录,并进行后续查询。其中,在步骤S105中增大失败地址缓存模块中该域的等待时间,具体可以使得该域的K=K+1,则等待时间则为TTL*K(修改后的数值),这里本行业技术人员也可以采用其他方法增大等待的时间,例如增大TTL的值等,这里不作具体的限制。
如图3所示为本发明实施例二抗DNS死域攻击的缓存系统的结构图,如图3所示,本系统包括客户端201、递归服务器202以及权威域名服务器203,递归服务器内布置有控制模块2021以及失败地址缓存模块2022,其中,控制模块2021负责管理控制整个递归服务器的工作,当客户端201向递归服务器202提出域名查询请求时,递归服务器202开始对某一区域中所有权威域名服务器203进行查询,如果不能查询到,则在失败地址缓存模块2022中添加该区域的信息并启动等待计时,若在计时时间内收到该区域的查询请求,直接返回“SERVFAIL”。
在递归服务器与区域的所有权威域名服务器通信中断的情况下,本发明将避免发起过多的递归查询请求,减少宽带占用和网络拥堵,节省服务器资源和时间,显著提升DNS服务器抗此类攻击的性能。
上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。