一种提高DNS可用性的方法及系统与流程

文档序号:11206678阅读:483来源:国知局
一种提高DNS可用性的方法及系统与流程

本发明涉及一种域名解析技术领域,具体涉及一种基于缓存复用策略的提高dns可用性的方法及系统。



背景技术:

dns(domainnamesystem,域名系统),因特网上作为域名和ip地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的ip数串。通过主机名,最终得到该主机名对应的ip地址的过程叫做域名解析(或主机名解析)。

按照功能不同,dns解析服务中两个重要的服务主体是权威dns服务和递归dns服务。权威dns是经过授权对域名进行解析的服务器,所有域名的原始dns信息都保存在权威服务器上。递归dns是绝大部分互联网用户查询域名时实际访问的dns服务器,它负责接受用户对任意域名查询,并向相应的权威服务器发送迭代请求,将最终结果返回给用户,同时可以缓存查询结果以避免重复迭代查询。

dns是网络应用的基础设施,它的安全性对于互联网的安全有着举足轻重的影响。一直以来,互联网基础架构的脆弱性有目共睹,域名系统的安全问题一直是国内外互联网服务运行的短板。随着互联网云平台技术的不断发展,dns权威服务器变得越来越集中,通常情况下dns服务提供商都会给多个网站或用户提供服务。这种情况下,一旦集中的dns权威服务器被攻击导致服务不可达,造成的影响将是大规模的dns服务不可用,从而导致互联网的瘫痪。



技术实现要素:

为解决以上问题,本发明为了在权威服务器因自身原因服务宕机、网络被攻击造成带宽受限,或其他不可预料的网络故障发生,而导致dns权威服务器不可达时,dns递归服务器通过复用缓存中的记录,尽可能地提高客户机一侧dns服务的可用性,降低了由于集中的dns权威服务器遭受攻击而造成大规模dns服务失败的影响。同时,通过减少向权威服务器发送请求,降低了权威服务器在遭受攻击时进一步增加的负载。

具体的,本发明提供了一种提高dns可用性的方法,用于dns递归服务器,包括如下步骤:

接收dns查询请求;

如果所述dns查询请求的查询数据在dns递归服务器的缓存中且所述查询数据的ttl未过期,则返回缓存的查询结果;如果所述查询数据不在所述dns递归服务器的缓存中或者所述查询数据的ttl已过期,则向相应的dns权威服务器发起迭代查询。

优选的,如上所述的提高dns可用性的方法,所述迭代查询包括,接受所述dns权威服务器的应答,将记录缓存到所述dns递归服务器,重置缓存复用计数器,所述dns递归服务器判断该应答是否是本次dns查询的应答结果;如果是,将返回缓存的查询结果,结束本次查询;如果不是,则根据收到的应答继续向上述dns权威服务器发送请求进行迭代查询。

优选的,如上所述的提高dns可用性的方法,如果在所述迭代查询的过程中,如果某一级权威服务器没有应答,则所述dns递归服务器查询所述查询的数据是否已经在缓存中,若不在缓存中则返回服务失败,若在缓存中,则判断缓存复用计数器是否超过所配置的缓存复用次数;如果是,则返回服务失败,如果否,则重置所述查询的数据的ttl,缓存复用计数器减一,然后返回所述查询的数据的记录。

优选的,如上所述的提高dns可用性的方法,重置上述数据的ttl的过程如下:

将该查询的数据中的每条资源记录及其签名信息记录的ttl取下列数值中的最小值:

(1)收到的dns权威服务器应答中的ttl;

(2)收到的dns权威服务器应答中的签名信息记录的ttl;

(3)该数据的签名信息记录中的原始ttl;

(4)该数据的签名信息记录中的过期时间减去当前时间的差值。

优选的,如上所述的提高dns可用性的方法,当所述缓存复用计数器值降低到零后,dns递归服务器删除该所查询的数据的缓存,并向返回服务失败。

根据本发明的另一个方面,还提供了一种提高dns可用性的系统,包括如下模块:

请求接收模块,用于接收dns查询请求;

缓存复用模块,用于在所述dns查询请求的查询数据在缓存中且所述查询数据的ttl未过期时,返回缓存的查询结果;或者所述查询数据不在缓存中或者所述查询数据的ttl已过期时,向相应的dns权威服务器发起迭代查询。

优选的,如上所述的提高dns可用性的系统,所述缓存复用模块包括判断单元,用于在所述迭代查询的过程中,接受所述dns权威服务器的应答,将记录缓存到所述dns递归服务器,重置缓存复用计数器,判断该应答是否是本次dns查询的应答结果;如果是,将返回缓存的查询结果,结束本次查询;如果不是,则根据收到的应答继续向上述dns权威服务器发送请求进行迭代查询。

