发明内容
本公开的目的是提供一种域名解析方法、装置及计算机可读存储介质,以简化VPN网关的配置过程。
为了实现上述目的,本公开实施例第一方面提供一种域名解析方法,应用于虚拟专用网络VPN网关,所述VPN网关包括多个租户共用的虚拟本地DNS服务器,所述虚拟本地DNS服务器包括负载均衡器和多个虚拟本地DNS子服务器,每个虚拟本地DNS子服务器为一个租户中的VPN客户端提供本地DNS服务;所述方法包括:
在检测到目标VPN客户端接入所述VPN网关后,所述负载均衡器向所述目标VPN客户端推送所述虚拟本地DNS服务器的地址;
所述负载均衡器监听所述目标VPN客户端向所述虚拟本地DNS服务器发送的域名解析请求,所述域名解析请求包括所述目标VPN客户端的内网IP地址;
所述负载均衡器根据所述目标VPN客户端的内网IP地址所属的内网IP地址段,确定所述目标VPN客户端所属的目标租户;
所述负载均衡器将所述域名解析请求转发到为所述目标租户提供本地DNS服务的目标虚拟本地DNS子服务器;
所述目标虚拟本地DNS子服务器对所述域名解析请求进行域名解析。
本公开实施例第二方面提供一种域名解析装置,应用于虚拟专用网络VPN网关,所述VPN网关包括多个租户共用的虚拟本地DNS服务器,所述虚拟本地DNS服务器包括负载均衡器和多个虚拟本地DNS子服务器,每个虚拟本地DNS子服务器为一个租户中的VPN客户端提供本地DNS服务;所述装置包括:
推送模块,用于在检测到目标VPN客户端接入所述VPN网关后,通过所述负载均衡器向所述目标VPN客户端推送所述虚拟本地DNS服务器的地址;
监听模块,用于通过所述负载均衡器监听所述目标VPN客户端向所述虚拟本地DNS服务器发送的域名解析请求,所述域名解析请求包括所述目标VPN客户端的内网IP地址;
确定模块,用于所述负载均衡器根据所述目标VPN客户端的内网IP地址所属的内网IP地址段,确定所述目标VPN客户端所属的目标租户;
第一转发模块,用于所述负载均衡器将所述域名解析请求转发到为所述目标租户提供本地DNS服务的目标虚拟本地DNS子服务器;
解析模块,用于所述目标虚拟本地DNS子服务器对所述域名解析请求进行域名解析。
本公开实施例第三方面提供一种域名解析生成装置,包括:
至少一个处理器单元、通信接口、存储器和通信总线;所述至少一个处理器单元、所述通信接口和所述存储器通过所述通信总线完成相互间的通信;
所述存储器被配置为存储程序代码;
所述至少一个处理器单元被配置为运行所述程序代码以实现第一方面所述的方法。
本公开实施例第四方面提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序包括用于执行第一方面所述的方法的指令。
采用本公开实施例提供的域名解析方法,至少具有以下技术效果:
(1)VPN网关为其支持的多个租户中的VPN客户端推送同一虚拟本地DNS服务器的地址,配置复杂度较低,且对其支持的多个租户中的VPN客户端仅暴露一个虚拟本地DNS服务器的地址即可,保密性和安全性较高;
(2)VPN网关仅需维护一个虚拟本地DNS服务器,维护成本较低。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
在对本公开实施例提供的域名解析方法进行说明之前,首先对相关技术中的域名解析方法进行说明。相关技术中的VPN网关包括多个租户各自的虚拟本地DNS服务器,参考图1,图1是相关技术中的域名解析方法的示意图。如图1所示,图1以VPN网关包括租户一的虚拟本地DNS服务器和租户二的虚拟本地DNS服务器为例。VPN网关为租户一配置的虚拟本地DNS服务器配置的地址是172.1.1.1,VPN网关为租户二配置的虚拟本地DNS服务器配置的地址是172.2.1.1。
下面以图1为例说明相关技术中的域名解析方法。如图1所示,首先,租户一中的VPN客户端和租户二中的VPN客户端分别接入VPN网关,与VPN网关建立VPN隧道。然后,VPN网关向租户一中的VPN客户端推送其虚拟本地DNS服务器的地址172.1.1.1,VPN网关向租户二中的VPN客户端推送其虚拟本地DNS服务器的地址172.2.1.1。然后,租户一中的VPN客户端和租户二中的VPN客户端分别向各自的虚拟本地DNS服务器发送域名解析请求。最后,租户一和租户二各自的虚拟本地DNS服务器分别对各自收到的域名解析请求进行域名解析。
上述域名解析方法中,要求VPN网关进行复杂的配置,为改进相关技术中的域名解析方法,本公开实施例提出一种域名解析方法,该方法应用于VPN网关,该VPN网关包括多个租户共用的虚拟本地DNS服务器,该虚拟本地DNS服务器包括负载均衡器和多个虚拟本地DNS子服务器,每个虚拟本地DNS子服务器为一个租户中的VPN客户端提供本地DNS服务。
如图2所示,图2是本公开实施例提出的域名解析方法的示意图。如图2所示,VPN网关包括虚拟本地DNS服务器,该虚拟本地DNS服务器包括租户一的虚拟本地DNS子服务器和租户二的虚拟本地DNS子服务器,租户一的虚拟本地DNS子服务器为租户一中的VPN客户端提供本地DNS服务,租户二的虚拟本地DNS子服务器为租户二中的VPN客户端提供本地DNS服务。下面以图2为基础,结合图3对本公开实施例提供的域名解析方法进行说明。
图3是本公开实施例提供的域名解析方法的流程图。如图3所示,该方法包括以下步骤:
步骤S11:在检测到目标VPN客户端接入所述VPN网关后,所述负载均衡器向所述目标VPN客户端推送所述虚拟本地DNS服务器的地址;
步骤S12:所述负载均衡器监听所述目标VPN客户端向所述虚拟本地DNS服务器发送的域名解析请求,所述域名解析请求包括所述目标VPN客户端的内网IP地址;
步骤S13:所述负载均衡器根据所述目标VPN客户端的内网IP地址所属的内网IP地址段,确定所述目标VPN客户端所属的目标租户;
步骤S14:所述负载均衡器将所述域名解析请求转发到为所述目标租户提供本地DNS服务的目标虚拟本地DNS子服务器;
步骤S15:所述目标虚拟本地DNS子服务器对所述域名解析请求进行域名解析。
本公开实施例中,VPN网关仅包括一个虚拟本地DNS服务器,VPN网关支持的多个租户共用该虚拟本地DNS服务器,该虚拟本地DNS服务器中的负载均衡器为该虚拟本地DNS服务器配置一个内网IP地址,例如:10.10.10.10。
在VPN网关支持的不同租户中的VPN客户端接入VPN网关后,负载均衡器向不同租户中的VPN客户端推送同一地址,该地址即为VPN网关中虚拟本地DNS服务器的地址,例如:10.10.10.10。
如图2所示,首先,租户一中的VPN客户端和租户二中的VPN客户端分别接入VPN网关,与VPN网关建立VPN隧道。然后,负载均衡器向租户一中的VPN客户端推送虚拟本地DNS服务器的地址10.10.10.10,且负载均衡器向租户二中的VPN客户端推送的虚拟本地DNS服务器的地址10.10.10.10。
然后,不同租户的VPN客户端向VPN网关中的虚拟本地DNS服务器发出域名解析请求。负载均衡器监听是否有属于某一租户的VPN客户端向该虚拟本地DNS服务器发送的域名解析请求,如果负载均衡器监听到属于某一租户中的VPN客户端向该虚拟本地DNS服务器发送的域名解析请求,则根据该域名解析请求来源于哪一内网IP地址,确定该内网IP地址所属的内网IP地址段,进而确定该域名解析请求是哪一租户中的VPN客户端发送的。
本公开实施例中,同一VPN网关支持的不同租户的内网IP地址段是预先分配的且不重复的,且同一租户在不同VPN网关处分配的内网IP地址段是预先分配的且不重复的,如此,一个租户可以通过VPN网络中的唯一内网IP地址段标识,负载均衡器通过内网IP地址段识别租户,进而将域名解析请求转发到相应的虚拟本地DNS子服务器上,以实现多租户隔离。
其中,虚拟本地DNS子服务器是所有域名解析类型都支持的,例如:针对CNAME类型,租户可以自定义CNAME类型的域名解析请求的域名解析结果;又例如:针对A记录类型,域名解析结果为IPv4地址。本文以A记录类型为例,仅仅是示意,并不对域名解析类型进行限定。
如图2所示,VPN网关与控制器相连,控制器向负载均衡器下发内网IP地址段与租户的对应关系。租户一中的VPN客户端向虚拟本地DNS服务器发送第一域名解析请求(A记录类型,请求解析域名www.xinhua.net对应的IP地址),租户二中的VPN客户端向虚拟本地DNS服务器发送第二域名解析请求(A记录类型,请求解析域名www.xunfei.com对应的IP地址),负载均衡器监听到这两个域名解析请求,由于域名解析请求中包括发送该域名解析请求的VPN客户端的内网IP地址,所以负载均衡器根据监听到的这两个域名解析请求中的内网IP地址,结合内网IP地址段与租户的对应关系,确定发送这两个域名解析请求的VPN客户端分别属于哪一个租户,假设负载均衡器确定第一域名解析请求来源于租户一中的VPN客户端,则将第一域名解析请求发送给租户一的虚拟本地DNS子服务器,假设负载均衡器确定第二域名解析请求来源于租户二中的VPN客户端,则将第二域名解析请求发送给租户二的虚拟本地DNS子服务器。
最后,虚拟本地DNS子服务器对接收到的域名解析请求进行域名解析。如图2所示,租户一的虚拟本地DNS子服务器对第一域名解析请求进行域名解析,租户二的虚拟本地DNS服务器对第二域名解析请求进行域名解析。
采用本公开实施例提供的域名解析方法,至少具有以下技术效果:
(1)VPN网关为其支持的多个租户中的VPN客户端推送同一虚拟本地DNS服务器的地址,配置复杂度较低,且对其支持的多个租户中的VPN客户端仅暴露一个虚拟本地DNS服务器的地址即可,保密性和安全性较高;
(2)VPN网关仅需维护一个虚拟本地DNS服务器,维护成本较低。
在一种实施方式中,所述方法还包括:
所述负载均衡器将所述虚拟本地DNS服务器的地址设置为基于任播的内网IP地址,且所述基于任播的内网地址为其他VPN网关中的虚拟本地DNS服务器的地址;
所述负载均衡器在检测到所述虚拟本地DNS服务器发生故障时,将所述域名解析请求转发给所述其他VPN网关中的虚拟本地DNS服务器。
本公开实施例中,VPN网关向所有租户推送同一虚拟本地DNS服务器的地址,该虚拟本地DNS服务器的地址是基于任播(anycast)的内网IP地址,且为其他VPN网关中的虚拟本地DNS服务器的地址。如此,VPN网络中所有VPN网关中的虚拟本地DNS服务器的地址相同,根据任播的原理,在一个VPN网关中的虚拟本地DNS服务器宕机之后,该VPN网关中的负载均衡器能够将接收到的域名解析请求转发到其他VPN网关中的虚拟本地DNS服务器上,以此实现自动切换和DNS的高可用,增强了本公开实施例提供的域名解析方法的健壮性。
如图4所示,图4是本公开实施例中各个网关之间的连接关系示意图。如图4所示,VPN网关A、VPN网关B、VPN网关C各自中的虚拟本地DNS服务器均为10.10.10.10,如果VPN网关A中的虚拟本地DNS服务器宕机之后,该VPN网关A中的负载均衡器能够将接收到的域名解析请求转发到就近的VPN网关B中的虚拟本地DNS服务器上。
在一种实施方式中,为所述目标租户提供本地DNS服务的虚拟本地DNS子服务器中存储有所述目标租户的解析策略,为不同租户提供本地DNS服务的虚拟本地DNS子服务器中存储有不同的解析策略;
相应地,步骤S15包括:
所述目标虚拟本地DNS子服务器按照所述目标租户的解析策略,对所述域名解析请求进行域名解析。
本公开实施例中,不同的虚拟本地DNS子服务器中存储有不同的解析策略,每个租户可以根据自身的网络访问需求设置解析策略。如图2所示,VPN网关与控制器相连,控制器向每个虚拟本地DNS子服务器下发该虚拟本地DNS子服务器在进行域名解析的过程中需要用到的解析策略。由于不同租户可以设置不同的解析策略,所以不同的虚拟本地DNS子服务器中存储的解析策略不同。每个虚拟本地DNS子服务器在接收到负载均衡器转发的域名解析请求之后,根据该虚拟本地DNS子服务器中存储的解析策略,进行域名解析。即便不同租户请求对相同的域名进行解析,彼此之间也是隔离的,不同的虚拟本地DNS子服务器给出不同的解析结果。
在一种实施方式中,所述目标租户的解析策略为仅允许所述目标VPN客户端访问有限数量个内网域名;所述目标虚拟本地DNS子服务器按照所述目标租户的解析策略,对所述域名解析请求进行域名解析,包括:
在所述域名解析请求中的域名与在所述目标虚拟本地DNS子服务器上注册的域名匹配时,将所述域名解析请求转发到内网权威DNS服务器,并接收所述内网权威DNS服务器返回的域名解析结果。
在实际应用场景中,如果一个租户的网络访问需求是仅允许该租户中的VPN客户端访问有限个内网域名,可以在为该租户提供本地DNS服务器的虚拟本地DNS子服务器中预先注册多个域名,预先注册的多个域名可以是内网域名或者外网域名,无论预先注册的是内网域名还是外网域名,都对应内网DNS的IP地址。在虚拟本地DNS子服务器上存储有预先注册的域名和内网DNS的IP地址的对应关系。每个虚拟本地DNS子服务器在对域名解析请求进行域名解析的过程中,首先会将域名解析请求中的域名与在该虚拟本地DNS子服务器上注册的域名相比较,判断两者是否匹配,如果两者匹配,则将域名解析请求转发到内网权威DNS服务器上,由内网权威DNS服务器对域名解析请求进行域名解析,并返回域名解析结果给该虚拟本地DNS子服务器。
此外,由于虚拟本地DNS子服务器具备缓存功能,如果本地没有解析结果,则会向上一级转发请求,得到结果后缓存在本地,缓存有效时间为TTL(Time To Live),在缓存过期之前,都是由虚拟本地DNS子服务器直接返回给客户端结果,通过这样的缓存设置来提升域名解析的效率。
在另一种实施方式中,所述目标租户的解析策略为允许所述目标VPN客户端访问所有内网域名;所述目标虚拟本地DNS子服务器按照所述目标租户的解析策略,对所述域名解析请求进行域名解析,包括:
将所述域名解析请求默认转发到内网权威DNS服务器,并接收所述内网权威DNS服务器返回的域名解析结果。
在实际应用场景中,如果一个租户的网络访问需求是允许该租户中的VPN客户端访问所有的内网域名,则可以将域名解析请求默认转发到内网权威DNS服务器,由内网权威DNS服务器进行域名解析,然后接收内网权威DNS服务器返回的域名解析结果。
在另一种实施方式中,所述目标租户的解析策略为允许所述目标VPN客户端访问至少一个外网域名;所述目标虚拟本地DNS子服务器按照所述目标租户的解析策略,对所述域名解析请求进行域名解析,包括:
将所述域名解析请求转发到外网公共DNS服务器,并接收所述外网公共DNS服务器返回的域名解析结果。
在实际应用场景中,如果一个租户的网络访问需求是允许该租户中的VPN客户端访问至少一个外网域名,例如:允许该租户中的VPN客户端访问有限数量个外网域名或者全部的外网域名,则可以将域名解析请求默认转发到公共DNS服务器,由公共DNS服务器进行域名解析,然后接收公共DNS服务器返回的域名解析结果。
采用上述域名解析方法,虚拟本地DNS子服务器可以控制VPN客户端所能访问的域名个数以及域名范围,提高了域名解析的可控性和安全性。
本公开实施例还提供一种域名解析装置,应用于虚拟专用网络VPN网关,所述VPN网关包括多个租户共用的虚拟本地DNS服务器,所述虚拟本地DNS服务器包括负载均衡器和多个虚拟本地DNS子服务器,每个虚拟本地DNS子服务器为一个租户中的VPN客户端提供本地DNS服务。如图5所示,本公开实施例提供的域名解析装置400包括:
推送模块401,用于在检测到目标VPN客户端接入所述VPN网关后,通过所述负载均衡器向所述目标VPN客户端推送所述虚拟本地DNS服务器的地址;
监听模块402,用于通过所述负载均衡器监听所述目标VPN客户端向所述虚拟本地DNS服务器发送的域名解析请求,所述域名解析请求包括所述目标VPN客户端的内网IP地址;
确定模块403,用于所述负载均衡器根据所述目标VPN客户端的内网IP地址所属的内网IP地址段,确定所述目标VPN客户端所属的目标租户;
第一转发模块404,用于所述负载均衡器将所述域名解析请求转发到为所述目标租户提供本地DNS服务的目标虚拟本地DNS子服务器;
解析模块405,用于所述目标虚拟本地DNS子服务器对所述域名解析请求进行域名解析。
可选地,所述装置还包括:
设置模块,用于所述负载均衡器将所述虚拟本地DNS服务器的地址设置为基于任播的内网IP地址,且所述基于任播的内网地址为其他VPN网关中的虚拟本地DNS服务器的地址;
第二转发模块,用于通过所述负载均衡器在检测到所述虚拟本地DNS服务器发生故障时,将所述域名解析请求转发给所述其他VPN网关中的虚拟本地DNS服务器。
可选地,为所述目标租户提供本地DNS服务的虚拟本地DNS子服务器中存储有所述目标租户的解析策略,为不同租户提供本地DNS服务的虚拟本地DNS子服务器中存储有不同的解析策略;
所述解析模块包括:
解析子模块,用于通过所述目标虚拟本地DNS子服务器按照所述目标租户的解析策略,对所述域名解析请求进行域名解析。
可选地,所述目标租户的解析策略为仅允许所述目标VPN客户端访问有限数量个内网域名;所述解析子模块用于:
在所述域名解析请求中的域名与在所述目标虚拟本地DNS子服务器上注册的域名匹配时,将所述域名解析请求转发到内网权威DNS服务器,并接收所述内网权威DNS服务器返回的域名解析结果。
可选地,所述目标租户的解析策略为允许所述目标VPN客户端访问所有内网域名;所述解析子模块用于:
将所述域名解析请求默认转发到内网权威DNS服务器,并接收所述内网权威DNS服务器返回的域名解析结果。
可选地,所述目标租户的解析策略为允许所述目标VPN客户端访问至少一个外网域名;所述解析子模块用于:
将所述域名解析请求转发到外网公共DNS服务器,并接收所述外网公共DNS服务器返回的域名解析结果。
所属本领域的技术人员应该清楚地了解到,为描述的方便和简洁,上述描述的域名解析装置的各单元的具体工作过程,可以参考前述方法实施例中对应的过程,此处不再赘述。
另外,上述对域名解析装置组成模块进行的划分,仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。并且,各个模块的物理实现也可以有多种方式,本公开对此不做限定。
本公开实施例还提供一种域名解析装置100,如图6所示,该域名解析装置100包括:
至少一个处理器单元(如图6示出的处理器单元101)、通信接口102、存储器103和通信总线104;所述至少一个处理器单元、所述通信接口102和所述存储器103通过所述通信总线104完成相互间的通信;
所述存储器103被配置为存储程序代码,所述至少一个处理器单元被配置为运行所述程序代码以实现图1所示的域名解析方法,具体参照上述方法实施例针对图1的描述。
本公开实施例还提供了一种包括指令的非临时性计算机可读存储介质,例如上述存储器103,上述指令可由装置100的处理器执行以完成用于相应的域名解析的方法。例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。