一种高效的DNS服务器ACL文件去重方法技术

技术编号:22888330 阅读:30 留言:0更新日期:2019-12-21 08:55
本发明专利技术公开了一种高效的DNS服务器ACL文件去重方法,所述方法包括步骤1:监控BIND服务器的状态,每当BIND服务器进行配置热加载操作时,获取配置文件目录下的所有ACL文件内容并进行重复性检测;步骤2:若ACL文件内的IP端存在交叉或包含的情况,则对重复的IP段进行去重处理;步骤3:若ACL文件内的IP段交叉,则比较两个IP段的起始IP大小,删除起始IP较大的IP段;若ACL文件内的IP段为包含关系,则比较两个IP段的起始IP大小和结尾IP大小,将起始IP较小的IP段的结尾IP修改为另一个IP段的起始IP。

An efficient ACL file de duplication method for DNS server

【技术实现步骤摘要】
一种高效的DNS服务器ACL文件去重方法
本专利技术涉计算机网络领域,具体的说,是一种高效的DNS服务器ACL文件去重方法。
技术介绍
在IP(InternetProtocol,互联网协议)网络中,DNS(DomainNameSystem,域名系统)是最关键的基础服务之一,其主要功能是将域名与IP地址作转换。通过DNS服务器的查询服务,可以找到所需站点或资源的入口,进而对站点或资源进行访问。Bind(BerkeleyInternetNameDomain,伯克莱网间名域)是目前最常用的DNS服务器软件,其配置文件包括:named.conf文件:记录Bind安装路径、ACL文件的存放路径、view文件的存放路径、日志的存放路径;view文件:包含多个view(区域),每个view记录了地区信息、运营商信息、域名信息的组合对应的zone文件的存放路径;zone文件:记录view对应的解析记录信息;ACL文件:记录view对应的IP地址信息。在多节点部署的业务中,其业务的dns服务器常用view文件指定业务的各个节点,并在view对应的ACL文件中加入该节点地区的所有客户端IP;一个节点(view)可包含一个或多个ACL文件;首先介绍DNSBind服务器解析请求的流程:dns查询请求到来时,首先获取请求的来源IP,之后读取Bind主配置文件named.conf的内容,获取其中配置的所有view文件,并按顺序从上至下依次遍历所有的view文件,判断请求的来源IP地址是否在view文件包含的ACL文件中,若包含,则使用该view文件指定的zone文件对查询请求查询的域名进行解析,否则使用默认的view进行解析或递归至上层dns服务器进行递归查询;目前,绝大部分DNS的Bind服务器的ACL文件都采用手动添加或代码直接添加的方式,而没有对ACL文件的内容进行检测;由于bind服务器对view和ACL的遍历都是顺序的,在上述流程中,若ACL文件存在重复,则最先匹配到客户端IP的节点会对该dns查询进行解析,这样会导致原本应该解析到A节点的站点被解析到B处,造成域名解析错误。因此可以看出,在获取view文件包含的所有ACL文件时,未对ACL文件进行重复性检测,这是导致DNS解析异常的原因。
技术实现思路
本专利技术的目的在于提供一种高效的DNS服务器ACL文件去重方法,用于解决现有技术中DNS的Bind服务器的ACL文件采用手动添加或代码直接添加的方式而没有对acd文件内容进行检测导致DNS解析异常的问题。本专利技术通过下述技术方案解决上述问题:一种高效的DNS服务器ACL文件去重方法,所述方法包括如下步骤:步骤1:监控BIND服务器的状态,每当BIND服务器进行配置热加载操作时,获取配置文件目录下的所有ACL文件内容并进行重复性检测;步骤2:若ACL文件内的IP端存在交叉或包含的情况,则对重复的IP段进行去重处理;步骤3:若ACL文件内的IP段交叉,则比较两个IP段的起始IP大小,删除起始IP较大的IP段;若ACL文件内的IP段为包含关系,则比较两个IP段的起始IP大小和结尾IP大小,将起始IP较小的IP段的结尾IP修改为另一个IP段的起始IP。优选地,所述步骤1中的重复性检测包括如下步骤:步骤1.1:将ACL文件中的IP或IP段转换为十进制的数字IP,IP段为两个数字的IP区间即为数组;步骤1.2:提取每个区间的起始数字IP,即第一个IP,若此时存在重复的IP地址,表明存在重复,则返回重复的IP;不存在重复则进入步骤1.3;步骤1.3:将步骤1.2所提取的区间起始数按从小到大的顺序放入数合法组中;步骤1.4:获取步骤1.1中每个区间的第二个数字IP,使用二分查找法在步骤1.3的有序数组中查询第一个比该数字IP大的值,将这两个数字IP对应的IP段进行比较,返回重复的IP段;以此类推按顺序获取第n个数字IP,使用二分查找法在有序数组中查询第一个比该数字IP大的值,将这两个数字IP对应的IP进行比较,返回重复的IP段。优选地,所述步骤1中设置有定时任务,用于定期对ACL文件进行检测。本专利技术与现有技术相比,具有以下优点及有益效果:当存在n个IP段待检测时,若采用传统的IP段两两比较,每次只能两个IP段进行对比,且每次的比较次数为n,所用的时间复杂度为O(n2);本专利技术的方法每次的比较次数为log2n,所用的时间复杂度为O(nlog2n),比较效率较高。同时,本方法在保证了DNS解析流程的效率尽可能不受影响的情况下,使用最少的遍历次数实现了对ACL文件内容的高效去重检测,很好的解决了ACL重复导致的域名解析异常问题。附图说明图1为本专利技术的实施例中的重复检测流程图。具体实施方式下面结合实施例对本专利技术作进一步地详细说明,但本专利技术的实施方式不限于此。实施例1:结合附图1所示,一种高效的DNS服务器ACL文件去重方法,所述方法包括如下步骤:步骤1:监控BIND服务器的状态,每当BIND服务器进行配置热加载操作时,获取配置文件目录下的所有ACL文件内容并进行重复性检测,重复性检测包括如下步骤:步骤1.1:将ACL文件中的IP或IP段转换为十进制的数字IP,IP段为两个数字的IP区间即为数组;步骤1.2:提取每个区间的起始数字IP,即第一个IP,若此时存在重复的IP地址,表明存在重复,则返回重复的IP;不存在重复则进入步骤1.3;步骤1.3:将步骤1.2所提取的区间起始数按从小到大的顺序放入数合法组中;步骤1.4:获取步骤1.1中每个区间的第二个数字IP,使用二分查找法在步骤1.3的有序数组中查询第一个比该数字IP大的值,将这两个数字IP对应的IP段进行比较,返回重复的IP段;以此类推按顺序获取第n个数字IP,使用二分查找法在有序数组中查询第一个比该数字IP大的值,将这两个数字IP对应的IP进行比较,返回重复的IP段。;步骤2:若ACL文件内的IP端存在交叉或包含的情况,则对重复的IP段进行去重处理;步骤3:若ACL文件内的IP段交叉,则比较两个IP段的起始IP大小,删除起始IP较大的IP段;若ACL文件内的IP段为包含关系,则比较两个IP段的起始IP大小和结尾IP大小,将起始IP较小的IP段的结尾IP修改为另一个IP段的起始IP。实施上述方法,当BIND服务器每次reload信号到来时,程序初始化一个空的有序数组A和一个映射表Dict,用于存放IP段数据;读取所有的ACL文件内容到内存,遍历所有的待检测的IP或IP段:对每个IP段,将其转化为十进制的首尾数字IP二元组:x.x.x.x/n转化为如[num_IP_min,num_IP_max]形式的数组,如IP段10.0.0.0/8可转化为[167772160,184549375];若是单个IP,则将其视为起始IP和末尾IP相同的IP段本文档来自技高网
...