优选的,如上所述的提高dns可用性的系统,所述缓存复用模块还包括查询单元,用于在所述迭代查询的过程中,如果某一级权威服务器没有应答,则查询所述查询的数据是否已经在缓存中,若不在缓存中则返回服务失败,若在缓存中,则判断缓存复用计数器是否超过所配置的缓存复用次数;如果是,则返回服务失败,如果否,则重置所述查询的数据的ttl,缓存复用计数器减一,然后返回所述查询的数据的记录。

优选的,如上所述的提高dns可用性的系统,所述查询单元进一步包括重置装置,用于根据以下规则重置上述数据的ttl:将该查询的数据中的每条资源记录及其签名信息记录的ttl取下列数值中的最小值:

(1)收到的dns权威服务器应答中的ttl;

(2)收到的dns权威服务器应答中的签名信息记录的ttl;

(3)该数据的签名信息记录中的原始ttl;

(4)该数据的签名信息记录中的过期时间减去当前时间的差值。

优选的,如上所述的提高dns可用性的系统,所述缓存复用模块还包括删除单元,用于在所述缓存复用计数器的值降低到零后,删除该所查询的数据的缓存,并返回服务失败。

本发明的有益效果如下:本发明中的“缓存复用机制”,可以在权威服务器不可达的情况下,让递归服务器提供可用性更高的dns解析服务:首先,集中的权威dns服务器被攻击时导致带宽等系统资源被严重占用或服务宕机时,能够有效地提高自身服务的可用性,避免大规模的dns服务失败和互联网瘫痪。其次,权威dns服务器被攻击时导致带宽等系统资源被严重占用时,递归服务器将在保持正常服务的情况下减少dns请求给权威服务器带来的负载。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

附图1示出了根据本发明实施例的提高dns可用性的数据提取方法流程框图;

附图2示出了根据本发明实施例的基于缓存复用策略的dns查询流程示意图;

附图3示出了根据本发明实施例的基于缓存复用策略的dns记录数据结构示意图。

附图4示出了根据本发明实施例的提高dns可用性的数据提取系统结构图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

本发明中的“缓存复用策略”是工作在递归服务器上,当递归服务器上被查询的主机记录过期并且按照正常的查询流程未能从权威服务器得到响应结果时递归服务器遵循的行为策略。“缓存复用策略”的本质是,在外发递归查询过程中由于权威服务器不可达而解析失败时,递归服务器将采取本发明中描述的方法对内存中的缓存记录进行复用,以此达到提高客户机一侧dns服务可用性的目的。下面首先介绍本发明中所使用的ttl、权威域名服务器、递归域名服务器的工作原理。

ttl是timetolive的缩写,该字段指定ip包被路由器丢弃之前允许通过的最大网段数量。ttl是ipv4包头的一个8bit字段。

ttl的作用是限制ip数据包在计算机网络中的存在的时间。ttl的最大值是255,ttl的一个推荐值是64。

虽然ttl从字面上翻译,是可以存活的时间,但实际上ttl是ip数据包在计算机网络中可以转发的最大跳数。ttl字段由ip数据包的发送者设置,在ip数据包从源到目的的整个转发路径上,每经过一个路由器,路由器都会修改这个ttl字段值,具体的做法是把该ttl的值减1,然后再将ip包转发出去。如果在ip包到达目的ip之前,ttl减少为0,路由器将会丢弃收到的ttl=0的ip包并向ip包的发送者发送icmptimeexceeded消息。

ttl的主要作用是避免ip包在网络中的无限循环和收发,节省了网络资源,并能使ip包的发送者能收到告警消息。

ttl是由发送主机设置的,以防止数据包不断在ip互联网络上永不终止地循环。转发ip数据包时,要求路由器至少将ttl减小1。

ttl值的注册表位置中有个defaultttl的dword值,其数据就是默认的ttl值了,可以修改,但不能大于十进制的255。windows系统设置后重启才生效。

生存时间,就是一条域名解析记录在dns服务器中的存留时间。当各地的dns服务器接受到解析请求时,就会向域名指定的ns服务器(权威域名服务器)发出解析请求从而获得解析记录;在获得这个记录之后,记录会在dns服务器(各地的缓存服务器,也叫递归域名服务器)中保存一段时间,这段时间内如果再接到这个域名的解析请求,dns服务器将不再向ns服务器发出请求,而是直接返回刚才获得的记录;而这个记录在dns服务器上保留的时间,就是ttl值。

ttl过期的含义是指该数据(即,该解析纪录)的生命周期结束,网络设备不再传输该数据而是直接将其抛弃。

如图1所示,本发明提供了一种提高dns可用性的数据提取方法,用于dns递归服务器,包括如下步骤:s110、请求接收步骤,收到dns查询请求;s120、缓存复用步骤,如果查询的数据在缓存中且该数据的ttl未过期则返回缓存的查询结果;如果查询的数据不在缓存中或者该数据的ttl已过期,则将向相应的dns权威服务器发起迭代查询。

如图2所示,示出了本发明中dns递归服务器缓存复用机制的流程图,说明如下:

当收到一个dns查询请求时,递归服务器首先从缓存中查找是否有相应的查询记录。如果在缓存中查到了相应的记录,且该记录的ttl未过期,递归服务器则将该记录作为应答返回给客户。若当前缓存中无对应的查询记录,或者缓存的记录ttl值已过期,递归服务器将向相应的dns权威服务器发起迭代查询。在所述迭代查询的过程中,如果收到所述dns权威服务器的应答,将记录缓存到dns递归服务器,重置缓存复用计数器,所述dns递归服务器判断该应答是否是本次dns查询的应答结果;如果是,将返回缓存的查询结果,结束本次查询;如果不是,则根据收到的应答继续向上述dns权威服务器发送请求进行迭代查询。在所述迭代查询的过程中,如果某一级权威服务器没有应答(如响应超时、网络不可达等原因),则所述dns递归服务器查询所述查询的数据是否已经在缓存中,若不在缓存中则返回服务失败,若在缓存中,则判断缓存复用计数器是否超过所配置的缓存复用次数;如果是,则返回服务失败,如果否,则重置所述查询的数据的ttl,缓存复用计数器减一,然后返回所述查询的数据的记录。

由于应答数据的ttl已过期,缓存服务器在使用该数据应答时,需要重置该数据的ttl值,具体算法如下:

将该数据的每条资源记录和签名信息(rrsig,resourcerecordsignature,用于存储dns资源记录的签名信息)记录的ttl均取下列数值中的最小值:

·收到的dns权威服务器应答中的ttl;

·收到的dns权威服务器应答中的对应的rrsig记录的ttl;

·该数据的rrsig记录中的原始ttl;

·该数据的rrsig记录中的过期时间减去当前时间的差值。

出于安全考虑,递归服务器不应无限制地复用过期数据并重置其ttl,而是应当服从一个可由参数进行控制的限制规则:“缓存复用策略”相关的配置中,服务器管理员可以配置一个复用次数的总数。递归服务器运行时,每当从权威服务器查询到应答,便为解析记录设置上初始值为管理员所配置的“复用总数”的计数器。之后每当解析记录过期且权威服务器服务不可用时(也就是缓存复用机制被触发时),权威服务器将重置该解析记录的ttl值,并将计数器减一,当计数器值降低到零后,递归服务器将删除该查询数据的缓存,并向客户机回复servfail(服务失败)。

如图3所示,为基于上述缓存复用策略的dns记录数据结构示意图,可见,该数据结构从上到下包括:dns查询键、dns应答集合、缓存复用使用的ttl、以及缓存复用的次数。

如图4所示,根据本发明实施例的提高dns可用性的数据提取系统100,包括如下模块:

请求接收模块110,用于接收dns查询请求;

缓存复用模块120,用于在查询的数据在缓存中且该数据的ttl未过期时,返回缓存的查询结果;或者查询的数据不在缓存中或者该数据的ttl已过期时,将向相应的dns权威服务器发起迭代查询。

所述缓存复用模块120包括判断单元121,用于在所述迭代查询的过程中,如果收到所述dns权威服务器的应答,将记录缓存到dns递归服务器,重置缓存复用计数器,判断该应答是否是本次dns查询的应答结果;如果是,将返回缓存的查询结果,结束本次查询;如果不是,则根据收到的应答继续向上述dns权威服务器发送请求进行迭代查询。

所述缓存复用模块还包括查询单元122,用于在所述迭代查询的过程中某一级权威服务器没有应答时,查询所述数据是否已经在缓存中,若未缓存则返回服务失败给客户,若有缓存则重判断缓存复用计数器是否超过所配置的缓存复用次数;如果是,则返回服务失败,如果否,则重置所述查询的数据的ttl,缓存复用计数器减一,然后返回所述查询的数据的记录。

所述查询单元进一步包括重置装置1221,用于根据以下规则重置上述数据的ttl:将该查询的数据中的每条资源记录及其签名信息记录的ttl取下列数值中的最小值:

(1)收到的dns权威服务器应答中的ttl;

(2)收到的dns权威服务器应答中的签名信息记录的ttl;

(3)该数据的签名信息记录中的原始ttl;

(4)该数据的签名信息记录中的过期时间减去当前时间的差值。

所述缓存复用模块还包括删除单元123,用于在所述缓存复用计数器值降低到零后,删除该所查询的数据的缓存,并返回服务失败。

本发明中的“缓存复用机制”,可以在权威服务器不可达的情况下,让递归服务器提供可用性更高的dns解析服务:首先,集中的权威dns服务器被攻击时导致带宽等系统资源被严重占用或服务宕机时,能够有效地提高自身服务的可用性,避免大规模的dns服务失败和互联网瘫痪。其次,权威dns服务器被攻击时导致带宽等系统资源被严重占用时,递归服务器将在保持正常服务的情况下减少dns请求给权威服务器带来的负载。

需要说明的是:

在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一根或多根,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一根或多根设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的虚拟机的创建装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1