CN110445641A - Dns代理服务器的主备切换方法及系统 - Google Patents
Dns代理服务器的主备切换方法及系统 Download PDFInfo
- Publication number
- CN110445641A CN110445641A CN201910625630.0A CN201910625630A CN110445641A CN 110445641 A CN110445641 A CN 110445641A CN 201910625630 A CN201910625630 A CN 201910625630A CN 110445641 A CN110445641 A CN 110445641A
- Authority
- CN
- China
- Prior art keywords
- dns
- server
- dns server
- unavailable
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0668—Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种DNS代理服务器的主备切换方法及系统,涉及家庭网关领域。该方法用在家庭网关设备中,包括以下步骤:WAN连接配置成功,获取多个DNS服务器IP,选择第一个DNS服务器IP配置DNS代理;监控DNS请求报文,检测到WAN侧DNS服务器不可用,则更换下一个可用的DNS服务器,配置DNS代理。本发明能够准确检测WAN侧DNS服务器不可用,并且实现主备切换,保证用户设备上网正常。
Description
技术领域
本发明涉及家庭网关领域,具体是涉及一种DNS代理服务器的主备切换方法及系统。
背景技术
DNS(Domain Name System,域名系统)是一种域名解析系统,提供域名IP转换的一种方法。一般家用终端设备(如电脑手机)在上网时需要用到DNS,同时它们大都通过宽带接入设备(即家庭网关)的DNS代理去解析域名,而不是直接访问DNS服务器。
用户接入家庭网关时,家庭网关为用户分配私有IP地址,同时预先分配DNS服务器为家庭网关的LAN(Local Area Network,局域网)侧管理IP。家庭网关正常接入网络后,家庭网关的WAN(Wide Area Network,广域网)侧会从运营商获取到多个DNS服务器IP,同时开启DNS代理。
通常的域名解析过程包括以下步骤:
a.电脑向家庭网关发送DNS解析请求;
b.家庭网关的DNS代理监听到该解析请求后,将该请求转发到WAN侧DNS服务器IP;
c.WAN侧DNS服务器收到后查询域名记录后,返回响应报文给家庭网关;
d.家庭网关收到响应报文后,返回该响应报文给LAN侧电脑。
在大部分的家庭网关应用场景中,并不需要对LAN侧网关的本地域名进行解析,或者对DNS请求报文做预处理,只需要简单的代理转发机制。这种情况下不需要用很强大的DNS代理工具,例如DNSmasq这种应用程序,只需要简单转发即可。因此家庭网关开启DNS代理时,只是下发IPtables规则将访问家庭网关LAN侧管理地址的DNS请求报文重定向到运营商的DNS服务器IP,即可实现DNS转发。
在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:由于DNSmasq一类代理软件可以同时支持WAN侧多个DNS服务器IP选择转发,但是IPtables规则只能同时生效一个。当遇到运营商的多个DNS服务器IP其中一个不可用,特别是主DNS不可用时,DNS代理模块无法感知,依然按照规则转发,结果会造成用户无法上网。因此需要一个便捷的机制来及时有效的解决这个问题。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种DNS代理服务器的主备切换方法及系统,能够准确检测WAN侧DNS服务器不可用,并且实现主备切换,保证用户设备上网正常。
第一方面,提供一种DNS代理服务器的主备切换方法,用在家庭网关设备中,包括以下步骤:
WAN连接配置成功,获取多个DNS服务器IP,选择第一个DNS服务器IP配置DNS代理;
监控DNS请求报文,检测到WAN侧DNS服务器不可用,则更换下一个可用的DNS服务器,配置DNS代理。
根据第一方面,在第一方面的第一种可能的实现方式中,检测到WAN侧DNS服务器不可用,采用以下方式实现:
检测到DNS请求报文的ICMP差错报文,开始不可达计数,不可达计数达到第一预设数值时,判定WAN侧DNS服务器不可用。
根据第一方面,在第一方面的第二种可能的实现方式中,检测到WAN侧DNS服务器不可用,采用以下方式实现:
检测到DNS回复报文的无效回复,开始无效域名解析计数,无效域名解析计数达到第二预设数值时,判定WAN侧DNS服务器不可用。
根据第一方面,在第一方面的第三种可能的实现方式中,检测到WAN侧DNS服务器不可用,采用以下方式实现:
检测到规定时间内DNS回复超时,开始超时报文计数,紧急模式下超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用。
根据第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,检测到规定时间内DNS回复超时,开始超时报文计数,紧急模式下超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用,具体包括以下步骤:
检测到DNS请求报文时,为每个DNS请求报文开启超时定时器,设置DNS请求报文的超时时间为第一约定时间,进入监控模式,开始超时报文计数,监控模式持续第二约定时间;
监控模式下,检测到某个第三约定时间内超时报文数目占DNS请求报文数目的比率大于第三预设数值时,进入紧急模式,紧急模式持续第四约定时间;第二约定时间和第四约定时间是第三约定时间的整数倍,且第四约定时间段小于第二约定时间段;
紧急模式下,检测到所有第三约定时间内超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用。
第二方面,提供一种DNS代理服务器的主备切换系统,包括:
WAN配置模块,用于:在家庭网关设备中建立广域网WAN连接,获取多个DNS服务器IP,选择第一个DNS服务器IP配置DNS代理;
DNS代理模块,用于:在家庭网关设备中代理用户DNS请求,将用户DNS请求转发到WAN侧DNS服务器,将回复报文转发给用户;
DNS监控模块,用于:监控WAN侧DNS服务器是否可用,不可用时通知WAN配置模块更换下一个可用的DNS服务器,配置DNS代理。
根据第二方面,在第二方面的第一种可能的实现方式中,所述DNS监控模块监控WAN侧DNS服务器是否可用,采用以下方式实现:
所述DNS监控模块检测到DNS请求报文的ICMP差错报文,开始不可达计数,不可达计数达到第一预设数值时,判定WAN侧DNS服务器不可用。
根据第二方面,在第二方面的第二种可能的实现方式中,所述DNS监控模块监控WAN侧DNS服务器是否可用,采用以下方式实现:
所述DNS监控模块检测到DNS回复报文的无效回复,开始无效域名解析计数,无效域名解析计数达到第二预设数值时,判定WAN侧DNS服务器不可用。
根据第二方面,在第二方面的第三种可能的实现方式中,所述DNS监控模块监控WAN侧DNS服务器是否可用,采用以下方式实现:
所述DNS监控模块检测到规定时间内DNS回复超时,开始超时报文计数,紧急模式下超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用。
根据第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述DNS监控模块检测到规定时间内DNS回复超时,开始超时报文计数,紧急模式下超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用,具体包括以下步骤:
所述DNS监控模块检测到DNS请求报文时,为每个DNS请求报文开启超时定时器,设置DNS请求报文的超时时间为第一约定时间,进入监控模式,开始超时报文计数,监控模式持续第二约定时间;
监控模式下,所述DNS监控模块检测到某个第三约定时间内有超时报文数目占DNS请求报文数目的比率大于第三预设数值时,进入紧急模式,紧急模式持续第四约定时间;第二约定时间和第四约定时间是第三约定时间的整数倍,且第四约定时间段小于第二约定时间段;
紧急模式下,所述DNS监控模块检测到所有第三约定时间内超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用。
与现有技术相比,本发明的优点如下:
(1)本发明通过监控DNS服务器的可用性,可以有效替换不可用的DNS服务器,保证用户业务畅通。
(2)本发明通过DNS服务器不可达、DNS域名不可解析、DNS服务器超时不响应等多种错误情形监控,可以更加准确的判断DNS服务器的可用性,避免重复请求不可用DNS服务器导致业务不可用且不感知,也可以避免网络拥塞导致不必要的DNS代理切换。
(3)本发明由内核模块实现不需要增加应用空间进程,且通过proc文件系统和netlink套接字很方便的和WAN配置模块交互,很便捷的实现了DNS服务器主备切换功能。
附图说明
图1为本发明实施例中DNS代理服务器的主备切换系统的结构示意图。
图2为本发明实施例中DNS代理服务器的主备切换方法的流程图。
图3为本发明实施例中DNS监控模块检测到WAN侧DNS服务器不可用的流程图。
图4为本发明实施例中第一种判断DNS服务器不可用的流程图。
图5为本发明实施例中第二种判断DNS服务器不可用的流程图。
图6为本发明实施例中第三种判断DNS服务器不可用的流程图。
具体实施方式
现在将详细参照本发明的具体实施例,在附图中例示了本发明的例子。尽管将结合具体实施例描述本发明,但将理解,不是想要将本发明限于所述的实施例。相反,想要覆盖由所附权利要求限定的在本发明的精神和范围内包括的变更、修改和等价物。应注意,这里描述的方法步骤都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
为了使本领域技术人员更好地理解本发明,下面结合附图和具体实施方式对本发明作进一步详细说明。
注意:接下来要介绍的示例仅是一个具体的例子,而不作为限制本发明的实施例必须为如下具体的步骤、数值、条件、数据、顺序等等。本领域技术人员可以通过阅读本说明书来运用本发明的构思来构造本说明书中未提到的更多实施例。
本发明的目的是提供一种家庭网关可以准确检测WAN侧DNS服务器不可用,并且实现主备切换的方法,保证用户设备上网正常。
本发明实施例提供一种DNS代理服务器的主备切换方法,用在家庭网关设备中,包括以下步骤:
WAN连接配置成功,获取多个DNS服务器IP,选择第一个DNS服务器IP配置DNS代理;
监控DNS请求报文,检测到WAN侧DNS服务器不可用,则更换下一个可用的DNS服务器,配置DNS代理。
作为优选的实施方式,检测到WAN侧DNS服务器不可用,可以采用以下方式实现:
检测到DNS请求报文的ICMP差错报文,开始不可达计数,不可达计数达到第一预设数值时,判定WAN侧DNS服务器不可用。
作为优选的实施方式,检测到WAN侧DNS服务器不可用,可以采用以下方式实现:
检测到DNS回复报文的无效回复,开始无效域名解析计数,无效域名解析计数达到第二预设数值时,判定WAN侧DNS服务器不可用。
作为优选的实施方式,检测到WAN侧DNS服务器不可用,可以采用以下方式实现:
检测到规定时间内DNS回复超时,开始超时报文计数,紧急模式下超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用。
作为优选的实施方式,检测到规定时间内DNS回复超时,开始超时报文计数,紧急模式下超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用,具体包括以下步骤:
检测到DNS请求报文时,为每个DNS请求报文开启超时定时器,设置DNS请求报文的超时时间为第一约定时间,进入监控模式,开始超时报文计数,监控模式持续第二约定时间;
监控模式下,检测到某个第三约定时间内有超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,进入紧急模式,紧急模式持续第四约定时间;第二约定时间和第四约定时间是第三约定时间的整数倍,且第四约定时间段小于第二约定时间段;
紧急模式下,检测到所有第三约定时间内超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用。
参见图1所示,本发明实施例还提供一种DNS代理服务器的主备切换系统,保证接入的用户上网设备DNS正常使用,该系统包括:
WAN配置模块,用于:在家庭网关设备中建立广域网WAN连接,获取多个DNS服务器IP,选择第一个DNS服务器IP配置DNS代理;
DNS代理模块,用于:在家庭网关设备中代理用户DNS请求,将用户DNS请求转发到WAN侧DNS服务器,将回复报文转发给用户;
DNS监控模块,用于:监控WAN侧DNS服务器是否可用,不可用时通知WAN配置模块更换下一个可用的DNS服务器,配置DNS代理。
家庭网关包含但不限于PON上行家庭网关、DSL上行家庭网关、以太网上行家庭网关、铜线上行家庭网关、无线路由器、智能网关等路由设备,用于为用户提供接入上网能力和DNS代理服务。
WAN配置模块为一个用户层模块,用于家庭网关设备中建立广域网WAN连接,获取运营商提供地址、DNS服务器、网关等信息,并负责配置DNS代理等功能。
DNS代理模块为一个内核模块,通过用户层规则配置后生效,用于家庭网关设备中代理用户DNS请求,将用户DNS请求转发到WAN侧DNS服务器,并将回复报文转发给用户。
DNS监控模块为一个内核模块,用于监控WAN侧DNS服务器是否可用,不可用时及时通知WAN配置模块,WAN配置模块维护DNS服务器列表并切换下一个可用DNS服务器,为用户设备提供DNS代理服务。
作为优选的实施方式,DNS监控模块监控WAN侧DNS服务器是否可用,可以采用以下方式实现:
DNS监控模块检测到DNS请求报文的ICMP差错报文,开始不可达计数,不可达计数达到第一预设数值时,判定WAN侧DNS服务器不可用。
作为优选的实施方式,DNS监控模块监控WAN侧DNS服务器是否可用,可以采用以下方式实现:
DNS监控模块检测到DNS回复报文的无效回复,开始无效域名解析计数,无效域名解析计数达到第二预设数值时,判定WAN侧DNS服务器不可用。
作为优选的实施方式,DNS监控模块监控WAN侧DNS服务器是否可用,可以采用以下方式实现:
DNS监控模块检测到规定时间内DNS回复超时,开始超时报文计数,紧急模式下超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用。
作为优选的实施方式,DNS监控模块检测到规定时间内DNS回复超时,开始超时报文计数,紧急模式下超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用,具体包括以下步骤:
DNS监控模块检测到DNS请求报文时,为每个DNS请求报文开启超时定时器,设置DNS请求报文的超时时间为第一约定时间,进入监控模式,开始超时报文计数,监控模式持续第二约定时间;
监控模式下,DNS监控模块检测到某个第三约定时间内超时报文数目占DNS请求报文数目的比率大于第三预设数值时,进入紧急模式,紧急模式持续第四约定时间;第二约定时间和第四约定时间是第三约定时间的整数倍,且第四约定时间段小于第二约定时间段;
紧急模式下,DNS监控模块检测到所有第三约定时间内超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用。
参见图1所示,WAN配置模块通过建立WAN链接,获取运营商配置的IP地址、网关、DNS服务器IP等信息,并通过IPtables工具配置DNS代理模块,生效DNS代理功能,并配置DNS监控模块监控该WAN链接接口和该DNS服务器IP交互的DNS请求报文。
DNS代理模块是一个内核模块,主要负责接收家庭网关LAN侧用户设备的DNS请求报文,并将其转发到WAN侧运营商提供的DNS服务器,同时将DNS服务器发送给家庭网关WAN侧接口的DNS回复报文转发给LAN侧发出请求的用户设备。
DNS监控模块是一个内核模块,通过在相应WAN链接接口的PREROUTING、POSTROUTING两个hook点挂载函数,监控和服务器IP交互的DNS请求报文,检查是否该服务器出现不可用现象,如果发现,则通过netlink套接字发送该服务器不可用信息给WAN配置模块,WAN配置模块重新选择可用DNS服务器,重新配置DNS代理功能。
WAN配置模块、DNS代理模块、DNS监控模块都支持一条或者多条WAN链接,且不限于上网业务或者家庭网关本机出发的业务及其他业务。WAN链接为家庭网关和运营商接入设备之间的一条通道,用于承载上网等各种业务。上网业务是指家庭网关LAN侧用户设备通过家庭网关转发DNS和上网等数据报文,本机出发业务包含家庭网关连接WAN侧管理平台,语音业务平台等。
WAN配置模块通过IPtables工具配置规则,使DNS代理模块生效,同时加载DNS监控模块,并通过proc文件系统将需要监控的WAN链接接口和DNS服务器IP通知给DNS监控模块。DNS监控模块通过netlink套接字消息将不可用DNS服务器IP发送给WAN配置模块。
参见图2所示,本发明实施例中DNS代理服务器的主备切换方法,用在家庭网关设备中,具体包括以下步骤:
步骤101、WAN配置模块配置一条WAN链接,获取到IP地址、网关以及DNS服务器IP。该WAN链接可以使用DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)、PPPoE(Point-to-Point Protocol over Ethernet,以太网上点对点协议)或者静态设置约定IP的方式,获取的IP地址配置到WAN链接接口,网关配置为路由,DNS服务器IP存入本机域名解析配置文件。
步骤102、WAN配置模块获取多个DNS服务器IP,默认选择第一个DNS服务器IP配置DNS代理。配置DNS代理的方式为:通过IPtables工具下发DNAT规则,当有多条WAN链接绑定不同LAN侧端口,使用不同的mark时,可以加上fwmark规则用于匹配。通过fwmark匹配DNAT转发DNS请求报文为DNS透明代理的通用做法,具体根据mark转发DNS请求报文的方法为公知常识,不在本发明描述范围内。
步骤103、WAN配置模块加载DNS监控模块,传入WAN链接接口名和DNS服务器IP作为参数。如果模块已加载,则写proc文件通知DNS监控模块,检测该WAN链接接口和DNS服务器IP的DNS请求报文。
步骤104、DNS监控模块监控该接口上和该DNS服务器IP的DNS请求报文,判断该DNS服务器是否可用。该判断DNS服务器是否可用的方法有多种,可以选择使用一种或者多种同时使用。
步骤105、判断是否检测到该DNS服务器不可用,如果检测到该DNS服务器不可用,则转到步骤106;如果检测到该DNS服务器可用,则返回步骤104,继续监控。
一般情况下,当预定时间之内没有DNS请求报文,则DNS监控模块可以进入等待状态,直到下一个DNS请求报文到来。该预定时间可以设置为一个适宜的时间段,例如5分钟、30分钟等。DNS监控模块内部所使用到的计数器,定时器等可以在进入等待状态时清空,也可以在下一次收到DNS请求报文时清空。
步骤106、如果该DNS服务器不可用,DNS监控模块通过netlink套接字,通知WAN配置模块该DNS服务器不可用,WAN配置模块收到后从DNS服务器列表中,选择该接口的下一个可用DNS服务器IP,配置DNS代理并通知DNS监控模块。
参见图3所示,本发明实施例中DNS监控模块检测到WAN侧DNS服务器不可用,具体包括以下步骤:
步骤301、DNS监控模块收到DNS请求报文后,这里的收到DNS请求报文,是指该WAN链接接口上往WAN侧DNS服务器转发出去第一个DNS请求报文。通常指DNS模块加载,接收到新的DNS服务器IP参数,或者在进入等待状态后重新收到的第一个请求报文开始。
步骤302、DNS监控模块检测到相应DNS请求报文的ICMP(Internet ControlMessage Protocol,Internet控制报文协议)差错报文后,判断DNS服务器不可达,ICMP差错报文提示路由不可达、主机不可达或者端口不可达,开始不可达计数,转到步骤303。
步骤303、当该不可达计数达到第一预设数值,判定WAN侧DNS服务器不可用,转到步骤308;否则返回步骤302。
步骤304、DNS监控模块检测到相应DNS回复报文的无有效回复,判断该域名解析无效,开始无效域名解析计数,转到步骤305。
步骤305、当无效域名解析计数达到第二预设数值,判定WAN侧DNS服务器不可用,转到步骤308;否则返回步骤304。
步骤306、DNS监控模块检测到规定时间内DNS回复超时,则开始超时报文计数,转到步骤307。
步骤307、当紧急模式下超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,则判定WAN侧DNS服务器不可用,转到步骤308;否则返回步骤306。
步骤308、当判定WAN侧DNS服务器不可用时,通知WAN配置模块WAN侧DNS服务器不可用。
采用步骤302、304、306这3种检测DNS服务器可用性的方法中的任意一种方法判定服务器不可用,则判定该DNS服务器不可用,DNS监控模块将该DNS服务器不可用信息通知给WAN配置模块。
本发明实施中可以采用3种方法中的任意一种或者同时使用多种方法监测,具体取决于想要监测的准确程度和实现的难易程度,监测方法也不限于以上3种方法,其他类似判断方法不在此一一列举,同时都应在本发明说明范围内。以上的各种方法预设数值和定时器等可以根据需要调整,本发明说明中不做限定。
DNS监控模块通过在该WAN接口的PREROUTING,POSTROUTING两个hoook点挂载函数监控该DNS服务器IP的DNS交互报文,来实现各种DNS请求报文的计数和分析,实现DNS服务器可用性的判断。
在预定时间内不再收到DNS请求报文后,DNS监控模块再次收到DNS请求报文时,清空所有检测方法用到的计数和定时器。
下面分别详细说明上述3种检测DNS服务器可用性的方法。
参见图4所示,本发明实施例中第一种检测DNS服务器可用性的方法,具体包括以下步骤:
步骤401、DNS监控模块开始检测。
步骤402、DNS监控模块检测到DNS请求报文,开始检测ICMP差错报文。
步骤403、检测该WAN接口是否接收到DNS请求报文的ICMP差错报文,如果是,则转到步骤404;否则返回步骤402。
DNS请求报文的ICMP差错报文是指ICMP port unreachable、host unreachable等报文,且其中包含的DNS请求报文和原DNS监控模块检测到的Transaction ID一致,则描述了该DNS服务器此时可能服务不开放,或者路由不可达等。
此步骤中所述ICMP差错报文的判断方法,主要根据该WAN接口的POSTROUTING和PREROUTING两个hook点挂载钩子函数,当DNS请求报文从POSTROUTING hook点发出时记录其Transaction ID。当PREROUTING hook点收到ICMP差错报文时,监测其中是否包含DNS请求报文且Transaction ID为已记录Transaction ID,是则认为是该DNS请求报文的ICMP差错报文,表示该DNS请求不可达。根据ICMP差错报文的类型是port unreachable,hostunreachable等判断是服务关闭还是路由不可达等。
步骤404、如果有ICMP差错报文,ICMP差错报文提示路由不可达、主机不可达或者端口不可达,则开始不可达计数,转到步骤405。
步骤405、判断该不可达计数是否达到第一预设数值,如果是,则转到步骤406;否则返回步骤402。
此处第一预设数值建议不要设置过大或者过小,例如:30左右较为适宜。当有ICMP差错报文收到时,一般网络情况或者DNS服务器不可用情况比较明显,建议采用较小值,以便尽快判断DNS服务器不可用,从而切换正常DNS服务器代理。
步骤406、如果不可达计数达到第一预设数值,则判定该DNS服务器不可用,并通知WAN配置模块修改下一个DNS服务器为DNS代理服务器。
参见图5所示,本发明实施例中第二种检测DNS服务器可用性的方法,具体包括以下步骤:
步骤501、DNS监控模块开始检测。
步骤502、DNS监控模块检测到DNS请求报文,则开始检测相应DNS回复报文。
步骤503、检测该WAN接口是否接收到相应DNS回复报文,检查该DNS回复报文。如果该报文是否为A或者AAAA请求,且回复报文的Flags字段中reply code是否为0011,即NoSuch Name,如果是,则转到步骤504;否则返回步骤502。
此步骤中需要在WAN链接接口的PREROUTING hook点的钩子函数中解析DNS回复报文,首先判断DNS请求报文Transaction ID(事务ID,这里表示报文的唯一性,用来标记一次报文交互)是否为已记录的请求报文,然后判断是否包含type A或者AAAA的请求,并且Flags中的reply code字段是否为0011,即No Such Name,是则为不可解析域名回复。
步骤503提供了一种判断DNS回复报文无效的方法,该类DNS回复报文并不是非法报文,只是说明该DNS服务器并没有该DNS服务器没有查询到该域名记录。如果这类不可解析域名过多,可能说明了该DNS服务器配置错误等不可用现象。
步骤504、如果是则该报文为无效回复,没有包含相应IP/IPv6地址,并增加不可解析域名数,转到步骤505。
步骤505、判断该不可解析域名数是否达到第二预设数值,如果是,则转到步骤506;否则返回步骤502。
此步骤中通常DNS服务器处于正常运行中,只是缺乏该域名的记录,且可能该域名确实不存在可能性也较大。因此此处第二预设数值建议设置较大一点,例如100等,通常有测试域名服务器的域名记录偏少,并且不支持递归查询是可能遇到此场景,因此可以检测得到。但是在某些特殊场景中,部分用户设备发送随机域名查询时,也不至于因为此处第二预设数值过小导致错误检测为服务器不可用。
步骤506、如果不可解析域名数达到第二预设数值,则判定该DNS服务器不可用,并通知WAN配置模块设置下一个DNS服务器为DNS代理服务器。
上述方案中,DNS监控模块需要维护一个不可解析域名列表,重复请求的域名不可解析时不再加入表中,也不增加计数。当DNS监控模块重新开始新一次检测时该列表清空。
参见图6所示,本发明实施例中第三种检测DNS服务器可用性的方法,具体包括以下步骤:
步骤601、DNS监控模块开始检测。
步骤602、DNS监控模块检测到DNS请求报文,则开始计算发送的DNS请求报文数目,并为每个DNS请求报文开启超时定时器,设置DNS请求报文的超时时间为第一约定时间。此事件应为最小的一个时间值,适宜设置较小值,例如10秒。
步骤603、DNS监控模块清空超时计数,进入监控模式,开始超时报文计数,监控模式持续第二约定时间。
步骤604、监控模式下,第二约定时间内,计算每个第三约定时段超时报文数目占发送的DNS请求报文数目的比率。
步骤605、第二约定时间内,有某个第三约定时间内超时报文数目占DNS请求报文数目的比率是否大于第三预设数值,如果是,则转到步骤607,否则转到步骤606。
步骤606、判断第二约定时间是否到期,如果否,则转到步骤604,进入下一个第三约定时间,计算超时报文数目占DNS请求报文数目的比率;如果是,则转到步骤603,进入下一个监控模式。
步骤607、第二约定时间内有超时报文数目占DNS请求报文数目的比率大于第三预设数值的情况发生,则进入紧急模式检测,紧急模式持续第四约定时间;第二约定时间和第四约定时间是第三约定时间的整数倍,且第四约定时间段小于第二约定时间段。
步骤608、第四约定时间内,计算每个第三约定时段超时数目占DNS请求报文数目的比率。
步骤609、判断第四约定时间是否到期,如果是,则转到步骤610,如果否,则转到步骤608,继续进入下一个第三约定时间,计算超时报文数目占DNS请求报文数目的比率。
步骤610、第四约定时间到期,判断是否所有的第三约定时间内超时报文数目占DNS请求报文数目的比率都大于第三预设数值,如果是,则转到步骤603,进入监控模式;如果否,则转到步骤611。
步骤611、紧急模式下,第四约定时间内,检测到所有第三约定时间内超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用,并通知WAN配置模块设置下一个DNS服务器为DNS代理服务器。
上述步骤中的第三预设数值是一个比率,当第三约定时间内超时报文数目占DNS请求报文数目的比率大于第三预设数值时,说明WAN侧DNS服务器不可用程度较高,需要在较短时间内判断出结果,如果持续第四约定时间的紧急模式下,每个第三约定时间内超时报文数目占DNS请求报文数目的比率都较高,则直接判断为WAN侧DNS服务器不可用,立即通知WAN配置模块切换DNS代理。如果在某一个第三约定时间内超时报文数目占DNS请求报文数目的比率下降到第三预设数值以下,则认为前一个状态只是一个波动状况,继续进入监控模式进行监控。
监控模式中,因为大部分DNS请求有正常回复,则保持监控即可。但是,只要在第二约定时间内,有任意一个第三约定时间内超时报文数目占DNS请求报文数目的比率高于第三预设数值,则进入紧急模式。
当每个第三约定时间内发送的DNS请求报文较少时,例如少于10个时,建议设置第三预设数值为较大值,例如40%;当每个第三约定时间内发送的DNS请求报文较多时,建议设置第三预设数值为较小值,例如10%,20%等,这样能够避免当每个第三约定时间内发送的DNS请求报文过少时判断结果的过大波动,也可以保证在每个第三约定时间内发送的DNS请求报文较多时不经常进入紧急模式。
上述步骤中,第一约定时间(每个DNS请求报文的超时时间)为最小时间段,适宜设置为10秒。
监控模式持续的第二约定时间为最长时间段,适宜设置为5分钟。
第三约定时间为监测固定周期内超时报文数目的最小计数周期,是监测超时报文数目占DNS请求报文数目的比率的一个基本时间段,为较小数值,适宜设置为1分钟,每个第三约定时间计算DNS超时报文数目占DNS请求报文的比率。
紧急模式持续的第四约定时间为较长时间段,适宜设置为3分钟。
第二约定时间和第四约定时间应为较长时间,且为第三约定时间的整数倍,其中第四约定时间段要小于第二约定时间段。
上述方案中的紧急模式下,每个第三约定时间内超时报文数目占DNS请求报文数目的比率都大于第三预设数值,表示DNS服务器可用性很差,在紧急模式下继续监测较短的第四约定时间后,方便判断是否立即判定是否DNS服务器不可用,以免对业务影响过大。
在监控模式下,DNS请求报文虽然有超时,但也可以理解为网络不稳定等其他原因,可以继续监测较长的第二约定时间后,看是否需要转为紧急模式,如不需要可以继续保持监测。只要超时现象不继续恶化,可以认为是网络拥塞造成的合理现象,而不是DNS服务器不可用。
本发明实施例通过监控DNS服务器的可用性,可以有效替换不可用的DNS服务器,保证用户业务畅通。通过DNS服务器不可达、DNS域名不可解析、DNS服务器超时不响应等多种错误情形监控,可以更加准确的判断DNS服务器的可用性,避免重复请求不可用DNS服务器导致业务不可用且不感知,也可以避免网络拥塞导致不必要的DNS代理切换。由内核模块实现不需要增加应用空间进程,且通过proc文件系统和netlink套接字很方便的和WAN配置模块交互,很便捷的实现了DNS服务器主备切换功能。
基于同一发明构思,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法的所有方法步骤或部分方法步骤。
本发明实现上述方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Ra ndomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
基于同一发明构思,本申请实施例还提供一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,处理器执行计算机程序时实现上述方法中的所有方法步骤或部分方法步骤。
所称处理器可以是中央处理单元(Central Processing Unit,CP U),还可以是其他通用处理器、数字信号处理器(Digital Signal Pr ocessor,DSP)、专用集成电路(Application Specific Integrated Circ uit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,F PGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(例如声音播放功能、图像播放功能等);存储数据区可存储根据手机的使用所创建的数据(例如音频数据、视频数据等)。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Fl ash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、服务器或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、服务器和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种DNS代理服务器的主备切换方法,用在家庭网关设备中,其特征在于,包括以下步骤:
WAN连接配置成功,获取多个DNS服务器IP,选择第一个DNS服务器IP配置DNS代理;
监控DNS请求报文,检测到WAN侧DNS服务器不可用,则更换下一个可用的DNS服务器,配置DNS代理。
2.如权利要求1所述的方法,其特征在于:
检测到WAN侧DNS服务器不可用,采用以下方式实现:
检测到DNS请求报文的ICMP差错报文,开始不可达计数,不可达计数达到第一预设数值时,判定WAN侧DNS服务器不可用。
3.如权利要求1所述的方法,其特征在于:
检测到WAN侧DNS服务器不可用,采用以下方式实现:
检测到DNS回复报文的无效回复,开始无效域名解析计数,无效域名解析计数达到第二预设数值时,判定WAN侧DNS服务器不可用。
4.如权利要求1所述的方法,其特征在于:
检测到WAN侧DNS服务器不可用,采用以下方式实现:
检测到规定时间内DNS回复超时,开始超时报文计数,紧急模式下超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用。
5.如权利要求4所述的方法,其特征在于:检测到规定时间内DNS回复超时,开始超时报文计数,紧急模式下超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用,具体包括以下步骤:
检测到DNS请求报文时,为每个DNS请求报文开启超时定时器,设置DNS请求报文的超时时间为第一约定时间,进入监控模式,开始超时报文计数,监控模式持续第二约定时间;
监控模式下,检测到某个第三约定时间内超时报文数目占DNS请求报文数目的比率大于第三预设数值时,进入紧急模式,紧急模式持续第四约定时间;第二约定时间和第四约定时间是第三约定时间的整数倍,且第四约定时间段小于第二约定时间段;
紧急模式下,检测到所有第三约定时间内超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用。
6.一种DNS代理服务器的主备切换系统,其特征在于,包括:
WAN配置模块,用于:在家庭网关设备中建立广域网WAN连接,获取多个DNS服务器IP,选择第一个DNS服务器IP配置DNS代理;
DNS代理模块,用于:在家庭网关设备中代理用户DNS请求,将用户DNS请求转发到WAN侧DNS服务器,将回复报文转发给用户;
DNS监控模块,用于:监控WAN侧DNS服务器是否可用,不可用时通知WAN配置模块更换下一个可用的DNS服务器,配置DNS代理。
7.如权利要求6所述的系统,其特征在于:所述DNS监控模块监控WAN侧DNS服务器是否可用,采用以下方式实现:
所述DNS监控模块检测到DNS请求报文的ICMP差错报文,开始不可达计数,不可达计数达到第一预设数值时,判定WAN侧DNS服务器不可用。
8.如权利要求6所述的系统,其特征在于:所述DNS监控模块监控WAN侧DNS服务器是否可用,采用以下方式实现:
所述DNS监控模块检测到DNS回复报文的无效回复,开始无效域名解析计数,无效域名解析计数达到第二预设数值时,判定WAN侧DNS服务器不可用。
9.如权利要求6所述的系统,其特征在于:所述DNS监控模块监控WAN侧DNS服务器是否可用,采用以下方式实现:
所述DNS监控模块检测到规定时间内DNS回复超时,开始超时报文计数,紧急模式下超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用。
10.如权利要求9所述的系统,其特征在于:所述DNS监控模块检测到规定时间内DNS回复超时,开始超时报文计数,紧急模式下超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用,具体包括以下步骤:
所述DNS监控模块检测到DNS请求报文时,为每个DNS请求报文开启超时定时器,设置DNS请求报文的超时时间为第一约定时间,进入监控模式,开始超时报文计数,监控模式持续第二约定时间;
监控模式下,所述DNS监控模块检测到某个第三约定时间内有超时报文数目占DNS请求报文数目的比率大于第三预设数值时,进入紧急模式,紧急模式持续第四约定时间;第二约定时间和第四约定时间是第三约定时间的整数倍,且第四约定时间段小于第二约定时间段;
紧急模式下,所述DNS监控模块检测到所有第三约定时间内超时报文数目占DNS请求报文数目的比率都大于第三预设数值时,判定WAN侧DNS服务器不可用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910625630.0A CN110445641A (zh) | 2019-07-11 | 2019-07-11 | Dns代理服务器的主备切换方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910625630.0A CN110445641A (zh) | 2019-07-11 | 2019-07-11 | Dns代理服务器的主备切换方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110445641A true CN110445641A (zh) | 2019-11-12 |
Family
ID=68430172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910625630.0A Pending CN110445641A (zh) | 2019-07-11 | 2019-07-11 | Dns代理服务器的主备切换方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110445641A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112671910A (zh) * | 2020-12-25 | 2021-04-16 | 互联网域名系统北京市工程研究中心有限公司 | Dns转发服务器的优化选取方法及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101651691A (zh) * | 2009-08-31 | 2010-02-17 | 中兴通讯股份有限公司 | 一种网络系统、接入设备以及应用层服务接入方法 |
CN103227842A (zh) * | 2012-01-31 | 2013-07-31 | 中兴通讯股份有限公司 | 一种获取sip服务器地址的方法和装置 |
CN104683326A (zh) * | 2014-12-30 | 2015-06-03 | 盛科网络(苏州)有限公司 | 恶意耗尽dhcp服务器地址池的防止方法 |
CN105763278A (zh) * | 2016-01-06 | 2016-07-13 | 杭州华三通信技术有限公司 | 一种时间回溯的方法和装置 |
CN105763668A (zh) * | 2016-02-26 | 2016-07-13 | 杭州华三通信技术有限公司 | 一种域名解析方法和装置 |
CN106470248A (zh) * | 2015-08-19 | 2017-03-01 | 互联网域名系统北京市工程研究中心有限公司 | Dnssec签名服务的热备方法及系统 |
CN107968845A (zh) * | 2016-10-19 | 2018-04-27 | 中兴通讯股份有限公司 | Dhcp服务器状态的检测方法、装置及dhcp中继 |
CN108737586A (zh) * | 2017-04-20 | 2018-11-02 | 互联网域名系统北京市工程研究中心有限公司 | 一种域名查询服务的灾备切换方法和装置 |
-
2019
- 2019-07-11 CN CN201910625630.0A patent/CN110445641A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101651691A (zh) * | 2009-08-31 | 2010-02-17 | 中兴通讯股份有限公司 | 一种网络系统、接入设备以及应用层服务接入方法 |
CN103227842A (zh) * | 2012-01-31 | 2013-07-31 | 中兴通讯股份有限公司 | 一种获取sip服务器地址的方法和装置 |
CN104683326A (zh) * | 2014-12-30 | 2015-06-03 | 盛科网络(苏州)有限公司 | 恶意耗尽dhcp服务器地址池的防止方法 |
CN106470248A (zh) * | 2015-08-19 | 2017-03-01 | 互联网域名系统北京市工程研究中心有限公司 | Dnssec签名服务的热备方法及系统 |
CN105763278A (zh) * | 2016-01-06 | 2016-07-13 | 杭州华三通信技术有限公司 | 一种时间回溯的方法和装置 |
CN105763668A (zh) * | 2016-02-26 | 2016-07-13 | 杭州华三通信技术有限公司 | 一种域名解析方法和装置 |
CN107968845A (zh) * | 2016-10-19 | 2018-04-27 | 中兴通讯股份有限公司 | Dhcp服务器状态的检测方法、装置及dhcp中继 |
CN108737586A (zh) * | 2017-04-20 | 2018-11-02 | 互联网域名系统北京市工程研究中心有限公司 | 一种域名查询服务的灾备切换方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112671910A (zh) * | 2020-12-25 | 2021-04-16 | 互联网域名系统北京市工程研究中心有限公司 | Dns转发服务器的优化选取方法及存储介质 |
CN112671910B (zh) * | 2020-12-25 | 2023-03-24 | 深圳网基科技有限公司 | Dns转发服务器的优化选取方法及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111262938B (zh) | 一种dns服务器选择方法和代理服务器 | |
CN110855633B (zh) | Ddos攻击的防护方法、装置、系统、通信设备和存储介质 | |
CN107547689B (zh) | 一种运营商级的网络地址转换cgn方法和装置 | |
CN101651691B (zh) | 一种网络系统、接入设备以及应用层服务接入方法 | |
CN109151009B (zh) | 一种基于mec的cdn节点分配方法和系统 | |
CN103856436B (zh) | 用户设备选择网络层协议的方法、家庭网关和互联网网络 | |
CN101026589A (zh) | 一种路由选择的方法和路由器 | |
US8917629B2 (en) | Method and apparatus for detecting devices on a local area network | |
CN103825975A (zh) | Cdn节点分配服务器及系统 | |
CN108040134A (zh) | 一种dns透明代理的方法及装置 | |
GB2516338A (en) | Identification of paths in a network of mixed routing/switching devices | |
EP2466796B1 (en) | User access method, system and access server, access device | |
EP2248328B1 (en) | Bridge port mac address discovery mechanism in ethernet networks | |
CN108809910B (zh) | 一种域名系统服务器调度方法和系统 | |
Alasadi et al. | SSED: Servers under software-defined network architectures to eliminate discovery messages | |
CN110445641A (zh) | Dns代理服务器的主备切换方法及系统 | |
US10680930B2 (en) | Method and apparatus for communication in virtual network | |
CN110601989A (zh) | 一种网络流量均衡方法及装置 | |
CN112134775B (zh) | 一种交换机环路检测方法和装置 | |
CN115720181A (zh) | 裸金属节点的控制方法、系统、电子设备及可读存储介质 | |
CN111954102B (zh) | 一种dhcpv6 pd场景下的路由控制方法与装置 | |
CN111294412B (zh) | 一种针对内容分发网络节点服务器异常的处理方法及装置 | |
CN114745419B (zh) | 获取终端mac地址的方法、装置、设备及存储介质 | |
CN114785465B (zh) | 一种异地多活的实现方法、服务器及存储介质 | |
CN112968915B (zh) | Dns域名服务器攻击的处理方法、处理系统、处理装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191112 |