一种选择本地缓存DNS的方法及装置
技术领域
本发明涉及互联网技术领域,尤其涉及一种选择本地缓存DNS的方法 及装置。
背景技术
现有互联网服务体系,为了提升客户端的访问质量,一般会使用智能调 度技术将用户的访问引导至离用户最近的节点进行服务。即定位客户端所在 网络区域,选取服务客户端所在网络区域最近、最优的节点,进行网络访问 服务。其中准确判断客户端IP的网络区域是个核心问题。
目前实现智能调度的常见方式为通过DNS分区域解析功能,实现智能 调度功能。
如图1所示,
1、客户端向本地缓存DNS请求访问域名对应的IP。
2、本地缓存DNS(8.8.8.8)查询本地缓存如果没有缓存内容,将向CDN 智能调度***的DNS权威服务器,请求访问域名的IP。
3、CDN智能调度***的DNS权威服务器获取本地缓存DNS的递归出 口IP(IP2),匹配本地的IP库确定此IP的网络区域,并根据此网络区域进 行智能调度选取服务最佳的IP进行服务。
图1中权威服务器只能获取IP2、IP3和IP4的信息,并根据IP2做智能 解析。
由于以上方案是用DNS的递归出口IP代替客户端进行网络区域定位, 所以一旦客户端IP和DNS递归出口IP不在同一个网络区域,会导致定位不 准确,为了解决这个问题,本地缓存DNS实现了DNS扩展协议功能,即允 许域名解析设备传递用户的ip地址给权威DNS服务器的功能,称为edns-client-subnet功能,使本地缓存DNS可以携带客户端的IP传递给CDN 智能调度***的DNS权威服务器,DNS的权威服务器可根据本地缓存DNS 携带的客户端IP进行网络区域的定位,并根据客户端IP进行智能调度选取 服务最佳的IP进行服务。
如图2所示,
1、客户端向本地缓存DNS请求访问域名对应的IP
2、本地缓存DNS(8.8.8.8)查询本地缓存如果没有缓存内容,将向CDN 智能调度***的DNS权威服务器,请求访问域名的IP。请求包携带来访问 的客户端IP(IP1)。
3、CDN智能调度***的DNS权威服务器获取本地缓存DNS携带来的 客户端IP(IP1),匹配本地的IP库确定此IP的网络区域,并根据此网络区 域进行智能调度选取服务最佳的IP进行服务。
在实际实现中,公共DNS或者运营商DNS(本地缓存DNS的两种类型) 为了隐藏真实客户端的IP和降低本地缓存DNS的解析压力,在携带客户端 IP时,会将客户端IP按照一定的掩码位,掩成CIDR发送给DNS权威服务 器,此时当CIDR中的主机IP和客户端IP不在统一区域时,会导致网络区 域定位不准确,影响智能调度的精准度。此专利通过合理评估客户端IP和 CIDR中主机IP的网络区域关系,判定具备edns-client-subnet功能的本地缓 存DNS是否会导致定位不准确,确定客户端IP是否可以使用指定的本地缓 存DNS服务器,解决定位不准确的问题
CIDR:无类别域间路由,在此指子网掩码的位格式,例如192.168.0.0/24、192.168.1.8/32等等
掩码位:子网掩码的位数,例如上述例中的24和32
举例说明,如果客户端IP是192.168.1.8,本地缓存DNS按照掩码位为 24,得出CIDR:192.168.1.0/24,CDN智能调度***的DNS权威服务器获 取192.168.1.0/24,并使用192.168.1.0进行客户端的网络区域定位,一旦发 生客户端IP192.168.1.8和CIDR的主机IP192.168.1.0网络区域不同时,会导 致定位异常。所以需要保障客户端IP和CIDR的主机IP网络区域一致情况 下,才能使用此本地缓存DNS服务。
现有技术中,客户端选取具备edns-client-subnet功能的本地缓存DNS时, 不考虑客户端IP和CIDR的主机IP网络区域一致性,导致智能调度***对 客户端IP网络区域的判定不准确,影响最终服务质量。
发明内容
为了解决上述技术问题,本发明提供了一种选择本地缓存DNS的方法 及装置。
本发明提供了一种选择本地缓存DNS的方法,包括:
确定本地缓存DNS IP和网络区域的组合对下用于DNS扩展协议功能的 掩码位;
获取客户端IP在不同的本地缓存DNS IP和网络区域的组合对的掩码位 使用情况下所对应的CIDR主机IP;
确定客户端IP和各CIDR主机IP同属的网络区域,从该网络区域中选 择本地缓存DNS。
进一步地,上述方法还具有以下特点:
从该网络区域中选择本地缓存DNS包括:在网络区域内有多个可用本 地缓存DNS服务器时,获取该网络区域中的各本地缓存DNS IP,选择相应 的掩码位中最大的掩码位所对应的本地缓存DNS IP。
进一步地,上述方法还具有以下特点:
确定本地缓存DNS IP和网络区域的组合对下用于DNS扩展协议功能的 掩码位包括:
确定用于DNS扩展协议功能的本地缓存DNS IP列表;
为本地缓存DNS IP列表中每个本地缓存DNS IP设置唯一的测试域名, 使用测试域名向相应的本地缓存DNS IP发送解析请求,获取测试域名的日 志,从日志中获取本地缓存DNS IP和网络区域的组合对下用于DNS扩展协 议功能的掩码位。
进一步地,上述方法还具有以下特点:
确定本地缓存DNS IP和网络区域的组合对下用于DNS扩展协议功能的 掩码位包括:
确定用于DNS扩展协议功能的本地缓存DNS IP列表;
为本地缓存DNS IP列表中每个本地缓存DNS IP设置唯一的测试域名, 使用测试域名向相应的本地缓存DNS IP发送解析请求,抓取测试域名的解 析请求和应答报文,从报文的optsubnet字段提取掩码位。
进一步地,上述方法还具有以下特点:
获取客户端IP在不同的本地缓存DNS IP和网络区域的组合对的掩码位 使用情况下所对应的CIDR主机IP包括:
将客户端IP根据本地缓存DNS IP和网络区域的组合对下的掩码位生成 CIDR格式,从CIDR格式中提取CIDR主机IP。
进一步地,上述方法还具有以下特点:
确定客户端IP和各CIDR主机IP同属的网络区域时,根据调度***IP 库获知客户端IP所属的网络区域,并且根据调度***IP库获知CIDR主机 IP所属的网络区域,在客户端IP和CIDR主机IP所属的网络区域相同时, 将此网络区域作为客户端IP和各CIDR主机IP同属的网络区域。
本发明还提供了一种选择本地缓存DNS的装置,包括:
掩码位确定模块,用于确定本地缓存DNS IP和网络区域的组合对下用 于DNS扩展协议功能的掩码位;
CIDR主机IP确定模块,获取客户端IP在不同的本地缓存DNS IP和网 络区域的组合对的掩码位使用情况下所对应的CIDR主机IP;
网络区域确定模块,用于确定客户端IP和各CIDR主机IP同属的网络 区域;
选择模块,用于从网络区域确定模块选出的网络区域中选择本地缓存 DNS。
进一步地,上述装置还具有以下特点:
选择模块,用于在网络区域内有多个可用本地缓存DNS服务器时,获 取该网络区域中的各本地缓存DNS IP,选择相应的掩码位中最大的掩码位所 对应的本地缓存DNS IP。
进一步地,上述装置还具有以下特点:
掩码位确定模块,用于使用以下方法确定本地缓存DNS IP和网络区域的 组合对下用于DNS扩展协议功能的掩码位:
确定用于DNS扩展协议功能的本地缓存DNS IP列表;
为本地缓存DNS IP列表中每个本地缓存DNS IP设置唯一的测试域名, 使用测试域名向相应的本地缓存DNS IP发送解析请求,获取测试域名的日 志,从日志中获取本地缓存DNS IP和网络区域的组合对下用于DNS扩展协 议功能的掩码位。
进一步地,上述装置还具有以下特点:
掩码位确定模块,用于使用以下方法确定本地缓存DNS IP和网络区域的 组合对下用于DNS扩展协议功能的掩码位:确定用于DNS扩展协议功能的 本地缓存DNS IP列表,为本地缓存DNS IP列表中每个本地缓存DNS IP设 置唯一的测试域名,使用测试域名向相应的本地缓存DNS IP发送解析请求, 抓取测试域名的解析请求和应答报文,从报文的optsubnet字段提取掩码位。
进一步地,上述装置还具有以下特点:
CIDR主机IP确定模块,用于使用以下方法获取客户端IP在不同的本地 缓存DNSIP和网络区域的组合对的掩码位使用情况下所对应的CIDR主机 IP:将客户端IP根据本地缓存DNS IP和网络区域的组合对下的掩码位生 成CIDR格式,从CIDR格式中提取CIDR主机IP。
进一步地,上述装置还具有以下特点:
网络区域确定模块,用于使用以下方法用于确定客户端IP和各CIDR主 机IP同属的网络区域:根据调度***IP库获知客户端IP所属的网络区域, 并且根据调度***IP库获知CIDR主机IP所属的网络区域,在客户端IP和 CIDR主机IP所属的网络区域相同时,将此网络区域作为客户端IP和各CIDR 主机IP同属的网络区域。
在使用具备DNS扩展协议功能的本地缓存DNS时,参考客户端IP和 CIDR的主机IP网络区域一致性,保障具备DNS扩展协议功能的本地缓存 DNS能够准确传递客户端IP的网络区域信息。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的 示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在 附图中:
图1是现有技术中DNS分区域解析功能的示意图;
图2是现有技术中另一种DNS分区域解析功能的示意图;
图3是实施例中选择本地缓存DNS的方法的流程图;
图4是实施例中选择本地缓存DNS的装置的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发 明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述, 显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获 得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突 的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图3是实施例中选择本地缓存DNS的方法的流程图;此方法包括:
步骤1,确定本地缓存DNS IP和网络区域的组合对下用于DNS扩展 协议功能的掩码位;
步骤2,获取客户端IP在不同的本地缓存DNS IP和网络区域的组合对 的掩码位使用情况下所对应的CIDR主机IP;
步骤3,确定客户端IP和各CIDR主机IP同属的网络区域,从该网络区 域中选择本地缓存DNS。
通过此方法,可以在客户端IP和各CIDR主机IP同属的网络区域中选 择本地缓存DNS,在使用具备DNS扩展协议功能的本地缓存DNS时,参考 客户端IP和CIDR的主机IP网络区域一致性,保障具备DNS扩展协议功能 的本地缓存DNS能够准确传递客户端IP的网络区域信息。
其中,
步骤1中,DNS扩展协议功能是指允许域名解析设备传递用户的ip地 址给权威DNS服务器的功能,称为edns-client-subnet功能。
步骤1中,确定本地缓存DNS IP和网络区域的组合对下用于 edns-client-subnet功能的掩码位包括以下两种方式:
方式一:
步骤101,确定用于edns-client-subnet功能的本地缓存DNS IP列表。
例如:
本地缓存DNS IP列表包括:1.1.1.1、2.2.2.2。
步骤102,为本地缓存DNS IP列表中每个本地缓存DNS IP设置唯一的 测试域名,使用测试域名向相应的本地缓存DNS IP发送解析请求,获取测 试域名的日志,从日志中获取本地缓存DNS IP和网络区域的组合对下用于 edns-client-subnet功能的掩码位。具体的,每个网络区域设置有一个探测服 务器,探测服务器中设置有探测程序和本地缓存DNSIP列表。启动探测程 序后,探测服务器为本地缓存DNS IP列表中每个IP构建一测试域名(构建 测试域名时,每个测试域名可以为DNS IP加上固定域名,确保每个域名唯 一对应的一个本地缓存DNS),每隔一时间周期向本地缓存DNS IP列表中 各IP发送解析域名为预先构建的测试域名。
例如:为上述示例中的本地缓存DNS IP列表中1.1.1.1设置的探测域名 为1.1.1.1.test.com,为上述示例中的本地缓存DNS IP列表中2.2.2.2设置的 探测域名为2.2.2.2.test.com。每隔一时间周期向1.1.1.1发送探测域名为 1.1.1.1.test.com的探测请求,向2.2.2.2发送探测域名为2.2.2.2.test.com的探 测请求。
从日志中获取CIDR字段的内容如下:
表1
探测域名 |
网络区域 |
CIDR字段 |
1.1.1.1.test.com |
联通北京 |
192.168.1.1/32 |
1.1.1.1.test.com |
电信上海 |
192.168.1.0/24 |
2.2.2.2.test.com |
联通北京 |
192.168.0.0/16 |
2.2.2.2.test.com |
电信上海 |
192.168.2.0/24 |
最终获得本地缓存DNS IP和网络区域的组合对下用于edns-client-subnet 功能的掩码位如下:
表2
本地缓存DNS IP |
网络区域 |
掩码位 |
1.1.1.1 |
联通北京 |
32 |
1.1.1.1 |
电信上海 |
24 |
2.2.2.2 |
联通北京 |
16 |
2.2.2.2 |
电信上海 |
24 |
方式二:
确定用于DNS扩展协议功能的本地缓存DNS IP列表;为本地缓存DNS IP列表中每个本地缓存DNS IP设置唯一的测试域名,使用测试域名向相应 的本地缓存DNS IP发送解析请求,抓取测试域名的解析请求和应答报文, 从报文的optsubnet字段提取掩码位。
步骤2中获取客户端IP在不同的本地缓存DNS IP和网络区域的组合对 的掩码位使用情况下所对应的CIDR主机IP包括:将客户端IP根据本地缓 存DNS IP和网络区域的组合对下的掩码位生成CIDR格式,从CIDR格式 中提取CIDR主机IP。
例如:
联通北京网民IP为172.16.1.1,电信上海网民IP为172.16.2.1。客户端 IP为172.16.1.1,掩码位映射表如表2所示。
表3
步骤3中,确定客户端IP和各CIDR主机IP同属的网络区域时,根据调 度***IP库获知客户端IP所属的网络区域,并且根据调度***IP库获知 CIDR主机IP所属的网络区域,在客户端IP和CIDR主机IP所属的网络区 域相同时,将此网络区域作为客户端IP和各CIDR主机IP同属的网络区域。
例如:
调度***IP库中CIDR主机IP相应的网络区域为:
表4
CIDR主机IP |
网络区域 |
172.16.1.1 |
联通北京 |
172.16.2.1 |
上海电信 |
172.16.2.0 |
上海电信 |
172.16.0.0 |
美国 |
客户端IP和CIDR主机IP的网络区域一致则说明本地缓存DNS在网络 区域内,可以为客户端IP提供服务;如果不一致则说明不能为客户端IP提 供服务。
获取客户端IP的网络区域后,获得表5:
获取CIDR主机IP的网络区域后,获得表6:
从表6可知,联通北京网民1.1.1.1相同可用,2.2.2.2不相同不可用,所 以联通北京网民172.16.1.1可使用1.1.1.1。电信上海网民在1.1.1.1和2.2.2.2 均相同,所以电信上海网民172.16.2.1可使用1.1.1.1和2.2.2.2。
从该网络区域中选择本地缓存DNS包括:获取该网络区域中的各本地 缓存DNSIP,选择相应的掩码位中最大的掩码位所对应的本地缓存DNS IP。 如果该网络区域中的各本地缓存DNS IP对应的掩码位均相同时,随机选择 一本地缓存DNS IP。例如针对电信上海此网络区域中,掩码位均相同,则可 以任意选择一本地缓存DNS IP。
图4是实施例中选择本地缓存DNS的装置的结构图,此装置包括:
掩码位确定模块,用于确定本地缓存DNS IP和网络区域的组合对下用 于DNS扩展协议功能的掩码位;
CIDR主机IP确定模块,获取客户端IP在不同的本地缓存DNS IP和网 络区域的组合对的掩码位使用情况下所对应的CIDR主机IP;
网络区域确定模块,用于确定客户端IP和各CIDR主机IP同属的网络 区域;
选择模块,用于从网络区域确定模块选出的网络区域中选择本地缓存 DNS。
其中,
选择模块用于在网络区域内有多个可用本地缓存DNS服务器时,获取 该网络区域中的各本地缓存DNS IP,选择相应的掩码位中最大的掩码位所对 应的本地缓存DNS IP。
掩码位确定模块用于使用以下方法一或方法二确定本地缓存DNS IP和网 络区域的组合对下用于DNS扩展协议功能的掩码位:
方法一,确定用于DNS扩展协议功能的本地缓存DNS IP列表;为本地 缓存DNS IP列表中每个本地缓存DNS IP设置唯一的测试域名,使用测试域 名向相应的本地缓存DNSIP发送解析请求,获取测试域名的日志,从日志 中获取本地缓存DNS IP和网络区域的组合对下用于DNS扩展协议功能的掩 码位。
方法二,确定用于DNS扩展协议功能的本地缓存DNS IP列表,为本地 缓存DNS IP列表中每个本地缓存DNS IP设置唯一的测试域名,使用测试域 名向相应的本地缓存DNSIP发送解析请求,抓取测试域名的解析请求和应 答报文,从报文的optsubnet字段提取掩码位。
CIDR主机IP确定模块用于使用以下方法获取客户端IP在不同的本地缓 存DNS IP和网络区域的组合对的掩码位使用情况下所对应的CIDR主机IP: 将客户端IP根据本地缓存DNS IP和网络区域的组合对下的掩码位生成 CIDR格式,从CIDR格式中提取CIDR主机IP。
网络区域确定模块用于使用以下方法用于确定客户端IP和各CIDR主机 IP同属的网络区域:根据调度***IP库获知客户端IP所属的网络区域,并 且根据调度***IP库获知CIDR主机IP所属的网络区域,在客户端IP和 CIDR主机IP所属的网络区域相同时,将此网络区域作为客户端IP和各CIDR 主机IP同属的网络区域。
上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型 方式都在本发明的保护范围之内。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程 序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只 读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使 用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采 用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于 任何特定形式的硬件和软件的结合。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意 在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括 那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品 或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定 的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要 素。
以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施 例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发 明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范 围,均应涵盖在本发明的权利要求范围当中。