CN112822309A - 域名解析方法及装置 - Google Patents
域名解析方法及装置 Download PDFInfo
- Publication number
- CN112822309A CN112822309A CN202110417495.8A CN202110417495A CN112822309A CN 112822309 A CN112822309 A CN 112822309A CN 202110417495 A CN202110417495 A CN 202110417495A CN 112822309 A CN112822309 A CN 112822309A
- Authority
- CN
- China
- Prior art keywords
- domain name
- message
- hash value
- acceleration
- request message
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/10—Mapping addresses of different types
Abstract
本发明公开了一种域名解析方法及装置,该方法包括:接收来自域名解析请求端的域名请求报文;获取域名请求报文的报文内容以及域名解析请求端的网络地址;根据域名请求报文的报文内容以及域名解析请求端的网络地址,生成域名请求报文的哈希值;判断域名请求报文的哈希值是否命中报文加速缓存表,该报文加速缓存表中包含:多个报文加速结构体,每个报文加速结构体对应一个哈希值;当域名请求报文的哈希值命中报文加速缓存表的情况下,获取域名请求报文的域名应答报文,并将域名请求报文的域名应答报文添加到报文加速缓存表中相应的报文加速结构体中;基于报文加速缓存表,向域名解析请求端返回域名应答报文。本发明能够大大提升域名解析服务的性能。
Description
技术领域
本发明涉及互联网领域,尤其涉及一种域名解析方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
目前,互联网中大部分的域名系统(Domain Name System,DNS)服务端使用美国ISC(Internet Systems Consortium)机构研发的BIND软件对域名进行解析,BIND软件在接收到DNS请求报文后,需要解析报文的内容、根据访问者的IP地址匹配访问控制表(AccessControl Lists,ACL)找到对应的视图(View)、使用红黑树找到域名对应的区域(Zone)以及区域(Zone)中配置的域名记录、构建查询结果的结构体并对返回应答报文进行封装、将应答报文返回给请求者。可见,BIND软件对DNS请求进行解析处理时,一个完整的请求处理对CPU资源消耗很多。
为了提升DNS解析域名的性能,现有技术中主要采用如下两种方案:
第一种,在单机性能有限的情况下,使用更多的DNS服务器来提升整体的并发能力。这种方式会提高整体设备的维护成本,同时对多台DNS服务器之间的数据同步有着更高的要求。
第二种,不使用ISC的BIND软件,通过自主研发的DNS服务端,简化收到DNS报文后的处理流程,降低处理一个完整DNS请求的CPU耗时来提升整体的解析性能。这种自主研发DNS服务端的工作难度大,且在后期使用对BIND软件进行替换,也会产生额外的过渡成本。
可见,如何提高BIND软件的域名解析性能,是目前亟待解决的技术问题。
发明内容
本发明实施例提供一种域名解析方法,用以提升域名解析服务的性能,该方法包括:接收来自域名解析请求端的域名请求报文;获取所述域名请求报文的报文内容以及所述域名解析请求端的网络地址;根据所述域名请求报文的报文内容以及所述域名解析请求端的网络地址,生成所述域名请求报文的哈希值;判断所述域名请求报文的哈希值是否命中报文加速缓存表,其中,所述报文加速缓存表中包含:多个报文加速结构体,每个报文加速结构体对应一个哈希值;当所述域名请求报文的哈希值命中所述报文加速缓存表的情况下,获取所述域名请求报文的域名应答报文,并将所述域名请求报文的域名应答报文添加到所述报文加速缓存表中相应的报文加速结构体中;基于所述报文加速缓存表,向所述域名解析请求端返回域名应答报文。
本发明实施例还提供一种域名解析装置,用以提升域名解析服务的性能,该装置包括:域名请求模块,用于接收来自域名解析请求端的域名请求报文;域名请求报文信息获取模块,用于获取所述域名请求报文的报文内容以及所述域名解析请求端的网络地址;哈希值计算模块,用于根据所述域名请求报文的报文内容以及所述域名解析请求端的网络地址,生成所述域名请求报文的哈希值;加速缓存查询模块,用于判断所述域名请求报文的哈希值是否命中报文加速缓存表,其中,所述报文加速缓存表中包含:多个报文加速结构体,每个报文加速结构体对应一个哈希值;解析加速模块,用于当所述域名请求报文的哈希值命中所述报文加速缓存表的情况下,获取所述域名请求报文的域名应答报文,并将所述域名请求报文的域名应答报文添加到所述报文加速缓存表中相应的报文加速结构体中;域名应答模块,用于基于所述报文加速缓存表,向所述域名解析请求端返回域名应答报文。
本发明实施例还提供一种计算机设备,用以提升域名解析服务的性能,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述域名解析方法。
本发明实施例还提供一种计算机可读存储介质,用以提升域名解析服务的性能,该计算机可读存储介质存储有执行上述域名解析方法的计算机程序。
本发明实施例中提供的域名解析方法、装置、计算机设备及计算机可读存储介质,基于预先创建的报文加速缓存表,在接收到来自域名解析请求端的域名请求报文后,获取域名请求报文的报文内容以及域名解析请求端的网络地址,进而根据域名请求报文的报文内容以及域名解析请求端的网络地址,生成域名请求报文的哈希值,判断该域名请求报文的哈希值是否命中报文加速缓存表中的报文加速结构体,当域名请求报文的哈希值命中报文加速缓存表的情况下,获取域名请求报文的域名应答报文,并将域名请求报文的域名应答报文添加到报文加速缓存表中相应的报文加速结构体中,最后基于该报文加速缓存表,向域名解析请求端返回域名应答报文。通过本发明实施例,能够大大提升域名解析服务的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中提供的一种域名解析方法流程图;
图2为本发明实施例中提供的一种域名请求报文的哈希值生成流程图;
图3为本发明实施例中提供的一种可选的域名解析方法流程图;
图4为本发明实施例中提供的一种防攻击域名解析方法流程图;
图5为本发明实施例中提供的又一种防攻击域名解析方法流程图;
图6为本发明实施例中提供的一种域名解析装置示意图;
图7为本发明实施例中提供的一种计算机设备示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
本发明实施例中提供了一种域名解析方法,可应用但不限于BIND软件。
图1为本发明实施例中提供的一种域名解析方法流程图,如图1所示,该方法包括如下步骤:
S101,接收来自域名解析请求端的域名请求报文。
需要说明的是,本发明实施例中的域名解析请求端是指发起域名解析请求的联网设备;域名请求报文是指请求解析域名的报文。
S102,获取域名请求报文的报文内容以及域名解析请求端的网络地址。
需要说明的是,本发明实施例中的网络地址可以是但不限于IP地址;在接收到域名请求报文后,获取报文内容以及发送该域名请求报文的设备的IP地址。
S103,根据域名请求报文的报文内容以及域名解析请求端的网络地址,生成域名请求报文的哈希值。
在具体实施时,一种方式可以直接根据域名请求报文的报文内容以及域名解析请求端的网络地址,生成域名请求报文的哈希值(hash值);另一种方式中,可分别对域名请求报文的报文内容、域名解析请求端的网络地址进行哈希计算,得到相应的哈希值后,再经过一定的运算,得到最终的哈希值。第二种方式能够进一步避免哈希值碰撞的问题。
S104,判断域名请求报文的哈希值是否命中报文加速缓存表,其中,报文加速缓存表中包含:多个报文加速结构体,每个报文加速结构体对应一个哈希值。
需要说明的是,本发明实施例中的报文加速缓存表是预先创建的一个用于存储报文加速结构体的数据表,每个报文加速结构体包括但不限于如下信息:待解析域名、加速状态、请求端的网络地址(IP地址)、域名请求报文的报文长度、域名请求报文的哈希值、命中次数、计数值(计数值用来表示该有效缓存被采用的次数)、是否合法、应答报文的报文内容、应答报文的报文长度。
其中,加速状态可分三种:未激活->学习中->工作中,默认状态为未激活。未激活状态下,当缓存命中次数为5次时,加速状态将调整为学习中。处于工作中的加速状态被认为有效缓存,系统将保存在报文加速结构体中的应答报文结果取出并直接返回给DNS请求者,本次DNS查询结束。处于未激活或学习中的加速状态将继续按照常规的DNS内部解析流程进行处理。
命中次数用来调整缓存中的加速状态,以及是否清理缓存。命中次数每秒都会重置。未激活状态下命中次数达到预设阈值(例如,5次),表示短时间内有多次相同的报文请求需要进行加速处理,系统将调整加速状态为学习中;每秒命中次数小于10次表明本次域名请求不是攻击,或者攻击已经结束,因而需要释放当前的缓存内内容。
本发明实施例中,在判断域名请求报文的哈希值是否命中报文加速缓存表,可以直接判断域名请求报文对应的哈希值是否在报文加速缓存表中,也可以是判断域名请求报文的哈希值、报文长度、域名解析请求端的网络地址三者是否都在报文加速缓存表中。根据报文加速缓存表中存储数据的形式不一样,判断方式可能也存在不同,本领域技术人员可根据具体情况具体设定。
由于哈希值比较复杂,在一个实施例中,可将域名请求报文的哈希值对某个数(例如,4096)求余,将得到的余数作为报文加速缓存表中域名请求报文对应加速结构体的键值。
例如,当192.168.59.1 向 192.168.59.128 请求解析域名a.test.com时,对DNS报文进行hash计算,得到计算结果为31630654;对请求者的IP进行hash计算,即对192.168.59.1进行计算,计算结果为 21609798;将两个hash值进行异或运算,计算结果为11212920;将最终的hash值进行4096求余,计算结果为 2168;本报文最终的hash计算结果为2168。
需要注意的是,由于DNS报文中有些内容在被攻击时可能发生变化,而实际的域名请求内容没有变化,因而,在对域名请求报文的报文内容进行哈希值计算时,可针对报文内容中不会发生变化的内容(例如,域名内容)进行哈希值计算。
S105,当域名请求报文的哈希值命中报文加速缓存表的情况下,获取域名请求报文的域名应答报文,并将域名请求报文的域名应答报文添加到报文加速缓存表中相应的报文加速结构体中。
本发明实施例中,通过将域名请求报文的域名应答报文添加到报文加速缓存表中相应的报文加速结构体中,能够实现域名应答报文的有效缓存,能够方便后续接收到域名请求报文后,直接基于该报文加速缓存表,向域名解析请求端返回域名应答报文。
S106,基于报文加速缓存表,向域名解析请求端返回域名应答报文。
需要说明的是,在将某次域名请求报文的域名应答报文添加到报文加速缓存表中相应的报文加速结构体中,在下一次接收到该域名请求报文时,可直接返回报文加速缓存表中已经存储的域名应答报文应答报文,能够节省大量的查询处理资源。
在一个实施例中,本发明实施例中提供的域名解析方法还可以包括如下步骤:统计每个报文加速结构体的命中次数;根据每个报文加速结构体的命中次数,更新每个报文加速结构体的加速状态。
当DNS内部解析完毕准备向请求者(即域名解析请求端)返回DNS应答报文时,判断当前报文加速结构体的加速状态,若为学习中,则将状态调整为工作中,并将当前的应答报文保存到报文加速结构体的应答报文结果中。随后系统将应答报文返回给DNS请求者,本次DNS查询结束。
为了避免哈希值的碰撞问题,在一个实施例中,在根据域名请求报文的报文内容以及域名解析请求端的网络地址,生成域名请求报文的哈希值的时候,如图2所示,本发明实施例中提供的域名解析方法,可通过如下步骤来实现:
S201,对域名请求报文的报文内容进行哈希计算,得到第一哈希值。
S202,对网络地址进行哈希计算,得到第二哈希值。
S203,对第一哈希值和第二哈希值按位进行异或运算,得到第三哈希值,作为域名请求报文的哈希值。
需要说明的是,哈希计算后得到的哈希值为无符号整数型(0~4294967295),对DNS报文跟IP地址分别进行哈希计算后的哈希值相同的概率是1/4294967295,基本上是完全不同的。将两个哈希值的结果按位进行异或运算,进一步降低哈希碰撞的概率。异或运算后的结果依然是一个无符号的整数值,计算机内存中以二进制的形式进行保存。
在一个实施例中,如图3所示,本发明实施例中提供的域名解析方法还可以包括如下步骤:
S107,当域名请求报文的哈希值未命中报文加速缓存表的情况下,根据域名请求报文的哈希值生成域名请求报文的报文加速结构体,并添加到报文加速缓存表中。
通过上述实施例,能够增加报文加速缓存表中存储的报文加速结构体,以便对更多的域名请求报文进行加速。
需要注意的是,本发明实施例中提供的域名解析加速方法,通常用于对来自同一个IP的相同DNS报文进行加速,在提升单机吞吐量性能的同时,可解决固定DNS请求报文(授权域合法域名)攻击的问题。
本发明实施例中,当DNS请求报文未命中报文加速缓存时,判断当前系统是否正处于NXDOMAIN随机主机名攻击的状态。若已命中加速缓存或者系统未处于NXDOMAIN随机主机名攻击状态,则按上述域名解析加速方法进行处理。NXDOMAIN随机主机名(授权域)攻击表示在当前授权域中,通过每次生成随机的主机名进行DNS请求。这类随机生成的域名由于每次请求都在变化,基本无法命中加速缓存。
BIND软件在面对随机域名(非授权域)攻击、随机主机名(授权域)攻击、固定DNS请求报文(授权域合法域名)攻击时很容易瘫痪。本发明实施例中提供的域名解析方法还可以设置防攻击机制。在一个实施例中,如图4所示,本发明实施例中提供的域名解析方法还可以包括如下步骤:
S401,判断第二哈希值是否命中丢包缓存表,其中,丢包缓存表中包含:多个丢包结构体,每个丢包结构体对应一个哈希值。
需要说明的是,本发明实施例中的丢包缓存表是指预先创建的存储多个丢包结构体的数据表,每个丢包结构体包含但不限于如下信息:丢包状态、域名解析请求端的网络地址(IP地址)、命中次数、计数值。
在具体实施时,创建一个包含4096个键值的哈希值表(序号为0~4095),为了防止哈希值碰撞,每个键值存储位置对应一个链表,用来存储丢包结构体。
在判断第二哈希值是否命中丢包缓存表时,可直接判断域名解析请求端网络地址的哈希值是否在丢包缓存表中。根据报文加速缓存表中存储数据的形式不一样,判断方式可能也存在不同,本领域技术人员可根据具体情况具体设定。
由于哈希值比较复杂,在一个实施例中,在判断第二哈希值是否命中丢包缓存表时,对域名解析请求端的网络地址进行哈希计算,得到该网络地址的哈希值,对某个数(例如,4096)求余,将得到的余数作为丢包缓存表中丢包结构体的键值。对该key存储位置中的链表进行查询,通过匹配请求者IP地址数据一致表示命中了丢包缓存。
S402,当第二哈希值命中丢包缓存表的情况下,获取第二哈希值对应的丢包结构体,判断第二哈希值对应丢包结构体的状态是否为激活状态,并在第二哈希值对应丢包结构体的状态为激活状态的情况下,丢弃域名请求报文。
当域名解析请求端网络地址的哈希值命中丢包缓存表时,取出丢包缓存中的丢包结构体,判断丢包结构体中的当前状态。本发明实施例中丢包结构体的状态可包括未激活状态和激活状态两种,默认状态为未激活。丢包结构体的当前状态为激活状态时,系统将丢弃本次DNS报文不进行处理,本次DNS查询结束;否则,继续按照上述域名解析加速方法处理。
S403,当第二哈希值未命中丢包缓存表情况下,根据网络地址构建丢包结构体,并添加到丢包缓存表中。
需要说明的是,本发明实施例中,根据未命中丢包缓存表的网络地址构建丢包结构体,并添加到丢包缓存表,能够使得丢包缓存表满足更多的域名请求。
进一步地,在一个实施例中,如图4所示,本发明实施例中提供的域名解析方法还可以包括如下步骤:
S404,记录第二哈希值命中丢包缓存表的命中次数;
S405,当第二哈希值命中丢包缓存表的命中次数超过预设阈值的情况下,将第二哈希值对应丢包结构体的状态配置为激活状态。
在一个实施例中,如图5所示,本发明实施例中提供的域名解析方法还可以包括如下步骤:
S501,判断域名请求报文所请求的域名是否在预设授权域中;
S502,当域名请求报文所请求的域名未在预设授权域中的情况下,丢弃域名请求报文;
S503,当域名请求报文所请求的域名在预设授权域中的情况下,记录一次域名请求报文所请求域名未在预设授权域中配置的次数;
S504,当域名请求报文所请求域名未在预设授权域中配置的次数超过预设次数的情况下,将域名请求报文确定为随机主机域名攻击的域名请求报文。
在处理常规的DNS内部解析流程时,若DNS请求域名不在当前DNS服务器的授权域中,系统将丢弃当前的DNS请求,本次DNS查询结束;否则系统将继续查询DNS请求域名在当前对应的授权域中的记录。若查询到了对应的记录,则继续按照DNS内部解析流程进行处理;否则意味着该DNS请求域名在当前DNS授权域中尚未配置记录,系统的NXDOMAIN(即Non-Existent Domain,域名不存在)次数加1。
当系统的NXDOMAIN次数大于预设阈值(例如,50000)时,系统将进入NXDOMAIN随机主机名攻击的状态,若请求端网络地址的哈希值未命中丢包缓存,则系统根据本次DNS请求者的网络地址,构建成丢包结构体,插入丢包缓存中;否则取出丢包缓存中的丢包结构体并将命中次数加1。当前的丢包结构体的命中次数达到预设阈值(例如,100)时,将丢包结构体的当前状态设置为激活状态,系统继续按照DNS内部解析流程进行处理,最终返回NXDOMAIN报文给DNS请求者。下一次该请求者再来访问时,系统将按照激活状态丢弃当前报文不进行处理。
需要说明的是,系统的NXDOMAIN次数每秒都会重置,连续5秒小于50000时,系统将解除NXDOMAIN随机主机名攻击的状态。丢包结构体中的命中次数每秒都会重置,每秒检查时发现命中次数小于100,将从丢包缓存中移出。
本发明实施例中提供的域名解析方法,能够屏蔽非授权域的DNS请求报文,对非授权域的域名请求将不做回应,只响应系统配置的授权域的域名请求,可以降低DNS服务器在互联网中被扫描并标识为DNS服务器的概率,节省CPU资源以及网络带宽资源。
由上可知,本发明实施例中提供的域名解析方法,不仅能够实现解析加速,而且能够防攻击。一方面,通过创建解析加速缓存,将收到的DNS报文进行hash运算并判断是否命中加速缓存,若未命中则将本次请求的内容构建成报文加速结构体,插入报文加速缓存中;若命中则取出缓存中的报文加速结构体。判断报文加速结构体中的加速状态。未激活状态下,当缓存命中次数为5次时,加速状态将调整为学习中。处于工作中的加速状态被认为有效缓存,系统将保存在报文加速结构体中的应答报文结果取出并直接返回给DNS请求者,本次DNS查询结束。处于未激活或学习中的加速状态将继续按照常规的DNS内部解析流程进行处理。DNS内部解析完毕准备向请求者返回DNS应答报文时,判断当前报文加速结构体的加速状态,若为学习中,则将状态调整为工作中,并将当前的应答报文保存到报文加速结构体的应答报文结果中。随后系统将应答报文返回给DNS请求者,本次DNS查询结束。
另一方面,通过创建丢包缓存,根据DNS请求者的IP进行hash计算并判断是否命中丢包缓存。若命中则取出丢包缓存中的丢包结构体,判断丢包结构体中的当前状态。当前状态为激活时,系统将丢弃本次DNS报文不进行处理,本次DNS查询结束。否则继续按照解析加速方法处理。在处理常规的DNS内部解析流程时,若DNS请求域名不在当前DNS服务器的授权域中,系统将丢弃当前的DNS请求,本次DNS查询结束;否则系统将继续查询DNS请求域名在当前对应的授权域中的记录。若查询到了对应的记录,则继续按照DNS内部解析流程进行处理;否则意味着该DNS请求域名在当前DNS授权域中尚未配置记录,系统的NXDOMAIN次数加1。当系统的NXDOMAIN次数大于50000时,系统将进入NXDOMAIN随机主机名攻击的状态,本次请求未命中丢包缓存时,系统将本次DNS请求者的IP构建成丢包结构体,插入丢包缓存中;否则取出丢包缓存中的丢包结构体并将命中次数加1。当前的丢包结构体的命中次数等于100时,将丢包结构体的当前状态设置为激活。系统继续按照DNS内部解析流程进行处理,最终返回NXDOMAIN报文给DNS请求者。
在具体实施时,还可维护解析加速缓存和丢包缓存,对于解析加速缓存的维护,可按照预设时间周期(例如,每秒)遍历一遍将命中次数小于10次的数据从加速缓存中移出,并重置加速缓存中所有数据的命中次数;对于丢包缓存的维护,可按照预设时间周期(例如,每秒)遍历一遍将命中次数小于100次的数据从丢包缓存中移出,并重置丢包缓存中所有数据的命中次数。
进一步地,按照预设时间周期(例如,每秒)重置系统的NXDOMAIN次数,连续5秒小于50000时,则解除NXDOMAIN随机主机名攻击的状态。
更进一步地,还可按照预设时间周期(例如,每秒)输出系统的收发包数量,并对加速缓存及丢包缓存的内容进行展示。
将本发明实施例中提供的域名解析方法应用于BIND软件,可使得常规的拒绝服务攻击对BIND软件无效,DNS服务器无需为了这些无效的DNS攻击而浪费宝贵的CPU资源。结合Intel的DPDK技术,DNS服务器可以轻松达到10G带宽满载的1000W QPS指标。
基于同一发明构思,本发明实施例中还提供了一种域名解析装置,如下面的实施例所述。由于该装置解决问题的原理与域名解析方法相似,因此该装置的实施可以参见域名解析方法的实施,重复之处不再赘述。
图6为本发明实施例中提供的一种域名解析装置示意图,如图6所示,该装置包括:域名请求模块61、域名请求报文信息获取模块62、哈希值计算模块63、加速缓存查询模块64、解析加速模块65和域名应答模块66。
其中,域名请求模块61,用于接收来自域名解析请求端的域名请求报文;域名请求报文信息获取模块62,用于获取所述域名请求报文的报文内容以及所述域名解析请求端的网络地址;哈希值计算模块63,用于根据所述域名请求报文的报文内容以及所述域名解析请求端的网络地址,生成所述域名请求报文的哈希值;加速缓存查询模块64,用于判断所述域名请求报文的哈希值是否命中报文加速缓存表,其中,所述报文加速缓存表中包含:多个报文加速结构体,每个报文加速结构体对应一个哈希值;解析加速模块65,用于当所述域名请求报文的哈希值命中所述报文加速缓存表的情况下,获取所述域名请求报文的域名应答报文,并将所述域名请求报文的域名应答报文添加到所述报文加速缓存表中相应的报文加速结构体中;域名应答模块66,用于基于所述报文加速缓存表,向所述域名解析请求端返回域名应答报文。
在一个实施例中,本发明实施例中提供的域名解析装置中,哈希值计算模块63还用于:对域名请求报文的报文内容进行哈希计算,得到第一哈希值;对网络地址进行哈希计算,得到第二哈希值;对第一哈希值和第二哈希值按位进行异或运算,得到第三哈希值,作为域名请求报文的哈希值。
在一个实施例中,本发明实施例中提供的域名解析装置中,解析加速模块65还用于:当域名请求报文的哈希值未命中报文加速缓存表的情况下,根据域名请求报文的哈希值生成域名请求报文的报文加速结构体,并添加到报文加速缓存表中。
在一个实施例中,本发明实施例中提供的域名解析装置中,解析加速模块65还用于:统计每个报文加速结构体的命中次数;根据每个报文加速结构体的命中次数,更新每个报文加速结构体的加速状态。
在一个实施例中,如图6所示,本发明实施例中提供的域名解析装置还包括:防攻击模块67,用于:判断第二哈希值是否命中丢包缓存表,其中,丢包缓存表中包含:多个丢包结构体,每个丢包结构体对应一个哈希值;当第二哈希值命中丢包缓存表的情况下,获取第二哈希值对应的丢包结构体,判断第二哈希值对应丢包结构体的状态是否为激活状态,并在第二哈希值对应丢包结构体的状态为激活状态的情况下,丢弃域名请求报文;当第二哈希值未命中丢包缓存表情况下,根据网络地址构建丢包结构体,并添加到丢包缓存表中。
在一个实施例中,本发明实施例中提供的域名解析装置中,防攻击模块67还用于:记录第二哈希值命中丢包缓存表的命中次数;当第二哈希值命中丢包缓存表的命中次数超过预设阈值的情况下,将第二哈希值对应丢包结构体的状态配置为激活状态。
在一个实施例中,本发明实施例中提供的域名解析装置中,防攻击模块67还用于:判断域名请求报文所请求的域名是否在预设授权域中;当域名请求报文所请求的域名未在预设授权域中的情况下,丢弃域名请求报文;当域名请求报文所请求的域名在预设授权域中的情况下,记录一次域名请求报文所请求域名未在预设授权域中配置的次数;当域名请求报文所请求域名未在预设授权域中配置的次数超过预设次数的情况下,将域名请求报文确定为随机主机域名攻击的域名请求报文。
基于同一发明构思,本发明实施例还提供一种计算机设备,用以提升域名解析服务的性能,图7为本发明实施例中提供的一种计算机设备示意图,如图7所示,该计算机设备70包括存储器701、处理器702及存储在存储器701上并可在处理器702上运行的计算机程序,处理器702执行计算机程序时实现上述域名解析方法。
基于同一发明构思,本发明实施例还提供一种计算机可读存储介质,用以提升域名解析服务的性能,该计算机可读存储介质存储有执行上述域名解析方法的计算机程序。
综上所述,本发明实施例中提供的域名解析方法、装置、计算机设备及计算机可读存储介质,基于预先创建的报文加速缓存表,在接收到来自域名解析请求端的域名请求报文后,获取域名请求报文的报文内容以及域名解析请求端的网络地址,进而根据域名请求报文的报文内容以及域名解析请求端的网络地址,生成域名请求报文的哈希值,判断该域名请求报文的哈希值是否命中报文加速缓存表中的报文加速结构体,当域名请求报文的哈希值命中报文加速缓存表的情况下,获取域名请求报文的域名应答报文,并将域名请求报文的域名应答报文添加到报文加速缓存表中相应的报文加速结构体中,最后基于该报文加速缓存表,向域名解析请求端返回域名应答报文。通过本发明实施例,能够大大提升域名解析服务的性能。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种域名解析方法,其特征在于,包括:
接收来自域名解析请求端的域名请求报文;
获取所述域名请求报文的报文内容以及所述域名解析请求端的网络地址;
根据所述域名请求报文的报文内容以及所述域名解析请求端的网络地址,生成所述域名请求报文的哈希值;
判断所述域名请求报文的哈希值是否命中报文加速缓存表,其中,所述报文加速缓存表中包含:多个报文加速结构体,每个报文加速结构体对应一个哈希值;
当所述域名请求报文的哈希值命中所述报文加速缓存表的情况下,获取所述域名请求报文的域名应答报文,并将所述域名请求报文的域名应答报文添加到所述报文加速缓存表中相应的报文加速结构体中;
基于所述报文加速缓存表,向所述域名解析请求端返回域名应答报文。
2.如权利要求1所述的方法,其特征在于,根据所述域名请求报文的报文内容以及所述域名解析请求端的网络地址,生成所述域名请求报文的哈希值,包括:
对所述域名请求报文的报文内容进行哈希计算,得到第一哈希值;
对所述网络地址进行哈希计算,得到第二哈希值;
对第一哈希值和第二哈希值按位进行异或运算,得到第三哈希值,作为所述域名请求报文的哈希值。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述域名请求报文的哈希值未命中所述报文加速缓存表的情况下,根据所述域名请求报文的哈希值生成所述域名请求报文的报文加速结构体,并添加到所述报文加速缓存表中。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
统计每个报文加速结构体的命中次数;
根据每个报文加速结构体的命中次数,更新每个报文加速结构体的加速状态。
5.如权利要求2所述的方法,其特征在于,所述方法还包括:
判断第二哈希值是否命中丢包缓存表,其中,所述丢包缓存表中包含:多个丢包结构体,每个丢包结构体对应一个哈希值;
当第二哈希值命中丢包缓存表的情况下,获取第二哈希值对应的丢包结构体,判断第二哈希值对应丢包结构体的状态是否为激活状态,并在第二哈希值对应丢包结构体的状态为激活状态的情况下,丢弃所述域名请求报文;
当第二哈希值未命中丢包缓存表情况下,根据所述网络地址构建丢包结构体,并添加到所述丢包缓存表中。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
记录第二哈希值命中丢包缓存表的命中次数;
当第二哈希值命中丢包缓存表的命中次数超过预设阈值的情况下,将所述第二哈希值对应丢包结构体的状态配置为激活状态。
7.如权利要求1所述的方法,其特征在于,所述方法还包括:
判断域名请求报文所请求的域名是否在预设授权域中;
当域名请求报文所请求的域名未在所述预设授权域中的情况下,丢弃域名请求报文;
当域名请求报文所请求的域名在所述预设授权域中的情况下,记录一次所述域名请求报文所请求域名未在预设授权域中配置的次数;
当所述域名请求报文所请求域名未在预设授权域中配置的次数超过预设次数的情况下,将所述域名请求报文确定为随机主机域名攻击的域名请求报文。
8.一种域名解析装置,其特征在于,包括:
域名请求模块,用于接收来自域名解析请求端的域名请求报文;
域名请求报文信息获取模块,用于获取所述域名请求报文的报文内容以及所述域名解析请求端的网络地址;
哈希值计算模块,用于根据所述域名请求报文的报文内容以及所述域名解析请求端的网络地址,生成所述域名请求报文的哈希值;
加速缓存查询模块,用于判断所述域名请求报文的哈希值是否命中报文加速缓存表,其中,所述报文加速缓存表中包含:多个报文加速结构体,每个报文加速结构体对应一个哈希值;
解析加速模块,用于当所述域名请求报文的哈希值命中所述报文加速缓存表的情况下,获取所述域名请求报文的域名应答报文,并将所述域名请求报文的域名应答报文添加到所述报文加速缓存表中相应的报文加速结构体中;
域名应答模块,用于基于所述报文加速缓存表,向所述域名解析请求端返回域名应答报文。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述域名解析方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至7任一项所述域名解析方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110417495.8A CN112822309B (zh) | 2021-04-19 | 2021-04-19 | 域名解析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110417495.8A CN112822309B (zh) | 2021-04-19 | 2021-04-19 | 域名解析方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112822309A true CN112822309A (zh) | 2021-05-18 |
CN112822309B CN112822309B (zh) | 2021-07-16 |
Family
ID=75863691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110417495.8A Active CN112822309B (zh) | 2021-04-19 | 2021-04-19 | 域名解析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112822309B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113691987A (zh) * | 2021-08-30 | 2021-11-23 | 杭州安恒信息技术股份有限公司 | 一种dns请求处理方法、装置及相关设备 |
Citations (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1946061A (zh) * | 2006-10-12 | 2007-04-11 | 杭州华为三康技术有限公司 | 一种快速处理报文的方法及装置 |
CN101741605A (zh) * | 2008-11-11 | 2010-06-16 | 华为技术有限公司 | 一种处理报文的方法、设备和系统 |
CN102185936A (zh) * | 2011-06-23 | 2011-09-14 | 上海牙木通讯技术有限公司 | 一种基于linux操作系统的DNS服务系统和方法 |
CN102780616A (zh) * | 2012-07-19 | 2012-11-14 | 北京星网锐捷网络技术有限公司 | 基于多核处理器的报文处理方法、装置和网络设备 |
CN102790809A (zh) * | 2011-05-16 | 2012-11-21 | 奇智软件(北京)有限公司 | 域名系统解析方法、装置及客户端 |
CN102882791A (zh) * | 2012-10-30 | 2013-01-16 | 杭州迪普科技有限公司 | 一种dns业务处理的方法及装置 |
CN103036885A (zh) * | 2012-12-18 | 2013-04-10 | 迈普通信技术股份有限公司 | Sip服务器过载保护系统及方法 |
US8676989B2 (en) * | 2009-04-23 | 2014-03-18 | Opendns, Inc. | Robust domain name resolution |
CN103701957A (zh) * | 2014-01-14 | 2014-04-02 | 互联网域名系统北京市工程研究中心有限公司 | Dns递归方法及其系统 |
CN103973834A (zh) * | 2014-05-12 | 2014-08-06 | 重庆邮电大学 | 一种基于家庭网关的dns域名解析加速方法及装置 |
CN103973820A (zh) * | 2013-01-28 | 2014-08-06 | 深圳市快播科技有限公司 | 一种域名系统的优化方法、一种优化的域名系统 |
CN105791460A (zh) * | 2016-03-03 | 2016-07-20 | 中国科学院信息工程研究所 | 基于多维度聚合的dns代理缓存优化方法和系统 |
CN105939399A (zh) * | 2015-11-30 | 2016-09-14 | 杭州迪普科技有限公司 | 一种域名解析方法和装置 |
CN106657432A (zh) * | 2016-11-17 | 2017-05-10 | 中国移动通信集团江苏有限公司 | 域名解析方法及装置 |
US9729331B2 (en) * | 2014-04-23 | 2017-08-08 | Cryptography Research, Inc. | Corrupting a hash value corresponding to a key based on a revocation of the key |
CN107070988A (zh) * | 2017-03-06 | 2017-08-18 | 北京安博通科技股份有限公司 | 报文处理方法及装置 |
US9794263B2 (en) * | 2014-12-27 | 2017-10-17 | Intel Corporation | Technologies for access control |
CN108156274A (zh) * | 2017-12-18 | 2018-06-12 | 杭州迪普科技股份有限公司 | 一种vpn网络中使设备获得域名解析结果的方法及装置 |
CN109218454A (zh) * | 2017-04-13 | 2019-01-15 | 阿里巴巴集团控股有限公司 | Dns请求的响应方法及dns服务器 |
CN109561167A (zh) * | 2018-11-27 | 2019-04-02 | 杭州迪普科技股份有限公司 | 一种域名解析方法及装置 |
US10306007B2 (en) * | 2014-08-12 | 2019-05-28 | Huawei Software Technologies, Co., Ltd. | Cache content hit method and communications system |
US10511498B1 (en) * | 2015-02-25 | 2019-12-17 | Infoblox Inc. | Monitoring and analysis of interactions between network endpoints |
CN111355817A (zh) * | 2018-12-20 | 2020-06-30 | 中国移动通信集团辽宁有限公司 | 域名解析方法、装置、安全服务器及介质 |
CN112003945A (zh) * | 2020-08-26 | 2020-11-27 | 杭州迪普科技股份有限公司 | 服务请求响应方法及装置 |
CN112084109A (zh) * | 2020-09-01 | 2020-12-15 | 中国银联股份有限公司 | 系统测试方法、装置、设备及介质 |
CN112543237A (zh) * | 2020-11-27 | 2021-03-23 | 互联网域名系统北京市工程研究中心有限公司 | 无锁dns缓存方法和dns服务器 |
-
2021
- 2021-04-19 CN CN202110417495.8A patent/CN112822309B/zh active Active
Patent Citations (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1946061A (zh) * | 2006-10-12 | 2007-04-11 | 杭州华为三康技术有限公司 | 一种快速处理报文的方法及装置 |
CN101741605A (zh) * | 2008-11-11 | 2010-06-16 | 华为技术有限公司 | 一种处理报文的方法、设备和系统 |
US8676989B2 (en) * | 2009-04-23 | 2014-03-18 | Opendns, Inc. | Robust domain name resolution |
US10911399B2 (en) * | 2009-04-23 | 2021-02-02 | Cisco Technology, Inc. | Robust domain name resolution |
CN102790809A (zh) * | 2011-05-16 | 2012-11-21 | 奇智软件(北京)有限公司 | 域名系统解析方法、装置及客户端 |
CN102185936A (zh) * | 2011-06-23 | 2011-09-14 | 上海牙木通讯技术有限公司 | 一种基于linux操作系统的DNS服务系统和方法 |
CN102780616A (zh) * | 2012-07-19 | 2012-11-14 | 北京星网锐捷网络技术有限公司 | 基于多核处理器的报文处理方法、装置和网络设备 |
CN102882791A (zh) * | 2012-10-30 | 2013-01-16 | 杭州迪普科技有限公司 | 一种dns业务处理的方法及装置 |
CN103036885A (zh) * | 2012-12-18 | 2013-04-10 | 迈普通信技术股份有限公司 | Sip服务器过载保护系统及方法 |
CN103973820A (zh) * | 2013-01-28 | 2014-08-06 | 深圳市快播科技有限公司 | 一种域名系统的优化方法、一种优化的域名系统 |
CN103701957A (zh) * | 2014-01-14 | 2014-04-02 | 互联网域名系统北京市工程研究中心有限公司 | Dns递归方法及其系统 |
US9729331B2 (en) * | 2014-04-23 | 2017-08-08 | Cryptography Research, Inc. | Corrupting a hash value corresponding to a key based on a revocation of the key |
CN103973834A (zh) * | 2014-05-12 | 2014-08-06 | 重庆邮电大学 | 一种基于家庭网关的dns域名解析加速方法及装置 |
US10306007B2 (en) * | 2014-08-12 | 2019-05-28 | Huawei Software Technologies, Co., Ltd. | Cache content hit method and communications system |
US9794263B2 (en) * | 2014-12-27 | 2017-10-17 | Intel Corporation | Technologies for access control |
US10511498B1 (en) * | 2015-02-25 | 2019-12-17 | Infoblox Inc. | Monitoring and analysis of interactions between network endpoints |
CN105939399A (zh) * | 2015-11-30 | 2016-09-14 | 杭州迪普科技有限公司 | 一种域名解析方法和装置 |
CN105791460A (zh) * | 2016-03-03 | 2016-07-20 | 中国科学院信息工程研究所 | 基于多维度聚合的dns代理缓存优化方法和系统 |
CN106657432A (zh) * | 2016-11-17 | 2017-05-10 | 中国移动通信集团江苏有限公司 | 域名解析方法及装置 |
CN107070988A (zh) * | 2017-03-06 | 2017-08-18 | 北京安博通科技股份有限公司 | 报文处理方法及装置 |
CN109218454A (zh) * | 2017-04-13 | 2019-01-15 | 阿里巴巴集团控股有限公司 | Dns请求的响应方法及dns服务器 |
CN108156274A (zh) * | 2017-12-18 | 2018-06-12 | 杭州迪普科技股份有限公司 | 一种vpn网络中使设备获得域名解析结果的方法及装置 |
CN109561167A (zh) * | 2018-11-27 | 2019-04-02 | 杭州迪普科技股份有限公司 | 一种域名解析方法及装置 |
CN111355817A (zh) * | 2018-12-20 | 2020-06-30 | 中国移动通信集团辽宁有限公司 | 域名解析方法、装置、安全服务器及介质 |
CN112003945A (zh) * | 2020-08-26 | 2020-11-27 | 杭州迪普科技股份有限公司 | 服务请求响应方法及装置 |
CN112084109A (zh) * | 2020-09-01 | 2020-12-15 | 中国银联股份有限公司 | 系统测试方法、装置、设备及介质 |
CN112543237A (zh) * | 2020-11-27 | 2021-03-23 | 互联网域名系统北京市工程研究中心有限公司 | 无锁dns缓存方法和dns服务器 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113691987A (zh) * | 2021-08-30 | 2021-11-23 | 杭州安恒信息技术股份有限公司 | 一种dns请求处理方法、装置及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112822309B (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2835955A2 (en) | Detecting co-occurrence patterns in DNS | |
US10541857B1 (en) | Public DNS resolver prioritization | |
US9286293B2 (en) | Populating and using caches in client-side caching | |
CN110324295B (zh) | 一种域名系统泛洪攻击的防御方法和装置 | |
Ma et al. | Bayes-based ARP attack detection algorithm for cloud centers | |
US20180278678A1 (en) | System and method for limiting access request | |
CN111464661B (zh) | 负载均衡方法、装置、代理设备、缓存设备及服务节点 | |
CN112995046B (zh) | 一种内容分发网络流量管理方法及设备 | |
EP3618355B1 (en) | Systems and methods for operating a networking device | |
CN103685213A (zh) | 一种减少针对dns的攻击的装置、系统和方法 | |
CN112822309B (zh) | 域名解析方法及装置 | |
He et al. | TD-Root: A trustworthy decentralized DNS root management architecture based on permissioned blockchain | |
US11916935B1 (en) | Systems and methods for detecting malware domain names | |
Di Paola et al. | Protecting against DNS reflection attacks with Bloom filters | |
US10581902B1 (en) | Methods for mitigating distributed denial of service attacks and devices thereof | |
US10587649B2 (en) | Recursive domain name service (DNS) prefetching | |
US20200374231A1 (en) | Managing network traffic flows | |
CN114640504B (zh) | Cc攻击防护方法、装置、设备和存储介质 | |
US11658995B1 (en) | Methods for dynamically mitigating network attacks and devices thereof | |
Fujiwara et al. | Aggressive use of dnssec-validated cache | |
Song et al. | Using FDAD to prevent DAD attack in secure neighbor discovery protocol | |
US9560173B2 (en) | Techniques for improving SYN cache performance | |
US11748433B2 (en) | Communicating URL categorization information | |
Le et al. | Query access assurance in outsourced databases | |
CN117527309A (zh) | 一种防御分布式拒绝服务攻击的方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |