CN112187902A - IPv6隧道模式下的DNS代理方法、装置、存储介质及终端设备 - Google Patents

IPv6隧道模式下的DNS代理方法、装置、存储介质及终端设备 Download PDF

Info

Publication number
CN112187902A
CN112187902A CN202010999620.6A CN202010999620A CN112187902A CN 112187902 A CN112187902 A CN 112187902A CN 202010999620 A CN202010999620 A CN 202010999620A CN 112187902 A CN112187902 A CN 112187902A
Authority
CN
China
Prior art keywords
dns
message
ipv6
server
ipv4
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
Application number
CN202010999620.6A
Other languages
English (en)
Other versions
CN112187902B (zh
Inventor
宋俊举
朱海明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pulian International Co ltd
Original Assignee
Pulian International Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Pulian International Co ltd filed Critical Pulian International Co ltd
Priority to CN202010999620.6A priority Critical patent/CN112187902B/zh
Publication of CN112187902A publication Critical patent/CN112187902A/zh
Application granted granted Critical
Publication of CN112187902B publication Critical patent/CN112187902B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/566Grouping or aggregating service requests, e.g. for unified processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种IPv6隧道模式下的DNS代理方法、装置、存储介质及终端设备,包括:当接收到下游设备发送的DNS请求报文时,根据所述DNS请求报文中携带的原Transaction ID以及预设的索引匹配算法生成新Transaction ID;根据生成的新Transaction ID判断预设的缓存表中是否存在所述DNS请求报文对应的缓存信息;若是,则根据所述缓存表中记录的所述DNS请求报文对应的最后一次发送的服务器序号对所述DNS请求报文中的目的服务器进行切换,并将所述DNS请求报文发送至切换后的服务器;若否,则将所述DNS请求报文发送至所述目的服务器;根据所述DNS请求报文对所述缓存表进行相应更新。采用本发明的技术方案能够在IPv4服务器和IPv6服务器同时存在的情况下,简单方便地实现DNS代理。

Description

IPv6隧道模式下的DNS代理方法、装置、存储介质及终端设备
技术领域
本发明涉及通信技术领域,尤其涉及一种IPv6隧道模式下的DNS代理方法、装置、计算机可读存储介质及终端设备。
背景技术
当前网络运营商和用户主要使用的网络技术仍然是IPv4,通过穿越IPv4网络来实现IPv6主机对IPv6网络的访问更为快速和简单,因此,在IPv4网络中快速部署IPv6主机显得十分重要。
目前,在IPv4网络中快速部署IPv6主机,最主要的方法是在IPv6主机和IPv6网络之间建立隧道穿越IPv4网络,使得IPv6主机不感知IPv4网络的存在,用户边界设备的IPv4网络侧的地址,可以由IPv4网络分配,而对于IPv6用户获取IPv6地址和参数的方式主要有以下两种:一种方式是在用户认证后,可以将IPv6的申请通过隧道连接在IPv6设备上进行地址和参数的分配,这种方式需要额外的设备来完成,另一种方式是仅升级现有设备软件来完成,在IPv4网络上传递IPv6参数,这种方式不需要额外部署IPv6设备,但是无法实现在IPv4网络中下发IPv6DNS信息。
发明内容
本发明实施例所要解决的技术问题在于,提供一种IPv6隧道模式下的DNS代理方法、装置、计算机可读存储介质及终端设备,能够在IPv4服务器和IPv6服务器同时存在的情况下,简单方便地实现DNS代理。
为了解决上述技术问题,本发明实施例第一方面提供了一种IPv6隧道模式下的DNS代理方法,包括:
当接收到下游设备发送的DNS请求报文时,根据所述DNS请求报文中携带的原Transaction ID以及预设的索引匹配算法生成新Transaction ID;
根据生成的新Transaction ID判断预设的缓存表中是否存在所述DNS请求报文对应的缓存信息;其中,所述缓存表中包含若干个历史DNS请求报文对应的若干个缓存信息,每一个缓存信息均包括历史DNS请求报文对应的原Transaction ID、新Transaction ID、源地址、源端口号、最后一次发送的服务器序号、IPv4请求失败次数和IPv6请求失败次数;所述服务器序号包括IPv4服务器序号和IPv6服务器序号;
若是,则根据所述缓存表中记录的所述DNS请求报文对应的最后一次发送的服务器序号对所述DNS请求报文中的目的服务器进行切换,并将所述DNS请求报文发送至切换后的服务器;若否,则将所述DNS请求报文发送至所述目的服务器;
根据所述DNS请求报文对所述缓存表进行相应更新。
进一步地,所述索引匹配算法为哈希算法;则所述根据所述DNS请求报文中携带的原Transaction ID以及预设的索引匹配算法生成新Transaction ID,具体包括:
将所述DNS请求报文中携带的原Transaction ID与预设的哈希表的大小进行取余运算,获取新Transaction ID的前8位,并将新Transaction ID的后8位初始化为0;
将初始化后的新Transaction ID***到所述哈希表的链表中,获取***的链表的位置序号,并将所述位置序号作为新Transaction ID的后8位。
进一步地,所述根据所述DNS请求报文对所述缓存表进行相应更新,具体包括:
当所述缓存表中存在所述DNS请求报文对应的缓存信息时,根据所述DNS请求报文当前发送的服务器序号对所述缓存表中所述DNS请求报文对应的最后一次发送的服务器序号进行更新;
当所述缓存表中不存在所述DNS请求报文对应的缓存信息时,将所述DNS请求报文对应的原Transaction ID、新Transaction ID、源地址、源端口号、当前发送的服务器序号记录到所述缓存表中。
为了解决上述技术问题,本发明实施例第一方面还提供了一种IPv6隧道模式下的DNS代理管理装置,包括:
Transaction ID生成模块,用于当接收到下游设备发送的DNS请求报文时,根据所述DNS请求报文中携带的原Transaction ID以及预设的索引匹配算法生成新TransactionID;
缓存信息判断模块,用于根据生成的新Transaction ID判断预设的缓存表中是否存在所述DNS请求报文对应的缓存信息;其中,所述缓存表中包含若干个历史DNS请求报文对应的若干个缓存信息,每一个缓存信息均包括历史DNS请求报文对应的原TransactionID、新Transaction ID、源地址、源端口号、最后一次发送的服务器序号、IPv4请求失败次数和IPv6请求失败次数;所述服务器序号包括IPv4服务器序号和IPv6服务器序号;
报文处理模块,用于若是,则根据所述缓存表中记录的所述DNS请求报文对应的最后一次发送的服务器序号对所述DNS请求报文中的目的服务器进行切换,并将所述DNS请求报文发送至切换后的服务器;若否,则将所述DNS请求报文发送至所述目的服务器;
缓存表更新模块,用于根据所述DNS请求报文对所述缓存表进行相应更新。
为了解决上述技术问题,本发明实施例第二方面提供了一种IPv6隧道模式下的DNS代理方法,包括:
当接收到上游服务器发送的DNS响应报文时,根据所述DNS响应报文中携带的新Transaction ID判断预设的缓存表中是否存在所述DNS响应报文对应的DNS请求报文的缓存信息;其中,所述缓存表中包含若干个历史DNS请求报文对应的若干个缓存信息,每一个缓存信息均包括历史DNS请求报文对应的原Transaction ID、新Transaction ID、源地址、源端口号、最后一次发送的服务器序号、IPv4请求失败次数和IPv6请求失败次数;所述服务器序号包括IPv4服务器序号和IPv6服务器序号;
当所述缓存表中存在所述DNS响应报文对应的DNS请求报文的缓存信息时,根据所述DNS响应报文中的标识位判断响应是否失败;
当响应失败时,判断所述DNS响应报文的报文类型;
当所述报文类型为IPv4报文时,根据所述缓存表中记录的所述DNS响应报文对应的IPv6请求失败次数判断IPv6响应是否失败;若是,则将所述DNS响应报文发送至相应的下游设备;
当所述报文类型为IPv6报文时,根据所述缓存表中记录的所述DNS响应报文对应的IPv4请求失败次数判断IPv4响应是否失败;若是,则将所述DNS响应报文发送至相应的下游设备;
将所述DNS响应报文对应的DNS请求报文的缓存信息从所述缓存表中删除。
进一步地,所述方法还包括:
当响应未失败时,将所述DNS响应报文发送至相应的下游设备;
将所述DNS响应报文对应的DNS请求报文的缓存信息从所述缓存表中删除。
进一步地,所述方法还包括:
当所述缓存表中不存在所述DNS响应报文对应的DNS请求报文的缓存信息时,丢弃所述DNS响应报文;
当IPv6响应未失败时,丢弃所述DNS响应报文;
当IPv4响应未失败时,丢弃所述DNS响应报文。
为了解决上述技术问题,本发明实施例第二方面还提供了一种IPv6隧道模式下的DNS代理管理装置,包括:
缓存信息判断模块,用于当接收到上游服务器发送的DNS响应报文时,根据所述DNS响应报文中携带的新Transaction ID判断预设的缓存表中是否存在所述DNS响应报文对应的DNS请求报文的缓存信息;其中,所述缓存表中包含若干个历史DNS请求报文对应的若干个缓存信息,每一个缓存信息均包括历史DNS请求报文对应的原Transaction ID、新Transaction ID、源地址、源端口号、最后一次发送的服务器序号、IPv4请求失败次数和IPv6请求失败次数;所述服务器序号包括IPv4服务器序号和IPv6服务器序号;
响应判断模块,用于当所述缓存表中存在所述DNS响应报文对应的DNS请求报文的缓存信息时,根据所述DNS响应报文中的标识位判断响应是否失败;
报文类型判断模块,用于当响应失败时,判断所述DNS响应报文的报文类型;
第一报文处理模块,用于当所述报文类型为IPv4报文时,根据所述缓存表中记录的所述DNS响应报文对应的IPv6请求失败次数判断IPv6响应是否失败;若是,则将所述DNS响应报文发送至相应的下游设备;
第二报文处理模块,用于当所述报文类型为IPv6报文时,根据所述缓存表中记录的所述DNS响应报文对应的IPv4请求失败次数判断IPv4响应是否失败;若是,则将所述DNS响应报文发送至相应的下游设备;
缓存表更新模块,用于将所述DNS响应报文对应的DNS请求报文的缓存信息从所述缓存表中删除。
为了解决上述技术问题,本发明实施例第三方面提供了一种IPv6隧道模式下的DNS代理方法,包括:
当接收到下游设备发送的连接请求报文时,将所述连接请求报文发送至所有的上游服务器;其中,所述上游服务器包括IPv4服务器和IPv6服务器;
当在预设的时间段内接收到上游服务器返回的连接响应报文时,保存相应的连接关系;其中,所述连接关系包括一个IPv4连接或/和一个IPv6连接;
当接收到下游设备发送的DNS请求报文时,根据所述连接关系将所述DNS请求报文转发至已建立连接的上游服务器。
进一步地,所述方法还包括:
当在预设的时间段内未接收到上游服务器返回的连接应答报文时,丢弃所述连接请求报文。
为了解决上述技术问题,本发明实施例第三方面还提供了一种IPv6隧道模式下的DNS代理管理装置,包括:
报文发送模块,用于当接收到下游设备发送的连接请求报文时,将所述连接请求报文发送至所有的上游服务器;其中,所述上游服务器包括IPv4服务器和IPv6服务器;
连接关系保存模块,用于当在预设的时间段内接收到上游服务器返回的连接响应报文时,保存相应的连接关系;其中,所述连接关系包括一个IPv4连接或/和一个IPv6连接;
第一报文处理模块,用于当接收到下游设备发送的DNS请求报文时,根据所述连接关系将所述DNS请求报文转发至已建立连接的上游服务器。
为了解决上述技术问题,本发明实施例第四方面提供了一种IPv6隧道模式下的DNS代理方法,包括:
当接收到上游服务器发送的DNS响应报文时,根据所述DNS响应报文中的标识位判断响应是否失败;
当响应失败时,判断所述DNS响应报文的报文类型;
当所述报文类型为IPv4报文时,根据预先保存的连接关系判断IPv6连接是否存在;其中,所述连接关系包括一个IPv4连接或/和一个IPv6连接;若否,则将所述DNS响应报文发送至相应的下游设备;
当所述报文类型为IPv6报文时,根据所述连接关系判断IPv4连接是否存在;若否,则将所述DNS响应报文发送至相应的下游设备。
进一步地,所述方法还包括:
当响应未失败时,将所述DNS响应报文发送至相应的下游设备。
进一步地,所述方法还包括:
当IPv6连接存在时,判断IPv6连接是否响应失败;
若是,则将所述DNS响应报文发送至相应的下游设备,并将IPv6连接从所述连接关系中删除;
若否,则丢弃所述DNS响应报文。
进一步地,所述方法还包括:
当IPv4连接存在时,判断IPv4连接是否响应失败;
若是,则将所述DNS响应报文发送至相应的下游设备,并将IPv4连接从所述连接关系中删除;
若否,则丢弃所述DNS响应报文。
为了解决上述技术问题,本发明实施例第四方面还提供了一种IPv6隧道模式下的DNS代理管理装置,包括:
响应判断模块,用于当接收到上游服务器发送的DNS响应报文时,根据所述DNS响应报文中的标识位判断响应是否失败;
报文类型判断模块,用于当响应失败时,判断所述DNS响应报文的报文类型;
第一报文处理模块,用于当所述报文类型为IPv4报文时,根据预先保存的连接关系判断IPv6连接是否存在;其中,所述连接关系包括一个IPv4连接或/和一个IPv6连接;若否,则将所述DNS响应报文发送至相应的下游设备;
第二报文处理模块,用于当所述报文类型为IPv6报文时,根据所述连接关系判断IPv4连接是否存在;若否,则将所述DNS响应报文发送至相应的下游设备。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行:
上述第一方面任一项所述的IPv6隧道模式下的DNS代理方法;或,
上述第二方面任一项所述的IPv6隧道模式下的DNS代理方法;或,
上述第三方面任一项所述的IPv6隧道模式下的DNS代理方法;或,
上述第四方面任一项所述的IPv6隧道模式下的DNS代理方法。
本发明实施例还提供了一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现:
上述第一方面任一项所述的IPv6隧道模式下的DNS代理方法;或,
上述第二方面任一项所述的IPv6隧道模式下的DNS代理方法;或,
上述第三方面任一项所述的IPv6隧道模式下的DNS代理方法;或,
上述第四方面任一项所述的IPv6隧道模式下的DNS代理方法。
与现有技术相比,本发明实施例提供了一种IPv6隧道模式下的DNS代理方法、装置、计算机可读存储介质及终端设备,通过将接收到的下游设备发送的DNS请求报文、连接请求报文发送至相应的IPv4服务器或IPv6服务器,将接收到的上游IPv4服务器或上游IPv6服务器发送的DNS响应报文发送至相应的下游设备,能够在IPv4服务器和IPv6服务器同时存在的情况下,简单方便地实现DNS代理。
附图说明
图1是本发明第一方面提供的一种IPv6隧道模式下的DNS代理方法的一个优选实施例的流程图;
图2是本发明第一方面提供的一种IPv6隧道模式下的DNS代理装置的一个优选实施例的结构框图;
图3是本发明第二方面提供的一种IPv6隧道模式下的DNS代理方法的一个优选实施例的流程图;
图4是本发明第二方面提供的一种IPv6隧道模式下的DNS代理装置的一个优选实施例的结构框图;
图5是本发明第三方面提供的一种IPv6隧道模式下的DNS代理方法的一个优选实施例的流程图;
图6是本发明第三方面提供的一种IPv6隧道模式下的DNS代理装置的一个优选实施例的结构框图;
图7是本发明第四方面提供的一种IPv6隧道模式下的DNS代理方法的一个优选实施例的流程图;
图8是本发明第四方面提供的一种IPv6隧道模式下的DNS代理装置的一个优选实施例的结构框图;
图9是本发明提供的一种终端设备的一个优选实施例的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本技术领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例第一方面提供的一种IPv6隧道模式下的DNS代理方法,参见图1所示,是本发明第一方面提供的一种IPv6隧道模式下的DNS代理方法的一个优选实施例的流程图,所述方法包括步骤S11至步骤S14:
步骤S11、当接收到下游设备发送的DNS请求报文时,根据所述DNS请求报文中携带的原Transaction ID以及预设的索引匹配算法生成新Transaction ID;
步骤S12、根据生成的新Transaction ID判断预设的缓存表中是否存在所述DNS请求报文对应的缓存信息;其中,所述缓存表中包含若干个历史DNS请求报文对应的若干个缓存信息,每一个缓存信息均包括历史DNS请求报文对应的原Transaction ID、新Transaction ID、源地址、源端口号、最后一次发送的服务器序号、IPv4请求失败次数和IPv6请求失败次数;所述服务器序号包括IPv4服务器序号和IPv6服务器序号;
步骤S13、若是,则根据所述缓存表中记录的所述DNS请求报文对应的最后一次发送的服务器序号对所述DNS请求报文中的目的服务器进行切换,并将所述DNS请求报文发送至切换后的服务器;若否,则将所述DNS请求报文发送至所述目的服务器;
步骤S14、根据所述DNS请求报文对所述缓存表进行相应更新。
具体的,终端设备(例如路由器等网络设备)中预先设置了缓存表,用来记录已经接收到的若干个历史DNS请求报文所对应的若干个缓存信息,一个历史DNS请求报文对应一个缓存信息,每一个缓存信息均包括相应的历史DNS请求报文所对应的原Transaction ID、新Transaction ID、源地址、源端口号、最后一次发送的服务器序号(服务器包括IPv4服务器和IPv6服务器,服务器序号包括IPv4服务器序号和IPv6服务器序号)、IPv4请求失败次数(即IPv4服务器请求失败次数)和IPv6请求失败次数(即IPv6服务器请求失败次数),还可以包括缓存信息记录时间等信息。
终端设备在接收到下游设备发送的DNS请求报文时,根据接收到的该DNS请求报文中携带的原Transaction ID以及预先设置的索引匹配算法相应生成新Transaction ID,并写入该DNS请求报文中;终端设备根据生成的新Transaction ID判断预先设置的缓存表中是否存在该DNS请求报文所对应的缓存信息;若存在,则根据缓存表中记录的该DNS请求报文所对应的缓存信息获取对应的最后一次发送的服务器序号,根据最后一次发送的服务器序号确定该DNS请求报文最后一次发送至的服务器,以根据确定的服务器对该DNS请求报文中携带的目的服务器(即主DNS服务器)进行切换,并将该DNS请求报文发送至切换后的服务器;若不存在,则直接将该DNS请求报文发送至该DNS请求报文中携带的目的服务器;终端设备在将该DNS请求报文发送至相应的服务器之后,根据该DNS请求报文所对应的缓存信息对缓存表进行相应更新。
在本实施例中,缓存表中记录的IPv4服务器和IPv6服务器的相关信息,用于在接收到DNS请求报文时切换到相应的服务器,以将DNS请求报文发送至切换后的服务器,例如,若收到内网主机发送的DNS请求,在缓存表中查到了此条目,则说明上一次发送的请求失败(相应更新失败次数),还需再次请求,此时根据上一次(即最后一次)发送的服务器序号决定本次要请求发往的服务器地址。
需要说明的是,终端设备在根据生成的新Transaction ID判断预先设置的缓存表中是否存在该DNS请求报文所对应的缓存信息时,可以根据该DNS请求报文所对应的原Transaction ID、新Transaction ID、源地址和源端口号等信息与缓存表中的缓存信息是否相匹配进行判断,若找到匹配的缓存信息,则说明缓存表中存在该DNS请求报文所对应的缓存信息。
另外,本发明实施例中的DNS请求报文包括但不限于支持UDP协议的DNS请求报文。
在另一个优选实施例中,所述索引匹配算法为哈希算法;则所述根据所述DNS请求报文中携带的原Transaction ID以及预设的索引匹配算法生成新Transaction ID,具体包括:
将所述DNS请求报文中携带的原Transaction ID与预设的哈希表的大小进行取余运算,获取新Transaction ID的前8位,并将新Transaction ID的后8位初始化为0;
将初始化后的新Transaction ID***到所述哈希表的链表中,获取***的链表的位置序号,并将所述位置序号作为新Transaction ID的后8位。
具体的,结合上述实施例,索引匹配算法可以采用哈希算法,Transaction ID为16位,终端设备将接收到的DNS请求报文中携带的原Transaction ID与预先设置的哈希表的大小进行取余运算,并将运算结果作为新Transaction ID的前8位;新Transaction ID的后8位先初始化为0,再将初始化后的新Transaction ID***到预先设置的哈希表的链表中,并将初始化后的新Transaction ID在链表中所***的位置序号作为新Transaction ID的后8位,从而根据获得的新Transaction ID的前8位和后8位相应生成该DNS请求报文对应的新Transaction ID。
例如,假设哈希表的大小为m(0<m<256),新Transaction ID的前8位使用原Transaction ID与m取余获得;后八位初始化为0,***到哈希表的链表时,可以将后八位看作其在链表中的位置序号,哪个位置序号没被使用就***并使用这个位置序号。由于机型内存限制,目前支持同时存在的条目为128(有超时删除机制),因此一个链表上的256个位置序号不会造成重复,若需要支持更多的连接条目,新Transaction ID的生成方式可以修改。
需要说明的是,索引匹配算法可以采用哈希算法,也可以采用位图索引算法,或者采用其他支持双向索引的数据结构/算法,本发明实施例不作具体限定。
在又一个优选实施例中,所述根据所述DNS请求报文对所述缓存表进行相应更新,具体包括:
当所述缓存表中存在所述DNS请求报文对应的缓存信息时,根据所述DNS请求报文当前发送的服务器序号对所述缓存表中所述DNS请求报文对应的最后一次发送的服务器序号进行更新;
当所述缓存表中不存在所述DNS请求报文对应的缓存信息时,将所述DNS请求报文对应的原Transaction ID、新Transaction ID、源地址、源端口号、当前发送的服务器序号记录到所述缓存表中。
具体的,结合上述实施例,在根据接收到的DNS请求报文对缓存表进行更新时,同样需要结合该DNS请求报文所对应的缓存信息是否已经记录在缓存表中进行相应更新,当缓存表中存在该DNS请求报文所对应的缓存信息时,只需根据该DNS请求报文当前发送的服务器的服务器序号对缓存表中该DNS请求报文所对应的缓存信息中的最后一次发送的服务器序号进行更新,即将最后一次发送的服务器序号替换为当前发送的服务器的服务器序号;当缓存表中不存在该DNS请求报文所对应的缓存信息时,直接将该DNS请求报文所对应的缓存信息记录在缓存表中,即将该DNS请求报文所对应的原Transaction ID、新Transaction ID、源地址、源端口号、当前发送的服务器的服务器序号记录到缓存表中。
本发明实施例所提供的一种IPv6隧道模式下的DNS代理方法,当接收到下游设备发送的DNS请求报文时,根据所述DNS请求报文中携带的原Transaction ID以及预设的索引匹配算法生成新Transaction ID;根据生成的新Transaction ID判断预设的缓存表中是否存在所述DNS请求报文对应的缓存信息;若是,则根据所述缓存表中记录的所述DNS请求报文对应的最后一次发送的服务器序号对所述DNS请求报文中的目的服务器进行切换,并将所述DNS请求报文发送至切换后的服务器;若否,则将所述DNS请求报文发送至所述目的服务器;根据所述DNS请求报文对所述缓存表进行相应更新;能够在IPv4服务器和IPv6服务器同时存在的情况下,简单方便地实现DNS代理,并且由于缓存表中并未存储报文以及报文中的域名等信息,其占用的存储空间较小,同时,只需使用报文固定位置的字段来操作缓存表后即可将报文转发到相应的服务器,能够降低延迟。
本发明实施例第一方面还提供了一种IPv6隧道模式下的DNS代理装置,能够实现上述第一方面任一实施例所述的IPv6隧道模式下的DNS代理方法的所有流程,装置中的各个模块、单元的作用以及实现的技术效果分别与上述第一方面任一实施例所述的IPv6隧道模式下的DNS代理方法的作用以及实现的技术效果对应相同,这里不再赘述。
参见图2所示,是本发明第一方面提供的一种IPv6隧道模式下的DNS代理装置的一个优选实施例的结构框图,所述装置包括:
Transaction ID生成模块11,用于当接收到下游设备发送的DNS请求报文时,根据所述DNS请求报文中携带的原Transaction ID以及预设的索引匹配算法生成新Transaction ID;
缓存信息判断模块12,用于根据生成的新Transaction ID判断预设的缓存表中是否存在所述DNS请求报文对应的缓存信息;其中,所述缓存表中包含若干个历史DNS请求报文对应的若干个缓存信息,每一个缓存信息均包括历史DNS请求报文对应的原TransactionID、新Transaction ID、源地址、源端口号、最后一次发送的服务器序号、IPv4请求失败次数和IPv6请求失败次数;所述服务器序号包括IPv4服务器序号和IPv6服务器序号;
报文处理模块13,用于若是,则根据所述缓存表中记录的所述DNS请求报文对应的最后一次发送的服务器序号对所述DNS请求报文中的目的服务器进行切换,并将所述DNS请求报文发送至切换后的服务器;若否,则将所述DNS请求报文发送至所述目的服务器;
缓存表更新模块14,用于根据所述DNS请求报文对所述缓存表进行相应更新。
优选地,所述索引匹配算法为哈希算法;则所述Transaction ID生成模块11具体包括:
前8位获取单元,用于将所述DNS请求报文中携带的原Transaction ID与预设的哈希表的大小进行取余运算,获取新Transaction ID的前8位,并将新Transaction ID的后8位初始化为0;
后8位获取单元,用于将初始化后的新Transaction ID***到所述哈希表的链表中,获取***的链表的位置序号,并将所述位置序号作为新Transaction ID的后8位。
优选地,所述缓存表更新模块14具体包括:
第一更新单元,用于当所述缓存表中存在所述DNS请求报文对应的缓存信息时,根据所述DNS请求报文当前发送的服务器序号对所述缓存表中所述DNS请求报文对应的最后一次发送的服务器序号进行更新;
第二更新单元,用于当所述缓存表中不存在所述DNS请求报文对应的缓存信息时,将所述DNS请求报文对应的原Transaction ID、新Transaction ID、源地址、源端口号、当前发送的服务器序号记录到所述缓存表中。
本发明实施例第二方面提供的一种IPv6隧道模式下的DNS代理方法,参见图3所示,是本发明第二方面提供的一种IPv6隧道模式下的DNS代理方法的一个优选实施例的流程图,所述方法包括步骤S21至步骤S26:
步骤S21、当接收到上游服务器发送的DNS响应报文时,根据所述DNS响应报文中携带的新Transaction ID判断预设的缓存表中是否存在所述DNS响应报文对应的DNS请求报文的缓存信息;其中,所述缓存表中包含若干个历史DNS请求报文对应的若干个缓存信息,每一个缓存信息均包括历史DNS请求报文对应的原Transaction ID、新Transaction ID、源地址、源端口号、最后一次发送的服务器序号、IPv4请求失败次数和IPv6请求失败次数;所述服务器序号包括IPv4服务器序号和IPv6服务器序号;
步骤S22、当所述缓存表中存在所述DNS响应报文对应的DNS请求报文的缓存信息时,根据所述DNS响应报文中的标识位判断响应是否失败;
步骤S23、当响应失败时,判断所述DNS响应报文的报文类型;
步骤S24、当所述报文类型为IPv4报文时,根据所述缓存表中记录的所述DNS响应报文对应的IPv6请求失败次数判断IPv6响应是否失败;若是,则将所述DNS响应报文发送至相应的下游设备;
步骤S25、当所述报文类型为IPv6报文时,根据所述缓存表中记录的所述DNS响应报文对应的IPv4请求失败次数判断IPv4响应是否失败;若是,则将所述DNS响应报文发送至相应的下游设备;
步骤S26、将所述DNS响应报文对应的DNS请求报文的缓存信息从所述缓存表中删除。
具体的,终端设备(例如路由器等网络设备)中预先设置了缓存表,用来记录已经接收到的若干个历史DNS请求报文所对应的若干个缓存信息,其中,一个历史DNS请求报文对应一个历史DNS响应报文,并且一个历史DNS请求报文对应一个缓存信息,每一个缓存信息均包括相应的历史DNS请求报文所对应的原Transaction ID、新Transaction ID、源地址、源端口号、最后一次发送的服务器序号(服务器包括IPv4服务器和IPv6服务器,服务器序号包括IPv4服务器序号和IPv6服务器序号)、IPv4请求失败次数(即IPv4服务器请求失败次数)和IPv6请求失败次数(即IPv6服务器请求失败次数),还可以包括缓存信息记录时间等信息。
终端设备在接收到上游服务器(包括IPv4服务器和IPv6服务器)发送的DNS响应报文时,根据接收到的该DNS响应报文中携带的新Transaction ID判断预先设置的缓存表中是否存在该DNS响应报文所对应的DNS请求报文的缓存信息;当缓存表中存在该DNS响应报文所对应的DNS请求报文的缓存信息时,根据该DNS响应报文中的标识位判断响应是否失败(例如根据DNS响应报文的Flag字段的后四位判断响应是否失败,不为0表示响应失败,为0表示响应未失败,即响应成功);当判定响应失败(即DNS响应报文的Flag字段的后四位不为0)时,进一步判断该DNS响应报文的报文类型(报文类型包括IPv4报文和IPv6报文);当判定报文类型为IPv4报文时,根据缓存表中记录的该DNS响应报文所对应的DNS请求报文的缓存信息中的IPv6请求失败次数是否为0判断IPv6响应是否失败,若IPv6响应失败(IPv6请求失败次数不为0),则将该DNS响应报文转发至相应的下游设备;同理,当判定报文类型为IPv6报文时,根据缓存表中记录的该DNS响应报文所对应DNS请求报文的缓存信息中的IPv4请求失败次数是否为0判断IPv4响应是否失败,若IPv4响应失败(IPv4请求失败次数不为0),则将该DNS响应报文转发至相应的下游设备;终端设备在将该DNS响应报文转发至相应的下游设备之后,将该DNS响应报文所对应的DNS请求报文的缓存信息从缓存表中删除。
需要说明的是,当缓存表中存在该DNS响应报文所对应的DNS请求报文的缓存信息时,终端设备可以根据上游服务器返回的该DNS响应报文中携带的新Transaction ID查找缓存表,相应得到源地址和源端口号,以将该DNS响应报文转发给对应的内网主机。
另外,本发明实施例中的DNS响应报文包括但不限于支持UDP协议的DNS响应报文。
在又一个优选实施例中,所述方法还包括:
当响应未失败时,将所述DNS响应报文发送至相应的下游设备;
将所述DNS响应报文对应的DNS请求报文的缓存信息从所述缓存表中删除。
具体的,结合上述实施例,终端设备在根据该DNS响应报文中的标识位判定响应未失败(即DNS响应报文的Flag字段的后四位为0)时,说明对应的DNS请求报文响应成功,则将该DNS响应报文转发至相应的下游设备,并且在将该DNS响应报文转发至相应的下游设备之后,终端设备将该DNS响应报文所对应的DNS请求报文的缓存信息从缓存表中删除。
在又一个优选实施例中,所述方法还包括:
当所述缓存表中不存在所述DNS响应报文对应的DNS请求报文的缓存信息时,丢弃所述DNS响应报文;
当IPv6响应未失败时,丢弃所述DNS响应报文;
当IPv4响应未失败时,丢弃所述DNS响应报文。
具体的,结合上述实施例,终端设备在根据接收到的该DNS响应报文中携带的新Transaction ID判定预先设置的缓存表中不存在该DNS响应报文所对应的DNS请求报文的缓存信息时,直接丢弃该DNS响应报文;终端设备在判定报文类型为IPv4报文,并且判定IPv6响应未失败时,直接丢弃该DNS响应报文;终端设备在判定报文类型为IPv6报文,并且判定IPv4响应未失败时,直接丢弃该DNS响应报文。
综合上述实施例,缓存表中记录了返回包情况(即两个请求失败次数),终端设备在接收到请求报文并记录相关缓存信息后,若收到的响应报文是响应成功的报文,则直接转发给下游设备(例如下游客户端),并删除相应的缓存信息;若收到的响应报文是响应失败报文,则根据缓存表进一步判断两种类型的报文(即IPv4报文和IPv6报文)所对应的请求失败次数,若IPv4服务器请求失败次数和IPv6服务器请求失败次数均不为0,说明两种类型的报文均响应失败,本次请求彻底失败,没有等待的必要,则直接转发响应失败的报文给下游客户端,并删除相应的缓存信息;当判定报文类型为IPv4报文时,若IPv6服务器请求失败次数为0,说明IPv6报文的结果未知(例如暂未接收到响应),需要继续等待IPv6报文的响应,则直接丢弃该IPv4报文,并保留相应的缓存信息,直到接收到下一次满足转发要求的响应报文或者超时删除缓存信息;同理,当判定报文类型为IPv6报文时,若IPv4服务器请求失败次数为0,说明IPv4报文的结果未知(例如暂未接收到响应),需要继续等待IPv4报文的响应,则直接丢弃该IPv6报文,并保留相应的缓存信息,直到接收到下一次满足转发要求的响应报文或者超时删除缓存信息。
本发明实施例所提供的一种IPv6隧道模式下的DNS代理方法,当接收到上游服务器发送的DNS响应报文时,根据所述DNS响应报文中携带的新Transaction ID判断预设的缓存表中是否存在所述DNS响应报文对应的DNS请求报文的缓存信息;当所述缓存表中存在所述DNS响应报文对应的DNS请求报文的缓存信息时,根据所述DNS响应报文中的标识位判断响应是否失败;当响应失败时,判断所述DNS响应报文的报文类型;当所述报文类型为IPv4报文时,根据所述缓存表中记录的所述DNS响应报文对应的IPv6请求失败次数判断IPv6响应是否失败;若是,则将所述DNS响应报文发送至相应的下游设备;当所述报文类型为IPv6报文时,根据所述缓存表中记录的所述DNS响应报文对应的IPv4请求失败次数判断IPv4响应是否失败;若是,则将所述DNS响应报文发送至相应的下游设备;将所述DNS响应报文对应的DNS请求报文的缓存信息从所述缓存表中删除;能够在IPv4服务器和IPv6服务器同时存在的情况下,简单方便地实现DNS代理,并且由于缓存表中并未存储报文以及报文中的域名等信息,其占用的存储空间较小。
本发明实施例第二方面还提供了一种IPv6隧道模式下的DNS代理装置,能够实现上述第二方面任一实施例所述的IPv6隧道模式下的DNS代理方法的所有流程,装置中的各个模块的作用以及实现的技术效果分别与上述第二方面任一实施例所述的IPv6隧道模式下的DNS代理方法的作用以及实现的技术效果对应相同,这里不再赘述。
参见图4所示,是本发明第二方面提供的一种IPv6隧道模式下的DNS代理装置的一个优选实施例的结构框图,所述装置包括:
缓存信息判断模块21,用于当接收到上游服务器发送的DNS响应报文时,根据所述DNS响应报文中携带的新Transaction ID判断预设的缓存表中是否存在所述DNS响应报文对应的DNS请求报文的缓存信息;其中,所述缓存表中包含若干个历史DNS请求报文对应的若干个缓存信息,每一个缓存信息均包括历史DNS请求报文对应的原Transaction ID、新Transaction ID、源地址、源端口号、最后一次发送的服务器序号、IPv4请求失败次数和IPv6请求失败次数;所述服务器序号包括IPv4服务器序号和IPv6服务器序号;
响应判断模块22,用于当所述缓存表中存在所述DNS响应报文对应的DNS请求报文的缓存信息时,根据所述DNS响应报文中的标识位判断响应是否失败;
报文类型判断模块23,用于当响应失败时,判断所述DNS响应报文的报文类型;
第一报文处理模块24,用于当所述报文类型为IPv4报文时,根据所述缓存表中记录的所述DNS响应报文对应的IPv6请求失败次数判断IPv6响应是否失败;若是,则将所述DNS响应报文发送至相应的下游设备;
第二报文处理模块25,用于当所述报文类型为IPv6报文时,根据所述缓存表中记录的所述DNS响应报文对应的IPv4请求失败次数判断IPv4响应是否失败;若是,则将所述DNS响应报文发送至相应的下游设备;
缓存表更新模块26,用于将所述DNS响应报文对应的DNS请求报文的缓存信息从所述缓存表中删除。
优选地,所述装置还包括第三报文处理模块;用于:
当响应未失败时,将所述DNS响应报文发送至相应的下游设备;
将所述DNS响应报文对应的DNS请求报文的缓存信息从所述缓存表中删除。
优选地,所述装置还包括第四报文处理模块;用于:
当所述缓存表中不存在所述DNS响应报文对应的DNS请求报文的缓存信息时,丢弃所述DNS响应报文;
当IPv6响应未失败时,丢弃所述DNS响应报文;
当IPv4响应未失败时,丢弃所述DNS响应报文。
本发明实施例第三方面提供的一种IPv6隧道模式下的DNS代理方法,参见图5所示,是本发明第三方面提供的一种IPv6隧道模式下的DNS代理方法的一个优选实施例的流程图,所述方法包括步骤S31至步骤S33:
步骤S31、当接收到下游设备发送的连接请求报文时,将所述连接请求报文发送至所有的上游服务器;其中,所述上游服务器包括IPv4服务器和IPv6服务器;
步骤S32、当在预设的时间段内接收到上游服务器返回的连接响应报文时,保存相应的连接关系;其中,所述连接关系包括一个IPv4连接或/和一个IPv6连接;
步骤S33、当接收到下游设备发送的DNS请求报文时,根据所述连接关系将所述DNS请求报文转发至已建立连接的上游服务器。
具体的,终端设备(例如路由器等网络设备)在接收到下游设备发送的连接请求报文时,将接收到的连接请求报文发送至所有的上游服务器(上游服务器包括IPv4服务器和IPv6服务器),以同时尝试与上游所有的IPv4服务器和IPv6服务器建立连接;如果在预先设置的时间段内接收到任意一个IPv4服务器或/和IPv6服务器返回的连接响应报文,则保存相应的连接关系,所保存的连接关系对应包括一个IPv4连接或/和一个IPv6连接,即在IPv4和IPv6中,有一个连接建立成功则释放其余同类型的所有连接,最后只保留一个IPv4连接或一个IPv6连接或二者均有;当终端设备接收到下游设备发送的DNS请求报文时,根据所保存的连接关系获取已经成功建立的上游连接,并将接收到的DNS请求报文转发至已经建立连接的上游服务器。
需要说明的是,本发明实施例中的连接请求报文包括但不限于支持TCP协议的连接请求报文,DNS请求报文包括但不限于支持TCP协议的DNS请求报文。
在又一个优选实施例中,所述方法还包括:
当在预设的时间段内未接收到上游服务器返回的连接应答报文时,丢弃所述连接请求报文。
具体的,结合上述实施例,如果终端设备在预先设置的时间段内没有接收到任意一个IPv4服务器或/和IPv6服务器返回的连接响应报文,则丢弃该连接请求报文,释放下游设备的连接请求。
本发明实施例所提供的一种IPv6隧道模式下的DNS代理方法,当接收到下游设备发送的连接请求报文时,将所述连接请求报文发送至所有的上游服务器;其中,所述上游服务器包括IPv4服务器和IPv6服务器;当在预设的时间段内接收到上游服务器返回的连接响应报文时,保存相应的连接关系;其中,所述连接关系包括一个IPv4连接或/和一个IPv6连接;当接收到下游设备发送的DNS请求报文时,根据所述连接关系将所述DNS请求报文转发至已建立连接的上游服务器;能够在IPv4服务器和IPv6服务器同时存在的情况下,简单方便地实现DNS代理,并且同时尝试与所有服务器建立连接,可以在一次握手的时间就能确定目的服务器,从而能够降低延迟。
本发明实施例第三方面还提供了一种IPv6隧道模式下的DNS代理装置,能够实现上述第三方面任一实施例所述的IPv6隧道模式下的DNS代理方法的所有流程,装置中的各个模块的作用以及实现的技术效果分别与上述第三方面任一实施例所述的IPv6隧道模式下的DNS代理方法的作用以及实现的技术效果对应相同,这里不再赘述。
参见图6所示,是本发明第三方面提供的一种IPv6隧道模式下的DNS代理装置的一个优选实施例的结构框图,所述装置包括:
报文发送模块31,用于当接收到下游设备发送的连接请求报文时,将所述连接请求报文发送至所有的上游服务器;其中,所述上游服务器包括IPv4服务器和IPv6服务器;
连接关系保存模块32,用于当在预设的时间段内接收到上游服务器返回的连接响应报文时,保存相应的连接关系;其中,所述连接关系包括一个IPv4连接或/和一个IPv6连接;
第一报文处理模块33,用于当接收到下游设备发送的DNS请求报文时,根据所述连接关系将所述DNS请求报文转发至已建立连接的上游服务器。
优选地,所述装置还包括:
第二报文处理模块,用于当在预设的时间段内未接收到上游服务器返回的连接应答报文时,丢弃所述连接请求报文。
本发明实施例第四方面提供的一种IPv6隧道模式下的DNS代理方法,参见图7所示,是本发明第四方面提供的一种IPv6隧道模式下的DNS代理方法的一个优选实施例的流程图,所述方法包括步骤S41至步骤S44:
步骤S41、当接收到上游服务器发送的DNS响应报文时,根据所述DNS响应报文中的标识位判断响应是否失败;
步骤S42、当响应失败时,判断所述DNS响应报文的报文类型;
步骤S43、当所述报文类型为IPv4报文时,根据预先保存的连接关系判断IPv6连接是否存在;其中,所述连接关系包括一个IPv4连接或/和一个IPv6连接;若否,则将所述DNS响应报文发送至相应的下游设备;
步骤S44、当所述报文类型为IPv6报文时,根据所述连接关系判断IPv4连接是否存在;若否,则将所述DNS响应报文发送至相应的下游设备。
具体的,终端设备(例如路由器等网络设备)在接收到上游服务器(上游服务器包括IPv4服务器和IPv6服务器)发送的DNS响应报文时,根据该DNS响应报文中的标识位判断响应是否失败(例如根据DNS响应报文的Flag字段的后四位判断响应是否失败,不为0表示响应失败,为0表示响应未失败,即响应成功);当判定响应失败(即DNS响应报文的Flag字段的后四位不为0)时,进一步判断该DNS响应报文的报文类型(报文类型包括IPv4报文和IPv6报文);当判定报文类型为IPv4报文时,根据预先保存的连接关系(包括一个IPv4连接或/和一个IPv6连接)判断IPv6连接是否存在;若不存在,则将该DNS响应报文发送至相应的下游设备;同理,当判定报文类型为IPv6报文时,根据预先保存的连接关系判断IPv4连接是否存在;若不存在,则将该DNS响应报文发送至相应的下游设备。
需要说明的是,本发明实施例中的DNS响应报文包括但不限于支持TCP协议的DNS响应报文。
在又一个优选实施例中,所述方法还包括:
当响应未失败时,将所述DNS响应报文发送至相应的下游设备。
具体的,结合上述实施例,终端设备在根据该DNS响应报文中的标识位判断响应未失败(即DNS响应报文的Flag字段的后四位为0)时,说明对应的DNS请求报文响应成功,则将该DNS响应报文转发至相应的下游设备。
在又一个优选实施例中,所述方法还包括:
当IPv6连接存在时,判断IPv6连接是否响应失败;
若是,则将所述DNS响应报文发送至相应的下游设备,并将IPv6连接从所述连接关系中删除;
若否,则丢弃所述DNS响应报文。
具体的,结合上述实施例,终端设备在判定报文类型为IPv4报文,并且判定IPv6连接存在时,进一步判断IPv6连接是否响应失败,若失败,则将该DNS响应报文转发至相应的下游设备,并将IPv6连接从已经保存的连接关系中删除,以释放IPv6连接;若未失败,则直接丢弃该DNS响应报文。
在又一个优选实施例中,所述方法还包括:
当IPv4连接存在时,判断IPv4连接是否响应失败;
若是,则将所述DNS响应报文发送至相应的下游设备,并将IPv4连接从所述连接关系中删除;
若否,则丢弃所述DNS响应报文。
具体的,结合上述实施例,终端设备在判定报文类型为IPv6报文,并且判定IPv4连接存在时,进一步判断IPv4连接是否响应失败,若失败,则将该DNS响应报文转发至相应的下游设备,并将IPv4连接从已经保存的连接关系中删除,以释放IPv4连接;若未失败,则直接丢弃该DNS响应报文。
综合上述实施例,转发至相应的下游设备的DNS响应报文包括:(1)本连接若收到的是响应成功的回复报文,则直接转发给下游客户端;(2)本连接收到的是响应失败的回复报文,且另一条连接不存在,则直接转发给下游客户端;(3)本连接收到的是响应失败的回复报文,另一条连接存在且已经响应失败(接收到了响应失败的报文并丢弃),本连接若收到的报文还是响应失败,则直接转发给下游客户端;直接丢弃的DNS响应报文包括:本连接收到的是响应失败的回复报文,在另一个连接存在且尚未收到回复的情况下,本连接收到的响应失败的回复,直接抛弃此报文,等待另一条连接的回复。
本发明实施例所提供的一种IPv6隧道模式下的DNS代理方法,当接收到上游服务器发送的DNS响应报文时,根据所述DNS响应报文中的标识位判断响应是否失败;当响应失败时,判断所述DNS响应报文的报文类型;当所述报文类型为IPv4报文时,根据预先保存的连接关系判断IPv6连接是否存在;其中,所述连接关系包括一个IPv4连接或/和一个IPv6连接;若否,则将所述DNS响应报文发送至相应的下游设备;当所述报文类型为IPv6报文时,根据所述连接关系判断IPv4连接是否存在;若否,则将所述DNS响应报文发送至相应的下游设备;能够在IPv4服务器和IPv6服务器同时存在的情况下,简单方便地实现DNS代理,并且接收到的DNS响应只需判断另一条连接是否已经失败,来决定转发策略,从而能够降低延迟。
本发明实施例第四方面还提供了一种IPv6隧道模式下的DNS代理装置,能够实现上述第四方面任一实施例所述的IPv6隧道模式下的DNS代理方法的所有流程,装置中的各个模块的作用以及实现的技术效果分别与上述第四方面任一实施例所述的IPv6隧道模式下的DNS代理方法的作用以及实现的技术效果对应相同,这里不再赘述。
参见图8所示,是本发明第四方面提供的一种IPv6隧道模式下的DNS代理装置的一个优选实施例的结构框图,所述装置包括:
响应判断模块41,用于当接收到上游服务器发送的DNS响应报文时,根据所述DNS响应报文中的标识位判断响应是否失败;
报文类型判断模块42,用于当响应失败时,判断所述DNS响应报文的报文类型;
第一报文处理模块43,用于当所述报文类型为IPv4报文时,根据预先保存的连接关系判断IPv6连接是否存在;其中,所述连接关系包括一个IPv4连接或/和一个IPv6连接;若否,则将所述DNS响应报文发送至相应的下游设备;
第二报文处理模块44,用于当所述报文类型为IPv6报文时,根据所述连接关系判断IPv4连接是否存在;若否,则将所述DNS响应报文发送至相应的下游设备。
优选地,所述装置还包括:
第三报文处理模块,用于当响应未失败时,将所述DNS响应报文发送至相应的下游设备。
优选地,所述装置还包括第四报文处理模块,用于:
当IPv6连接存在时,判断IPv6连接是否响应失败;
若是,则将所述DNS响应报文发送至相应的下游设备,并将IPv6连接从所述连接关系中删除;
若否,则丢弃所述DNS响应报文。
优选地,所述装置还包括第五报文处理模块,用于:
当IPv4连接存在时,判断IPv4连接是否响应失败;
若是,则将所述DNS响应报文发送至相应的下游设备,并将IPv4连接从所述连接关系中删除;
若否,则丢弃所述DNS响应报文。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行:
上述第一方面任一实施例所述的IPv6隧道模式下的DNS代理方法;或,
上述第二方面任一实施例所述的IPv6隧道模式下的DNS代理方法;或,
上述第三方面任一实施例所述的IPv6隧道模式下的DNS代理方法;或,
上述第四方面任一实施例所述的IPv6隧道模式下的DNS代理方法。
本发明实施例还提供了一种终端设备,参见图9所示,是本发明提供的一种终端设备的一个优选实施例的结构框图,所述终端设备(例如路由器等网络设备)包括处理器10、存储器20以及存储在所述存储器20中且被配置为由所述处理器10执行的计算机程序,所述处理器10在执行所述计算机程序时实现:上述第一方面任一实施例所述的IPv6隧道模式下的DNS代理方法;或,
上述第二方面任一实施例所述的IPv6隧道模式下的DNS代理方法;或,
上述第三方面任一实施例所述的IPv6隧道模式下的DNS代理方法;或,
上述第四方面任一实施例所述的IPv6隧道模式下的DNS代理方法。
优选地,所述计算机程序可以被分割成一个或多个模块/单元(如计算机程序1、计算机程序2、······),所述一个或者多个模块/单元被存储在所述存储器20中,并由所述处理器10执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述终端设备中的执行过程。
所述处理器10可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,通用处理器可以是微处理器,或者所述处理器10也可以是任何常规的处理器,所述处理器10是所述终端设备的控制中心,利用各种接口和线路连接所述终端设备的各个部分。
所述存储器20主要包括程序存储区和数据存储区,其中,程序存储区可存储操作***、至少一个功能所需的应用程序等,数据存储区可存储相关数据等。此外,所述存储器20可以是高速随机存取存储器,还可以是非易失性存储器,例如插接式硬盘,智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡和闪存卡(Flash Card)等,或所述存储器20也可以是其他易失性固态存储器件。
需要说明的是,上述终端设备可包括,但不仅限于,处理器、存储器,本领域技术人员可以理解,图9结构框图仅仅是上述终端设备的示例,并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
综上,本发明实施例所提供的一种IPv6隧道模式下的DNS代理方法、装置、计算机可读存储介质及终端设备,通过将接收到的下游设备发送的DNS请求报文、连接请求报文发送至相应的IPv4服务器或IPv6服务器,将接收到的上游IPv4服务器或上游IPv6服务器发送的DNS响应报文发送至相应的下游设备,具有以下有益效果:
(1)能够在IPv4服务器和IPv6服务器同时存在的情况下,简单方便地实现DNS代理;
(2)由于缓存表中并未存储报文以及报文中的域名等信息,其占用的存储空间较小;
(3)只需使用报文固定位置的字段来操作缓存表后即可将报文转发到相应的服务器,能够降低延迟;
(4)同时尝试与所有服务器建立连接,可以在一次握手的时间就能确定目的服务器,并且接收到的DNS响应只需判断另一条连接是否已经失败,来决定转发策略,能够降低延迟。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (18)

1.一种IPv6隧道模式下的DNS代理方法,其特征在于,包括:
当接收到下游设备发送的DNS请求报文时,根据所述DNS请求报文中携带的原Transaction ID以及预设的索引匹配算法生成新Transaction ID;
根据生成的新Transaction ID判断预设的缓存表中是否存在所述DNS请求报文对应的缓存信息;其中,所述缓存表中包含若干个历史DNS请求报文对应的若干个缓存信息,每一个缓存信息均包括历史DNS请求报文对应的原Transaction ID、新Transaction ID、源地址、源端口号、最后一次发送的服务器序号、IPv4请求失败次数和IPv6请求失败次数;所述服务器序号包括IPv4服务器序号和IPv6服务器序号;
若是,则根据所述缓存表中记录的所述DNS请求报文对应的最后一次发送的服务器序号对所述DNS请求报文中的目的服务器进行切换,并将所述DNS请求报文发送至切换后的服务器;若否,则将所述DNS请求报文发送至所述目的服务器;
根据所述DNS请求报文对所述缓存表进行相应更新。
2.如权利要求1所述的IPv6隧道模式下的DNS代理方法,其特征在于,所述索引匹配算法为哈希算法;则所述根据所述DNS请求报文中携带的原Transaction ID以及预设的索引匹配算法生成新Transaction ID,具体包括:
将所述DNS请求报文中携带的原Transaction ID与预设的哈希表的大小进行取余运算,获取新Transaction ID的前8位,并将新Transaction ID的后8位初始化为0;
将初始化后的新Transaction ID***到所述哈希表的链表中,获取***的链表的位置序号,并将所述位置序号作为新Transaction ID的后8位。
3.如权利要求1或2所述的IPv6隧道模式下的DNS代理方法,其特征在于,所述根据所述DNS请求报文对所述缓存表进行相应更新,具体包括:
当所述缓存表中存在所述DNS请求报文对应的缓存信息时,根据所述DNS请求报文当前发送的服务器序号对所述缓存表中所述DNS请求报文对应的最后一次发送的服务器序号进行更新;
当所述缓存表中不存在所述DNS请求报文对应的缓存信息时,将所述DNS请求报文对应的原Transaction ID、新Transaction ID、源地址、源端口号、当前发送的服务器序号记录到所述缓存表中。
4.一种IPv6隧道模式下的DNS代理装置,其特征在于,包括:
Transaction ID生成模块,用于当接收到下游设备发送的DNS请求报文时,根据所述DNS请求报文中携带的原Transaction ID以及预设的索引匹配算法生成新TransactionID;
缓存信息判断模块,用于根据生成的新Transaction ID判断预设的缓存表中是否存在所述DNS请求报文对应的缓存信息;其中,所述缓存表中包含若干个历史DNS请求报文对应的若干个缓存信息,每一个缓存信息均包括历史DNS请求报文对应的原Transaction ID、新Transaction ID、源地址、源端口号、最后一次发送的服务器序号、IPv4请求失败次数和IPv6请求失败次数;所述服务器序号包括IPv4服务器序号和IPv6服务器序号;
报文处理模块,用于若是,则根据所述缓存表中记录的所述DNS请求报文对应的最后一次发送的服务器序号对所述DNS请求报文中的目的服务器进行切换,并将所述DNS请求报文发送至切换后的服务器;若否,则将所述DNS请求报文发送至所述目的服务器;
缓存表更新模块,用于根据所述DNS请求报文对所述缓存表进行相应更新。
5.一种IPv6隧道模式下的DNS代理方法,其特征在于,包括:
当接收到上游服务器发送的DNS响应报文时,根据所述DNS响应报文中携带的新Transaction ID判断预设的缓存表中是否存在所述DNS响应报文对应的DNS请求报文的缓存信息;其中,所述缓存表中包含若干个历史DNS请求报文对应的若干个缓存信息,每一个缓存信息均包括历史DNS请求报文对应的原Transaction ID、新Transaction ID、源地址、源端口号、最后一次发送的服务器序号、IPv4请求失败次数和IPv6请求失败次数;所述服务器序号包括IPv4服务器序号和IPv6服务器序号;
当所述缓存表中存在所述DNS响应报文对应的DNS请求报文的缓存信息时,根据所述DNS响应报文中的标识位判断响应是否失败;
当响应失败时,判断所述DNS响应报文的报文类型;
当所述报文类型为IPv4报文时,根据所述缓存表中记录的所述DNS响应报文对应的IPv6请求失败次数判断IPv6响应是否失败;若是,则将所述DNS响应报文发送至相应的下游设备;
当所述报文类型为IPv6报文时,根据所述缓存表中记录的所述DNS响应报文对应的IPv4请求失败次数判断IPv4响应是否失败;若是,则将所述DNS响应报文发送至相应的下游设备;
将所述DNS响应报文对应的DNS请求报文的缓存信息从所述缓存表中删除。
6.如权利要求5所述的IPv6隧道模式下的DNS代理方法,其特征在于,所述方法还包括:
当响应未失败时,将所述DNS响应报文发送至相应的下游设备;
将所述DNS响应报文对应的DNS请求报文的缓存信息从所述缓存表中删除。
7.如权利要求5或6所述的IPv6隧道模式下的DNS代理方法,其特征在于,所述方法还包括:
当所述缓存表中不存在所述DNS响应报文对应的DNS请求报文的缓存信息时,丢弃所述DNS响应报文;
当IPv6响应未失败时,丢弃所述DNS响应报文;
当IPv4响应未失败时,丢弃所述DNS响应报文。
8.一种IPv6隧道模式下的DNS代理装置,其特征在于,包括:
缓存信息判断模块,用于当接收到上游服务器发送的DNS响应报文时,根据所述DNS响应报文中携带的新Transaction ID判断预设的缓存表中是否存在所述DNS响应报文对应的DNS请求报文的缓存信息;其中,所述缓存表中包含若干个历史DNS请求报文对应的若干个缓存信息,每一个缓存信息均包括历史DNS请求报文对应的原Transaction ID、新Transaction ID、源地址、源端口号、最后一次发送的服务器序号、IPv4请求失败次数和IPv6请求失败次数;所述服务器序号包括IPv4服务器序号和IPv6服务器序号;
响应判断模块,用于当所述缓存表中存在所述DNS响应报文对应的DNS请求报文的缓存信息时,根据所述DNS响应报文中的标识位判断响应是否失败;
报文类型判断模块,用于当响应失败时,判断所述DNS响应报文的报文类型;
第一报文处理模块,用于当所述报文类型为IPv4报文时,根据所述缓存表中记录的所述DNS响应报文对应的IPv6请求失败次数判断IPv6响应是否失败;若是,则将所述DNS响应报文发送至相应的下游设备;
第二报文处理模块,用于当所述报文类型为IPv6报文时,根据所述缓存表中记录的所述DNS响应报文对应的IPv4请求失败次数判断IPv4响应是否失败;若是,则将所述DNS响应报文发送至相应的下游设备;
缓存表更新模块,用于将所述DNS响应报文对应的DNS请求报文的缓存信息从所述缓存表中删除。
9.一种IPv6隧道模式下的DNS代理方法,其特征在于,包括:
当接收到下游设备发送的连接请求报文时,将所述连接请求报文发送至所有的上游服务器;其中,所述上游服务器包括IPv4服务器和IPv6服务器;
当在预设的时间段内接收到上游服务器返回的连接响应报文时,保存相应的连接关系;其中,所述连接关系包括一个IPv4连接或/和一个IPv6连接;
当接收到下游设备发送的DNS请求报文时,根据所述连接关系将所述DNS请求报文转发至已建立连接的上游服务器。
10.如权利要求9所述的IPv6隧道模式下的DNS代理方法,其特征在于,所述方法还包括:
当在预设的时间段内未接收到上游服务器返回的连接应答报文时,丢弃所述连接请求报文。
11.一种IPv6隧道模式下的DNS代理装置,其特征在于,包括:
报文发送模块,用于当接收到下游设备发送的连接请求报文时,将所述连接请求报文发送至所有的上游服务器;其中,所述上游服务器包括IPv4服务器和IPv6服务器;
连接关系保存模块,用于当在预设的时间段内接收到上游服务器返回的连接响应报文时,保存相应的连接关系;其中,所述连接关系包括一个IPv4连接或/和一个IPv6连接;
第一报文处理模块,用于当接收到下游设备发送的DNS请求报文时,根据所述连接关系将所述DNS请求报文转发至已建立连接的上游服务器。
12.一种IPv6隧道模式下的DNS代理方法,其特征在于,包括:
当接收到上游服务器发送的DNS响应报文时,根据所述DNS响应报文中的标识位判断响应是否失败;
当响应失败时,判断所述DNS响应报文的报文类型;
当所述报文类型为IPv4报文时,根据预先保存的连接关系判断IPv6连接是否存在;其中,所述连接关系包括一个IPv4连接或/和一个IPv6连接;若否,则将所述DNS响应报文发送至相应的下游设备;
当所述报文类型为IPv6报文时,根据所述连接关系判断IPv4连接是否存在;若否,则将所述DNS响应报文发送至相应的下游设备。
13.如权利要求12所述的IPv6隧道模式下的DNS代理方法,其特征在于,所述方法还包括:
当响应未失败时,将所述DNS响应报文发送至相应的下游设备。
14.如权利要求12所述的IPv6隧道模式下的DNS代理方法,其特征在于,所述方法还包括:
当IPv6连接存在时,判断IPv6连接是否响应失败;
若是,则将所述DNS响应报文发送至相应的下游设备,并将IPv6连接从所述连接关系中删除;
若否,则丢弃所述DNS响应报文。
15.如权利要求12~14任一项所述的IPv6隧道模式下的DNS代理方法,其特征在于,所述方法还包括:
当IPv4连接存在时,判断IPv4连接是否响应失败;
若是,则将所述DNS响应报文发送至相应的下游设备,并将IPv4连接从所述连接关系中删除;
若否,则丢弃所述DNS响应报文。
16.一种IPv6隧道模式下的DNS代理装置,其特征在于,包括:
响应判断模块,用于当接收到上游服务器发送的DNS响应报文时,根据所述DNS响应报文中的标识位判断响应是否失败;
报文类型判断模块,用于当响应失败时,判断所述DNS响应报文的报文类型;
第一报文处理模块,用于当所述报文类型为IPv4报文时,根据预先保存的连接关系判断IPv6连接是否存在;其中,所述连接关系包括一个IPv4连接或/和一个IPv6连接;若否,则将所述DNS响应报文发送至相应的下游设备;
第二报文处理模块,用于当所述报文类型为IPv6报文时,根据所述连接关系判断IPv4连接是否存在;若否,则将所述DNS响应报文发送至相应的下游设备。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行:
如权利要求1~3任一项所述的IPv6隧道模式下的DNS代理方法;或,
如权利要求5~7任一项所述的IPv6隧道模式下的DNS代理方法;或,
如权利要求9~10任一项所述的IPv6隧道模式下的DNS代理方法;或,
如权利要求12~15任一项所述的IPv6隧道模式下的DNS代理方法。
18.一种终端设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现:
如权利要求1~3任一项所述的IPv6隧道模式下的DNS代理方法;或,
如权利要求5~7任一项所述的IPv6隧道模式下的DNS代理方法;或,
如权利要求9~10任一项所述的IPv6隧道模式下的DNS代理方法;或,
如权利要求12~15任一项所述的IPv6隧道模式下的DNS代理方法。
CN202010999620.6A 2020-09-21 2020-09-21 IPv6隧道模式下的DNS代理方法、装置、存储介质及终端设备 Active CN112187902B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010999620.6A CN112187902B (zh) 2020-09-21 2020-09-21 IPv6隧道模式下的DNS代理方法、装置、存储介质及终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010999620.6A CN112187902B (zh) 2020-09-21 2020-09-21 IPv6隧道模式下的DNS代理方法、装置、存储介质及终端设备

Publications (2)

Publication Number Publication Date
CN112187902A true CN112187902A (zh) 2021-01-05
CN112187902B CN112187902B (zh) 2023-10-17

Family

ID=73956577

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010999620.6A Active CN112187902B (zh) 2020-09-21 2020-09-21 IPv6隧道模式下的DNS代理方法、装置、存储介质及终端设备

Country Status (1)

Country Link
CN (1) CN112187902B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115378906A (zh) * 2022-08-16 2022-11-22 北京轻网科技股份有限公司 一种基于vpn框架的本地dns代理方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095585A1 (en) * 2002-12-20 2006-05-04 Koninklijke Philips Electronics N.V. System and method for establishing communication between a client and a server in a heterogenous ip network
CN102404317A (zh) * 2011-10-31 2012-04-04 杭州迪普科技有限公司 一种防范dns缓存攻击的方法及装置
CN102882791A (zh) * 2012-10-30 2013-01-16 杭州迪普科技有限公司 一种dns业务处理的方法及装置
CN104969515A (zh) * 2012-11-05 2015-10-07 柏思科技有限公司 处理dns请求的方法和网关
CN109474718A (zh) * 2018-12-29 2019-03-15 杭州迪普科技股份有限公司 域名解析方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095585A1 (en) * 2002-12-20 2006-05-04 Koninklijke Philips Electronics N.V. System and method for establishing communication between a client and a server in a heterogenous ip network
CN102404317A (zh) * 2011-10-31 2012-04-04 杭州迪普科技有限公司 一种防范dns缓存攻击的方法及装置
CN102882791A (zh) * 2012-10-30 2013-01-16 杭州迪普科技有限公司 一种dns业务处理的方法及装置
CN104969515A (zh) * 2012-11-05 2015-10-07 柏思科技有限公司 处理dns请求的方法和网关
CN109474718A (zh) * 2018-12-29 2019-03-15 杭州迪普科技股份有限公司 域名解析方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115378906A (zh) * 2022-08-16 2022-11-22 北京轻网科技股份有限公司 一种基于vpn框架的本地dns代理方法、装置、设备及介质
CN115378906B (zh) * 2022-08-16 2024-02-13 北京轻网科技股份有限公司 一种基于vpn框架的本地dns代理方法、装置、设备及介质

Also Published As

Publication number Publication date
CN112187902B (zh) 2023-10-17

Similar Documents

Publication Publication Date Title
CN106953795B (zh) 配置多网卡的方法及装置
US7415536B2 (en) Address query response method, program, and apparatus, and address notification method, program, and apparatus
EP1796342B1 (en) A method for transmitting requests
US10530886B2 (en) Method for optimizing WAN traffic using a cached stream and determination of previous transmission
US20100241861A1 (en) Dhcp client server system, dhcp client device and dhcp server device
RU2006129488A (ru) Устройство динамического управления сетью и способ динамического управления сетью
CN108234522A (zh) 防止地址解析协议arp攻击方法、装置、计算机设备和存储介质
US20140201385A1 (en) Method for optimizing wan traffic with deduplicated storage
CN112532704B (zh) 数据传输方法、装置、电子设备及存储介质
JP2018133692A (ja) 通信装置及びシステム及び方法
CN103414641B (zh) 邻居表项释放方法、装置和网络设备
TWI241089B (en) Method and apparatus to perform network routing using multiple length trie blocks
CN106302638B (zh) 一种数据管理方法、转发设备及***
US9344363B2 (en) Information processing system, relay device, information processing device, and information processing method
US6621820B1 (en) Method and system for updating routes in a route table on a client computer
CN105592083A (zh) 终端利用令牌访问服务器的方法和装置
CN112187902B (zh) IPv6隧道模式下的DNS代理方法、装置、存储介质及终端设备
CN108924061B (zh) 一种应用识别及管理方法、***及相关装置
US10680930B2 (en) Method and apparatus for communication in virtual network
US20140201384A1 (en) Method for optimizing wan traffic with efficient indexing scheme
CN112165537B (zh) 一种用于ping回复的虚拟IP的方法
JP6056857B2 (ja) 通信制御装置及び通信制御方法
JP2008311939A (ja) ネットワーク通信機器
JP2003163681A (ja) パケット転送装置、パケット転送方法およびプログラム
US7536479B2 (en) Local and remote network based management of an operating system-independent processor

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