【技术保护点】
1.一种高效的DNS服务器ACL文件去重方法,其特征在于,所述方法包括如下步骤:/n步骤1:监控BIND服务器的状态,每当BIND服务器进行配置热加载操作时,获取配置文件目录下的所有ACL文件内容并进行重复性检测;/n步骤2:若ACL文件内的IP端存在交叉或包含的情况,则对重复的IP段进行去重处理;/n步骤3:若ACL文件内的IP段交叉,则比较两个IP段的起始IP大小,删除起始IP较大的IP段;若ACL文件内的IP段为包含关系,则比较两个IP段的起始IP大小和结尾IP大小,将起始IP较小的IP段的结尾IP修改为另一个IP段的起始IP。/n

【技术特征摘要】
1.一种高效的DNS服务器ACL文件去重方法,其特征在于,所述方法包括如下步骤:
步骤1:监控BIND服务器的状态,每当BIND服务器进行配置热加载操作时,获取配置文件目录下的所有ACL文件内容并进行重复性检测;
步骤2:若ACL文件内的IP端存在交叉或包含的情况,则对重复的IP段进行去重处理;
步骤3:若ACL文件内的IP段交叉,则比较两个IP段的起始IP大小,删除起始IP较大的IP段;若ACL文件内的IP段为包含关系,则比较两个IP段的起始IP大小和结尾IP大小,将起始IP较小的IP段的结尾IP修改为另一个IP段的起始IP。


2.根据权利要求1所述的高效的DNS服务器ACL文件去重方法,其特征在于,所述步骤1中的重复性检测包括如下步骤:
步骤1.1:将ACL文件中的IP或IP段转换为十进制的数字I...

【专利技术属性】
技术研发人员:肖建杨川常清雪
申请(专利权)人:四川长虹电器股份有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1