CN103929507B - 一种实现可离线化dns服务的方法及装置 - Google Patents
一种实现可离线化dns服务的方法及装置 Download PDFInfo
- Publication number
- CN103929507B CN103929507B CN201410175344.6A CN201410175344A CN103929507B CN 103929507 B CN103929507 B CN 103929507B CN 201410175344 A CN201410175344 A CN 201410175344A CN 103929507 B CN103929507 B CN 103929507B
- Authority
- CN
- China
- Prior art keywords
- dns
- user
- address
- local
- proxy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种实现可离线化DNS服务的方法及装置,所述方法包括:根据DNS代理的历史代理记录建立本地DNS服务器;DNS代理接收到用户DNS请求,查询本地缓存是否有与该用户DNS请求对应的记录;若本地缓存无与该用户DNS请求对应的记录,则向外部DNS服务器、本地DNS服务器转发该用户DNS请求;本地DNS服务器获取与该用户DNS请求对应的IP地址,延迟预设时间后将该IP地址返回给DNS代理;DNS代理若先收到本地DNS服务器返回的IP地址,则将本地DNS服务器返回的所述IP地址作为解析结果,向用户返回所述解析结果。通过本发明的技术方案,能够实现可离线化的DNS代理服务,降低了DNS代理对外部DNS服务器的依赖。
Description
技术领域
本发明涉及域名解析领域,尤其涉及一种实现可离线化DNS服务的方法及装置。
背景技术
域名解析系统DNS,是将域名解释成IP地址的服务。
DNS代理,是用户与DNS服务器的一个中间层,可接受用户请求,向外面DNS服务器发送请求,把返回的结果发送给用户。
离线DNS代理,指的是不依赖于外部DNS服务器的DNS代理,就是说,如果外面的DNS服务器无法正常工作时,DNS代理无法从外部DNS服务得到请求的解析结果,在这情况下,离线DNS代理仍可以为用户提供正常的DNS解析服务。
视图,是指根据DNS请求用户的源IP区分用户,DNS代理可以设置视图,如广东电信视图,并可把一些IP地址指向视图,如把119.128.0.0/16的这个B类地址指向广东电信视图,意思就是,源IP属于119.128.0.0/16这个地址范围内的请求都属于电信视图管的;DNS代理为每个视图设置一个或多个的DNS服务器,如广东电信视图就设置几个广东电信的DNS服务器,如202.96.128.166、202.96.128.86等;用户请求会根据视图转发给设置好的外部DNS服务器。
现有的DNS代理服务基本实现了DNS缓存、智能视图等功能。参考图1、图2所示,现有离线DNS代理的实现过程包括:
步骤1、DNS代理接收用户DNS请求,DNS代理接收到DNS请求后,如请求www.efly.cc,先计算出对应的视图号。
步骤2、在本地缓存中查找是否有相应DNS请求的结果,若有,则执行步骤4,若无则执行步骤3;
步骤3、DNS代理根据视图号,选择外部的DNS服务器,并向这些外部的DNS服务器发送DNS请求,获取到与DNS请求的域名对应的解析结果,并保存该条DNS代理记录到本地缓存。
步骤4、将解析结果返回给用户。
现有技术中,DNS代理从外部DNS服务器得到域名对应的IP结果,把结果保存到本地缓存中,再把本地结果以字符串形式通过ssylog保存到本地硬盘。Syslog常被称为系统日志或系统记录,是一种用来在互联网协议(TCP/IP)的网络中传递记录档讯息的标准。
现有技术的缺点包括:DNS代理复位对外部DNS服务器过于依赖。即在外部DNS服务器不能正常工作的情况下,DNS代理将不能正常对用户进行DNS解析服务,DNS代理的本地缓存是有时间限制的(缓存的每条代理记录均有其生存时间(TT:Time To Live),当缓存的代理记录超过其TTL时,就会自动从缓存中清出。若本地缓存没有当前DNS请求的代理记录时,所述DNS请求会转发到外部的DNS服务器,此时若外部的DNS服务器不正常,则无法返回对应的解析结果,DNS代理没有对应的解析结果返回给用户,导致DNS代理不能正常服务。
因此,现有技术还有待改进。
发明内容
本发明的目的在于提出一种实现可离线化DNS服务的方法及装置,能够实现当外部DNS服务器出现问题后,DNS代理仍然可以正常地对用户提供域名解析服务。
为达此目的,本发明采用以下技术方案:
一种实现可离线化DNS服务的方法,包括:
根据DNS代理的历史代理记录建立本地DNS服务器;
DNS代理接收到用户DNS请求,查询本地缓存是否有与该用户DNS请求对应的记录;
若本地缓存无与该用户DNS请求对应的记录,则DNS代理向外部DNS服务器、本地DNS服务器转发该用户DNS请求;
本地DNS服务器获取与该用户DNS请求对应的IP地址,延迟预设时间后将该IP地址返回给DNS代理;
DNS代理若先收到本地DNS服务器返回的IP地址,则将本地DNS服务器返回的所述IP地址作为解析结果,若先收到外部DNS服务器返回的IP地址,则将外部DNS服务器返回的IP地址作为解析结果;向用户返回所述解析结果。
其中,所述根据DNS代理的历史代理记录建立本地DNS服务器,包括:
DNS代理将历史代理记录写入系统日志以生成运营数据,所述历史代理记录包括若干用户DNS请求、以及各用户DNS请求对应的IP地址;
分析所述运营数据得出历史解析记录,每条历史解析记录包括用户DNS请求所属的视图号、域名、域名对应的IP地址、以及域名被解析为该IP地址的次数;
按照所述次数对各域名对应的IP地址的历史解析记录进行排序,分别提取各域名对应的IP地址的历史解析记录中次数最多的前4条保存到本地数据库;
所述本地DNS服务器获取与该用户DNS请求对应的IP地址,包括:
本地DNS服务器查找本地数据库,获取与该用户DNS请求对应的IP地址。
其中,所述分析所述运营数据得出对应的历史解析记录,包括:
按照第一时间周期对所述运营数据进行一次分析,以得出各用户DNS请求所属的视图号、域名、域名对应的若干IP地址、以及域名被解析为各IP地址的次数;
按照第二时间周期对所述一次分析的结果进行二次分析,以对各域名被解析为对应IP地址的次数进行统计,得出所述历史解析记录;
所述第二时间周期大于两倍所述第一时间周期。
其中,所述将历史代理记录写入系统日志以生成运营数据,具体为:
定期将代理过的若干用户DNS请求、以及各用户DNS请求对应的IP地址以字符串形式通过syslog写入本地硬盘,以生成运营数据。
其中,所述本地数据库为非关系型数据库;
所述非关系型数据库中,将视图号和域名作为键,IP地址作为值。
其中,所述本地DNS服务器查找本地数据库,获取与该用户DNS请求对应的IP地址,包括:
本地DNS服务器开启若干线程,分别用于监听所述非关系型数据库中的各视图号的DNS请求;
所述线程分别监听与各视图号对应的UDP端口;
当某一线程监听到UDP端口有DNS请求时,提取该DNS请求中的域名,通过该域名和对应的视图号查询所述非关系型数据库,获取对应的IP地址。
其中,所述向用户返回所述解析结果,具体为:
生成包含所述用户DNS请求、所述解析结果的代理记录;
DNS代理存储所述解析结果到本地缓存;若所述解析结果为本地DNS服务器提供的IP地址,则随机生成预设范围内的一个时间值作为该条代理记录的生存时间,以使该代理记录的生存时间小于等于默认代理记录的生存时间;
DNS代理以数据包的形式向用户返回所述解析结果。
一种可离线化DNS服务的装置,包括:
构建单元,用于DNS代理的根据历史代理记录建立本地DNS服务器;
缓存查询单元,用于接收到用户DNS请求,查询本地缓存是否有与该用户DNS请求对应的记录;
请求转发单元,用于若本地缓存无与该用户DNS请求对应的记录,则向外部DNS服务器、本地DNS服务器转发该用户DNS请求;
本地解析单元,用接收本地DNS服务器返回的与该用户DNS请求对应的IP地址,所述本地DNS服务器获取与该用户DNS请求对应的IP地址,延迟预设时间后将该IP地址返回;
请求响应单元,用于若先收到本地DNS服务器返回的IP地址,则将本地DNS服务器返回的所述IP地址作为解析结果,若先收到外部DNS服务器返回的IP地址,则将外部DNS服务器返回的IP地址作为解析结果;以及向用户返回所述解析结果。
其中,所述根据DNS代理的历史代理记录建立本地DNS服务器,包括:
将历史代理记录写入系统日志以生成运营数据,所述历史代理记录包括若干用户DNS请求、以及各用户DNS请求对应的IP地址;
分析所述运营数据得出历史解析记录,每条历史解析记录包括用户DNS请求所属的视图号、域名、域名对应的IP地址、以及域名被解析为该IP地址的次数;
按照所述次数对各域名对应的IP地址的历史解析记录进行排序,分别提取各域名对应的IP地址的历史解析记录中次数最多的前4条保存到本地数据库;
所述本地DNS服务器获取与该用户DNS请求对应的IP地址,包括:
本地DNS服务器查找本地数据库,获取与该用户DNS请求对应的IP地址。
实施本发明实施例,具有如下有益效果:
本发明实施例通过预先建立本地DNS服务器,接收到用户DNS请求时,先查询本地缓存是否有与该用户DNS请求对应的记录;若无,则向外部DNS服务器、本地DNS服务器转发该用户DNS请求;本地DNS服务器获取与该用户DNS请求对应的IP地址,延迟预设时间后将该IP地址返回给DNS代理;DNS代理若先收到本地DNS服务器返回的IP地址,则将本地DNS服务器返回的所述IP地址作为解析结果返回给用户,若先收到外部DNS服务器返回的IP地址,则将外部DNS服务器返回的IP地址作为解析结果返回给用户。本发明的方案,当外部DNS服务器出现问题,无法正常返回查询结果时,DNS代理仍然能正常为用户提供域名解释服务,有效地降低了DNS代理对外部DNS服务器的依赖,使DNS代理更加稳定可靠。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术的实现DNS代理的示意图。
图2是现有技术的DNS代理的实现流程图。
图3是本发明第一实施例的一种实现可离线化DNS服务的方法流程示意图。
图4是本发明第一实施例的实现DNS代理的示意图。
图5是本发明第一实施例中建立本地DNS服务器的实现流程图。
图6是本发明第一实施例中本地DNS服务器获取对应IP地址的实现流程图。
图7是本发明第二实施例的一种实现可离线化DNS服务的装置结构示意图。
具体实施方式
下面结合本发明的附图对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
结合图3-图6对本发明的第一实施例进行说明。
图3是本发明第一实施例的一种实现可离线化DNS服务的方法流程图,详述如下:
步骤11,根据DNS代理的历史代理记录建立本地DNS服务器。
在第一实施例中,将DNS代理的历史代理记录写入系统日志以生成运营数据,所述历史代理记录包括若干用户DNS请求、以及各用户DNS请求对应的IP地址。通过分析所述运营数据得出对应的历史解析记录,每条历史解析记录包括用户DNS请求所属的视图号、域名、域名对应的IP地址、以及域名被解析为该IP地址的次数。然后按照所述次数对各域名对应的IP地址的历史解析记录进行排序,分别提取各域名对应的IP地址的历史解析记录中次数最多的前4条保存到本地数据库,以建立本地DNS服务器。
步骤12,DNS代理接收到用户DNS请求,查询本地缓存是否有与该用户DNS请求对应的记录。
DNS代理接收到用户DNS请求后,会分析请求的内容,获取用户DNS请求的域名、用户的源IP,通过用户的源IP确实用户的视图号。然后查找本地缓存。
步骤13,若本地缓存无与该用户DNS请求对应的记录,则DNS代理的向外部DNS服务器、本地DNS服务器转发该用户DNS请求。
若本地缓存有与该用户DNS请求对应的记录,即若本地缓存有与该视图号和域名对应的记录,则把结果返回给相应的用户,完成一个DNS解析过程。若无,根据视图号,向外部DNS服务器转发所述用户DNS请求,同时向本地DNS服务器转发所述用户DNS请求。
步骤14,接收本地DNS服务器提供的与该用户DNS请求对应的IP地址,所述本地DNS服务器获取与该用户DNS请求对应的IP地址,延迟预设时间后将该IP地址返回给DNS代理。
该步骤之前,本地DNS服务器查找本地数据库,获取与该用户DNS请求对应的IP地址,并延迟预设时间后将该IP地址返回给DNS代理。本实施例中,所述本地数据库为非关系型数据库;所述非关系型数据库中,将视图号和域名作为键,IP地址作为值。因此本地DNS服务器可通过键(视图号+域名)向非关系型数据库中拿数据,得到对应的值(IP地址)。
步骤15,DNS代理若先收到本地DNS服务器返回的IP地址,则将本地DNS服务器返回的所述IP地址作为解析结果,若先收到外部DNS服务器返回的IP地址,则将外部DNS服务器返回的IP地址作为解析结果;向用户返回所述解析结果。
本实施例中,步骤14中的预设时间大于正常情况下外部DNS服务器返回数据所需的时间,由此保证在外部DNS服务器正常的情况下,DNS代理一定是先收到外部DNS服务器返回的IP地址,外部DNS服务器返回的结果就是解析结果写入本地缓存,并将该IP地址响应给用户。当外部DNS服务器不正常或者网络出现故障时,DNS代理则只能收到本地DNS服务器返回的IP地址,将本地DNS服务器返回的所述IP地址作为解析结果,同时把此次解析结果保存到本地缓存中,再把代理信息以字符串形式通过syslog保存到本地硬盘,以更新所述运营数据。
较佳的,本实施例中,若本地DNS服务器提供的所述IP地址作为解析结果时,生成包含所述用户DNS请求、所述IP地址的代理记录,并将该代理记录的TTL设置得很短(30秒),使其小于等于默认代理记录的生存时间;所以该条缓存很快就会失效(30秒,在这30秒内,用户使用的结果都由缓存提供),该条缓存失效后会再向外部DNS服务器和本地DNS服务器转发DNS请求。通过该方式让该条缓存时间快速失效,提高缓存更新的频率。
通过本发明第一实施例,当外部DNS服务器出现问题,无法正常返回DNS解析结果时,DNS代理仍然能正常为用户提供域名解析服务,有效地降低了DNS代理对外部DNS服务器的依赖,使得DNS代理更加稳定可靠。
下面对本发明第一实施例中建立本地DNS服务器进行详细说明。
如图5所示,本发明第一实施例中根据DNS代理的历史代理记录建立本地DNS服务器包括如下步骤:
步骤21,将历史代理记录写入系统日志以生成运营数据,所述历史代理记录包括若干用户DNS请求、以及各用户DNS请求对应的IP地址。
本实施例中,通过系统syslog服务,定期(以每一个钟一个文件的格式)将代理过的若干用户DNS请求、以及各用户DNS请求对应的IP地址以字符串形式写入本地硬盘,以生成运营数据。
步骤22,按照第一时间周期对所述运营数据进行一次分析,以得出各用户DNS请求所属的视图号、域名、域名对应的若干IP地址、以及域名被解析为各IP地址的次数。
例如,每1小时分析一次syslog产生的运营数据,生成中间结果,中间结果形式如:
2www.efly.cc 1.1.1.1:3 1.1.1.2:5
意思是,在视图2中,www.efly.cc这域名,被解释成1.1.1.1为3次,被解释成1.1.1.2为5次。
步骤23,按照第二时间周期对所述一次分析的结果进行二次分析,以对各域名被解析为对应IP地址的次数进行统计,得出历史解析记录。所述第二时间周期大于两倍所述第一时间周期。
例如,每天分析一次所述中间结果,生成最终结果,格式和所述中间结果基本一致,只是二次分析的结果是通过中间结果相加得到的最终结果。
步骤24,按照所述次数对各域名对应的IP地址的历史解析记录进行排序,分别提取各域名对应的IP地址的历史解析记录中次数最多的前4条保存到本地数据库。
本实施例中,对每个域名对应的IP地址的历史解析记录进行排序后,取每个域名对应的IP地址次数最多的4个,把这4个结果保存到非关系型数据库:以视图号+域名作为键,IP结果作为值。
优选的,本实施例用的是mongodb非关系型数据库。
请参考图6,本实施例中本地DNS服务器获取与用户DNS请求对应的IP地址,即以所述非关系型数据库的数据为基础,提供本地DNS服务的具体流程如下:
步骤41,本地DNS服务器开启若干线程,分别用于监听所述非关系型数据库中的各视图号的DNS请求。
本地DNS服务器会根据所述非关系型数据库中出现过的视图个数,开启相应数量的本地DNS服务线程。例如,所述非关系型数据库的数据分别由视图1和视图2这两个视图所产生的,本地DNS服务就会开两个线程。
步骤42,所述线程分别监听与各视图号对应的UDP端口。
本实施例中,第一个线程监听UDP端口10001(10000+视图号),为视图为1的DNS请求服务;第二个线程监听UDP端口10002,为视图2的DNS请求服务
步骤43,接收DNS代理转发的用户DNS请求。
当某一线程监听到UDP端口有DNS请求时,提取该DNS请求中的域名。例如,当有一视图为1的DNS请求发送到UDP端口10001时,提取该DNS请求中的域名。
步骤44,通过该域名和对应的视图号查询所述非关系型数据库,获取对应的IP地址。
本实施例中,DNS代理向用户返回所述解析结果,具体过程包括:生成包含所述用户DNS请求、所述解析结果的代理记录;DNS代理存储所述解析结果到本地缓存;若所述解析结果为本地DNS服务器提供的IP地址,则随机生成预设范围内的一个时间值作为该条代理记录的生存时间,以使该代理记录的生存时间小于等于默认代理记录的生存时间;DNS代理以数据包的形式向用户返回所述解析结果。其中所述预设范围可为30秒~60秒,只要满足该范围内的任一值均小于默认代理记录的生存时间即可。
换言之,本实施例中程序通过键(视图号+域名)向非关系型数据库中拿数据,得到对应的值(IP地址串)后,就可以组织回复包。组织回复包时,程序特意把DNS代理资源记录的TTL设置得很短,以让该条缓存快速失效,提高缓存更新的频率;同时本地DNS服务器获得与该用户DNS请求对应的IP地址后,特意延迟预设时间后再把回复包发送给用户。DNS代理在向外部DNS服务器转发用户DNS请求的同时,会把用户DNS请求转发给本地DNS服务器的相应端口(根据视图选择端口,如视图1选择端口10001,即10000+视图号),并把得到的最快回复的结果作为最终解析结果(这也是为什么要延迟预设时间发送本地DNS服务器返回的结果的原因:当外部DNS服务器正常时,其返回对应IP地址的速度一定比本地DNS服务器快,外部DNS服务器返回的结果就是最终解析结果),将最终解析结果写入本地缓存后返回给用户。当外部DNS服务器出问题时,外部DNS服务器没有回复,DNS代理只收到本地DNS服务器提供的结果,本地DNS服务器返回的结果就是最终解析结果,将该最终解析结果写入本地缓存后返回给用户,此时将该条DNS代理记录TTL设置得很短(30秒),所以该条缓存很快就会失效,以在外部DNS服务器恢复正常时及时更新本地缓存。
通过上述实施例,提供利用DNS代理的历史代理记录,通过数据分析和非关系型数据存储,提供本地DNS服务,进而实现可离线化的DNS代理服务。本发明的方案,当外部DNS服务器出现问题,无法正常返回查询结果时,DNS代理仍然能正常为用户提供域名解释服务,有效地降低了DNS代理对外部DNS服务器的依赖,使DNS代理更加稳定可靠。
以下为本发明实施例提供的一种实现可离线化DNS服务的装置的实施例。所述装置的实施例与上述的方法实施例属于同一构思,装置的实施例中未详尽描述的细节内容,可以参考上述方法实施例。
图7示出了本发明第二实施例的一种实现可离线化DNS服务的装置的结构示意图,下面进行详细说明。
请参见图7,所述装置包括:构建单元701、缓存查询单元702、请求转发单元703、本地解析单元704、请求响应单元705。
所述构建单元701,用于根据DNS代理的历史代理记录建立本地DNS服务器。
在第二实施例中,根据DNS代理的历史代理记录建立本地DNS服务器的具体过程包括:将历史代理记录写入系统日志以生成运营数据,所述历史代理记录包括若干用户DNS请求、以及各用户DNS请求对应的IP地址;分析所述运营数据得出对应的历史解析记录,每条历史解析记录包括用户DNS请求所属的视图号、域名、域名对应的IP地址、以及域名被解析为该IP地址的次数;按照所述次数对各域名对应的IP地址的历史解析记录进行排序,分别提取各域名对应的IP地址的历史解析记录中次数最多的前4条保存到本地数据库。优选的,所述本地数据库为非关系型数据库;所述非关系型数据库中,将视图号和域名作为键,IP地址作为值。具体请参考第一实施例所述。
所述缓存查询单元702,用于接收到用户DNS请求,查询本地缓存是否有与该用户DNS请求对应的记录。
在第二实施例中,所述缓存查询单元702接收到用户DNS请求后,会分析请求的内容,获取用户DNS请求的域名、用户的源IP,通过用户的源IP确实用户的视图号。然后查找本地缓存。具体请参考第一实施例所述。
所述请求转发单元703,用于若本地缓存无与该用户DNS请求对应的记录,则向外部DNS服务器、本地DNS服务器转发该用户DNS请求。
在第二实施例中,若本地缓存有与该用户DNS请求对应的记录,即若本地缓存有与该视图号和域名对应的记录,所述请求转发单元703则把结果返回给相应的用户,完成一个DNS解析过程。若无,所述请求转发单元703则根据视图号,向外部DNS服务器转发所述用户DNS请求,同时向本地DNS服务器转发所述DNS请求。具体请参考第一实施例所述。
所述本地解析单元704,用于接收本地DNS服务器返回的与该用户DNS请求对应的IP地址,所述本地DNS服务器获取与该用户DNS请求对应的IP地址,延迟预设时间后将该IP地址返回。
其中,本地DNS服务器提供与该用户DNS请求对应的IP地址的具体过程为:查找本地数据库,获取与该用户DNS请求对应的IP地址。本实施例中,即在所述非关系型数据库中,将视图号和域名作为键,IP地址作为值。因此本地DNS服务器可通过键(视图号+域名)向非关系型数据库中拿数据,得到对应的值(IP地址)。具体请参考第一实施例所述。
所述请求响应单元705,用于若先收到本地DNS服务器返回的IP地址,则将本地DNS服务器返回的所述IP地址作为解析结果,若先收到外部DNS服务器返回的IP地址,则将外部DNS服务器返回的IP地址作为解析结果;以及向用户返回所述解析结果。
所述请求响应单元705向用户返回所述解析结果的具体过程包括:生成包含所述用户DNS请求、所述解析结果的代理记录;存储所述解析结果到本地缓存;若所述解析结果为本地DNS服务器提供的IP地址,则随机生成预设范围内的一个时间值作为该条代理记录的生存时间,以使该代理记录的生存时间小于等于默认代理记录的生存时间;以数据包的形式向用户返回所述解析结果。此外,定期再把代理信息以字符串形式通过syslog保存到本地硬盘,以更新所述运营数据。
当外部DNS服务器正常时,返回对应的IP地址一定比本地DNS服务器快,外部DNS服务器返回的结果就是最终解析结果,写入本地缓存后返回给用户。当外部DNS服务器出问题时,则收不到外部DNS服务器返回的IP地址,DNS代理只收到本地DNS服务器发回来的结果,则将本地DNS服务器返回的结果作为最终解析结果并写入了缓存中。
本实施例中,向用户返回所述解析结果具体过程包括:生成包含所述用户DNS请求、所述解析结果的代理记录;DNS代理存储所述解析结果到本地缓存;若所述解析结果为本地DNS服务器提供的IP地址,则随机生成预设范围内的一个时间值作为该条代理记录的生存时间,以使该代理记录的生存时间小于等于默认代理记录的生存时间;DNS代理以数据包的形式向用户返回所述解析结果。其中所述预设范围可为30秒~60秒,只要满足该范围内的任一值均小于默认代理记录的生存时间即可。
通过上述实施例,利用DNS代理的历史代理记录,通过数据分析和非关系型数据存储,提供本地DNS服务器,进而实现可离线化的DNS代理服务。当外部DNS服务器出现问题,无法正常返回解析结果时,DNS代理仍然能正常为用户提供域名解析服务,有效地降低了DNS代理对外部DNS服务器的依赖,令DNS代理更加稳定可靠。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利要求范围,因此,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,仍属本发明所涵盖的范围。
Claims (9)
1.一种实现可离线化DNS服务的方法,其特征在于,包括:
根据DNS代理的历史代理记录建立本地DNS服务器;
DNS代理接收到用户DNS请求,查询本地缓存是否有与该用户DNS请求对应的记录;
若本地缓存无与该用户DNS请求对应的记录,则DNS代理向外部DNS服务器、本地DNS服务器转发该用户DNS请求;
本地DNS服务器获取与该用户DNS请求对应的IP地址,延迟预设时间后将该IP地址返回给DNS代理,其中,所述预设时间大于正常情况下外部DNS服务器返回数据所需的时间;
DNS代理若先收到本地DNS服务器返回的IP地址,则将本地DNS服务器返回的所述IP地址作为解析结果,若先收到外部DNS服务器返回的IP地址,则将外部DNS服务器返回的IP地址作为解析结果;向用户返回所述解析结果。
2.根据权利要求1所述的实现可离线化DNS服务的方法,其特征在于,所述根据DNS代理的历史代理记录建立本地DNS服务器,包括:
DNS代理将历史代理记录写入系统日志以生成运营数据,所述历史代理记录包括若干用户DNS请求、以及各用户DNS请求对应的IP地址;
分析所述运营数据得出历史解析记录,每条历史解析记录包括用户DNS请求所属的视图号、域名、域名对应的IP地址、以及域名被解析为该IP地址的次数;
按照所述次数对各域名对应的IP地址的历史解析记录进行排序,分别提取各域名对应的IP地址的历史解析记录中次数最多的前4条保存到本地数据库;
所述本地DNS服务器获取与该用户DNS请求对应的IP地址,包括:
本地DNS服务器查找本地数据库,获取与该用户DNS请求对应的IP地址。
3.根据权利要求2所述的实现可离线化DNS服务的方法,其特征在于,所述分析所述运营数据得出对应的历史解析记录,包括:
按照第一时间周期对所述运营数据进行一次分析,以得出各用户DNS请求所属的视图号、域名、域名对应的若干IP地址、以及域名被解析为各IP地址的次数;
按照第二时间周期对所述一次分析的结果进行二次分析,以对各域名被解析为对应IP地址的次数进行统计,得出所述历史解析记录;
所述第二时间周期大于两倍所述第一时间周期。
4.根据权利要求2所述的实现可离线化DNS服务的方法,其特征在于,所述将历史代理记录写入系统日志以生成运营数据,具体为:
定期将代理过的若干用户DNS请求、以及各用户DNS请求对应的IP地址以字符串形式通过syslog写入本地硬盘,以生成运营数据。
5.根据权利要求2所述的实现可离线化DNS服务的方法,其特征在于,所述本地数据库为非关系型数据库;
所述非关系型数据库中,将视图号和域名作为键,IP地址作为值。
6.根据权利要求5所述的实现可离线化DNS服务的方法,其特征在于,所述本地DNS服务器查找本地数据库,获取与该用户DNS请求对应的IP地址,包括:
本地DNS服务器开启若干线程,分别用于监听所述非关系型数据库中的各视图号的DNS请求;
所述线程分别监听与各视图号对应的UDP端口;
当某一线程监听到UDP端口有DNS请求时,提取该DNS请求中的域名,通过该域名和对应的视图号查询所述非关系型数据库,获取对应的IP地址。
7.根据权利要求1所述的实现可离线化DNS服务的方法,其特征在于,所述向用户返回所述解析结果,具体为:
生成包含所述用户DNS请求、所述解析结果的代理记录;
DNS代理存储所述解析结果到本地缓存;若所述解析结果为本地DNS服务器提供的IP地址,则随机生成预设范围内的一个时间值作为该条代理记录的生存时间,以使该代理记录的生存时间小于等于默认代理记录的生存时间;
DNS代理以数据包的形式向用户返回所述解析结果。
8.一种可离线化DNS服务的装置,其特征在于,包括:
构建单元,用于根据DNS代理的历史代理记录建立本地DNS服务器;
缓存查询单元,用于接收到用户DNS请求,查询本地缓存是否有与该用户DNS请求对应的记录;
请求转发单元,用于若本地缓存无与该用户DNS请求对应的记录,则向外部DNS服务器、本地DNS服务器转发该用户DNS请求;
本地解析单元,用于 接收本地DNS服务器返回的与该用户DNS请求对应的IP地址,所述本地DNS服务器获取与该用户DNS请求对应的IP地址,延迟预设时间后将该IP地址返回,其中,所述预设时间大于正常情况下外部DNS服务器返回数据所需的时间;
请求响应单元,用于若先收到本地DNS服务器返回的IP地址,则将本地DNS服务器返回的所述IP地址作为解析结果,若先收到外部DNS服务器返回的IP地址,则将外部DNS服务器返回的IP地址作为解析结果;以及向用户返回所述解析结果。
9.根据权利要求8所述的可离线化DNS服务的装置,其特征在于,所述根据DNS代理的历史代理记录建立本地DNS服务器,包括:
将历史代理记录写入系统日志以生成运营数据,所述历史代理记录包括若干用户DNS请求、以及各用户DNS请求对应的IP地址;
分析所述运营数据得出历史解析记录,每条历史解析记录包括用户DNS请求所属的视图号、域名、域名对应的IP地址、以及域名被解析为该IP地址的次数;
按照所述次数对各域名对应的IP地址的历史解析记录进行排序,分别提取各域名对应的IP地址的历史解析记录中次数最多的前4条保存到本地数据库;
所述本地DNS服务器获取与该用户DNS请求对应的IP地址,包括:
本地DNS服务器查找本地数据库,获取与该用户DNS请求对应的IP地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410175344.6A CN103929507B (zh) | 2014-04-28 | 2014-04-28 | 一种实现可离线化dns服务的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410175344.6A CN103929507B (zh) | 2014-04-28 | 2014-04-28 | 一种实现可离线化dns服务的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103929507A CN103929507A (zh) | 2014-07-16 |
CN103929507B true CN103929507B (zh) | 2017-10-10 |
Family
ID=51147579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410175344.6A Active CN103929507B (zh) | 2014-04-28 | 2014-04-28 | 一种实现可离线化dns服务的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103929507B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109474718A (zh) * | 2018-12-29 | 2019-03-15 | 杭州迪普科技股份有限公司 | 域名解析方法和装置 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104935683A (zh) * | 2015-06-29 | 2015-09-23 | 北京经天科技有限公司 | 用于域名解析的缓存处理方法和装置 |
CN105162830A (zh) * | 2015-07-23 | 2015-12-16 | 浪潮软件集团有限公司 | 一种提高代理ip利用率的采集方法 |
CN105141712B (zh) * | 2015-08-24 | 2019-01-18 | 深圳市宏电技术股份有限公司 | 一种离线域名解析方法及装置 |
CN105592181A (zh) * | 2015-10-15 | 2016-05-18 | 杭州华三通信技术有限公司 | 一种链路负载均衡方法及装置 |
CN105245633A (zh) * | 2015-10-19 | 2016-01-13 | 北京奇虎科技有限公司 | 一种安全域名系统及其故障处理方法 |
CN107872544A (zh) * | 2016-09-28 | 2018-04-03 | 中兴通讯股份有限公司 | 一种域名解析方法、装置、网关及系统 |
CN106534127A (zh) * | 2016-11-18 | 2017-03-22 | 上海佰贝科技发展有限公司 | 一种登录认证控制系统及方法 |
CN106534390B (zh) * | 2017-01-24 | 2019-10-25 | 网宿科技股份有限公司 | 权威域名系统服务器数据的存储和管理方法及系统 |
CN106790720B (zh) * | 2017-03-21 | 2019-12-27 | 聚好看科技股份有限公司 | 业务服务请求实现方法及装置 |
CN108933843B (zh) * | 2017-05-26 | 2021-07-06 | 贵州白山云科技股份有限公司 | 一种dns调度方法及装置 |
KR102333144B1 (ko) * | 2017-06-16 | 2021-11-30 | 삼성전자주식회사 | 통신 시스템에서 연결 제어 장치 및 방법 |
CN107451190A (zh) * | 2017-06-26 | 2017-12-08 | 北京五八信息技术有限公司 | 可持久化非关系型数据库的数据处理方法及装置 |
CN108848049A (zh) * | 2018-04-18 | 2018-11-20 | 山石网科通信技术有限公司 | 域名解析系统的代理方法及装置、存储介质和处理器 |
KR20200119945A (ko) | 2019-04-10 | 2020-10-21 | 삼성전자주식회사 | 저 지연 dns 처리를 지원하는 전자 장치 |
CN112929463A (zh) * | 2021-01-26 | 2021-06-08 | 网宿科技股份有限公司 | 一种基于dns的流量代理方法、服务器及系统 |
CN114338604B (zh) * | 2021-12-31 | 2024-04-12 | 北京奇艺世纪科技有限公司 | 一种dns配置更新方法及系统 |
WO2023223302A1 (en) * | 2022-05-20 | 2023-11-23 | Men & Mice | Capability based generic agent |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841577A (zh) * | 2010-06-07 | 2010-09-22 | 中兴通讯股份有限公司 | 一种实现域名解析代理功能的方法和装置 |
CN102123180A (zh) * | 2010-01-08 | 2011-07-13 | 北京中企开源信息技术有限公司 | Dns网络结构及域名解析方法 |
CN102685259A (zh) * | 2011-03-09 | 2012-09-19 | 中国移动通信集团公司 | 对dns解析请求进行解析的方法、系统和智能dns |
CN103338279A (zh) * | 2013-07-18 | 2013-10-02 | 上海数讯信息技术有限公司 | 基于域名解析的优化排序方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110320524A1 (en) * | 2010-06-29 | 2011-12-29 | Alcatel-Lucent Usa Inc. | Technique For Effectively Reducing Latency Of Locating A Resource On A Network |
-
2014
- 2014-04-28 CN CN201410175344.6A patent/CN103929507B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102123180A (zh) * | 2010-01-08 | 2011-07-13 | 北京中企开源信息技术有限公司 | Dns网络结构及域名解析方法 |
CN101841577A (zh) * | 2010-06-07 | 2010-09-22 | 中兴通讯股份有限公司 | 一种实现域名解析代理功能的方法和装置 |
CN102685259A (zh) * | 2011-03-09 | 2012-09-19 | 中国移动通信集团公司 | 对dns解析请求进行解析的方法、系统和智能dns |
CN103338279A (zh) * | 2013-07-18 | 2013-10-02 | 上海数讯信息技术有限公司 | 基于域名解析的优化排序方法及系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109474718A (zh) * | 2018-12-29 | 2019-03-15 | 杭州迪普科技股份有限公司 | 域名解析方法和装置 |
CN109474718B (zh) * | 2018-12-29 | 2022-01-28 | 杭州迪普科技股份有限公司 | 域名解析方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103929507A (zh) | 2014-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103929507B (zh) | 一种实现可离线化dns服务的方法及装置 | |
CN104917851B (zh) | 信息处理方法及dns缓存服务器 | |
CN103973834B (zh) | 一种基于家庭网关的dns域名解析加速方法及装置 | |
US20210126893A1 (en) | Systems and methods for automatic inventory and dns record generation | |
CN101431539B (zh) | 一种域名解析方法、系统及装置 | |
CN105704036B (zh) | 报文转发方法、装置和系统 | |
CA2824938C (en) | System and method for subscriber aware network monitoring | |
CN103593419B (zh) | 数据查询方法、装置、服务器及系统 | |
CN105162900B (zh) | 一种多节点协作的域名解析和缓存方法及系统 | |
CN106797410A (zh) | 域名解析方法和装置 | |
CN105450787B (zh) | 网络地址映射方法、装置和系统 | |
CN103685590B (zh) | 获取ip地址的方法及系统 | |
CN108881515A (zh) | 域名解析方法、装置及网络设备 | |
CN104717314B (zh) | 一种ip管理方法及系统、客户端、服务器 | |
CN104980478B (zh) | 内容分发网络中缓存共享方法、设备及系统 | |
CN112600868B (zh) | 域名解析方法、域名解析装置及电子设备 | |
CN102882791A (zh) | 一种dns业务处理的方法及装置 | |
EP2697959A1 (en) | Mapping private and public addresses | |
CN106412063A (zh) | 教育网内cdn节点检测与资源调度系统及方法 | |
CN106713506A (zh) | 一种数据获取方法及系统 | |
CN105472056A (zh) | Dns递归服务器分层缓存方法和系统 | |
CN101582925A (zh) | 一种网络地址转换的方法及系统 | |
CN107896257A (zh) | 部署客户端子系统功能的方法、装置、设备和介质 | |
US10715608B2 (en) | Automatic server cluster discovery | |
CN106790766A (zh) | 一种用于客户端的dns服务器智能配置方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 705-708, room two, No. 121, north south of the Five Ridges Avenue, Chancheng District, Guangdong, Foshan, 528000 Applicant after: GUANGDONG RUIJIANG CLOUD COMPUTING CO., LTD. Address before: 528000, south of the Five Ridges building, No. 100, south of the Five Ridges Avenue, Chancheng District, Guangdong, Foshan, 1, 403 Applicant before: Guangdong Efly Network Co., Ltd. |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant |