用于虚拟网络的共享多租户域名系统(DNS)服务器的制作方法

文档序号:15106036发布日期:2018-08-04 16:54阅读:581来源:国知局

域名系统(DNS)是用于连接到诸如因特网等网络的资源的分层分布式命名系统。域名系统将数字IP地址与网络实体的域名进行关联。DNS服务器将域名(其可以很容易被人记住和使用)转换为数字IP地址。DNS服务器还可以存储和提供执行不同功能的其他记录类型,诸如规范名称(CNAME)、自由格式文本(TXT)、邮件交换器记录(MX记录)、指针记录(诸如PTR记录)。

域名系统维护域名层级并且提供在域名层级与网际协议(IP)地址空间之间的转换服务。互联网名称服务器和通信协议实施域名系统。DNS名称服务器是存储域名的DNS记录、接收DNS请求并且使用回答来对针对其数据库的查询进行响应的服务器。

除了它负责的域名之外,DNS服务器通常对已经从其他DNS名称服务器接收的DNS请求和响应进行高速缓存。高速缓存名称服务器(DNS高速缓存)将查询结果存储在域名记录的关联的生存时间中所确定的一段时间。DNS高速缓存通过减少互联网上的DNS业务并且通过减少权威名称服务器、特别是根名称服务器的负载来提高DNS的效率。由于它们可以更快地回答问题,因此它们还可以提高使用DNS的终端用户应用的性能。



技术实现要素:

实施例涉及一种可以由云计算环境中的多个虚拟网络共享的DNS服务器。

在DNS代理将来自虚拟网络的标识符转发给共享DNS服务器之前,DNS代理可以利用诸如虚拟网络ID等标识符来标记DNS请求。这可以允许每个虚拟网络具有自己的名称空间并且避免命名冲突。

共享DNS服务器可以检查标记的DNS请求,以使用由虚拟网络ID标识的本地名称空间来对DNS请求进行响应。

提供本“发明内容”是为了以简化的形式介绍将在以下“具体实施方式”中进一步描述的一些概念。本“发明内容”并非旨在确定所要求保护的主题的关键特征或基本特征,也并非旨在用于限制所要求保护的主题的范围。

附图说明

通过结合附图以示例方式给出的以下描述可以获取更详细的理解,其中:

图1是示出示例性计算系统的网络图。

图2示出了可以实施所公开的实施例的示例性非限制性服务器或计算机。

图3示出了一个实施例的系统。

图4示出了可以在DNS代理处执行的方法。

图5和图6示出了在DNS服务器处执行的方法。

具体实施方式

实施例涉及用于为多租户网络提供共享域名解析服务的系统和方法。

云服务提供商(CSP)是向其他企业或个人提供云计算的一些组件的公司,这些组件诸如基础设施即服务(IaaS)、软件即服务(SaaS)或平台即服务(PaaS)等。云服务提供商通常旨在支持租户的私有网络加载到他们需要保持这些网络的寻址和命名属性不变的环境中,同时在租户之间提供适当的网络隔离。网络虚拟化技术允许租户在托管云中引入他们自己的IP地址或IP地址空间。实施例可以解决为客户可以引入他们自己的域名的虚拟网络提供名称解析服务的问题。该系统还可以通过防止在虚拟网络外部看到私人域来确保隐私。

实施例为共享DNS服务器定义能力和接口以迎合不同的虚拟网络,其中该共享DNS服务器由托管分离的域名数据库的不同的虚拟化实例组成。实施例还定义DNS代理,其侦听虚拟网络;标识租户元数据并且将其添加到由DNS服务器接收的DNS分组中(以EDNS0选项的形式),该DNS服务器处理元数据以标识虚拟化实例。

优点可以包括:

1.允许托管云的租户携带自己的域名的能力。

2.使用共享权威DNS服务器的能力,共享权威DNS服务器向租户的名称解析服务提供具有适当租户隔离的交叠域名空间。

3.无论提供商使用的虚拟化技术如何都提供上述服务的能力。

4.租户域名数据库与查询和管理角度的隔离。

图1是示出示例性计算系统100的网络图。在一个实施例中,图1所示的计算系统100仅仅是示例性的,并不意图对范围或功能提出任何限制。本发明的实施例可以用很多其他配置来操作。参考图1,计算系统100包括云计算平台110、云应用120和客户端设备130。

云计算平台110被配置为执行由客户端设备130所请求的云应用120。云计算平台110维护提供执行云应用120的虚拟机的计算设备。云计算平台还包括存储应用和系统信息的存储资源。云计算平台110经由通信网络(诸如无线网络、局域网、有线网络或因特网)连接到客户端设备130。

云应用120可用于客户端设备130。云计算平台110上所执行的软件实施云应用120。在一个实施例中,由云计算平台110提供的虚拟机执行云应用120。云应用120可以包括但不限于编辑应用、网络管理应用、财务应用、或者由客户端设备130请求或开发的任何应用。在某些实施例中,云应用120的一些功能可以在客户端设备130上执行。

客户端设备130由用户使用以与由云计算平台110提供的云应用120进行交互。在一些实施例中,客户端设备130必须向云计算平台110注册以访问云应用120。具有来自云计算平台110的账户的任何客户端设备130可以访问云应用120和在云计算平台110中所提供的其他资源。客户端设备130包括但不限于个人数字助理、智能电话、膝上型电脑、个人电脑、游戏系统、机顶盒或任何其他合适的客户端计算设备。客户端设备130包括用户和系统信息存储装置,其用于将用户和系统信息存储在客户端设备130上。用户信息可以包括搜索历史、cookie和密码。系统信息可以包括互联网协议地址、高速缓存的网页和系统利用率。客户端设备130与云计算平台110进行通信以接收来自云应用120的结果。

因此,计算系统100配置有云计算平台110,其向客户端设备130提供云应用120。云应用120消除了更新和管理客户端设备130上的多个本地客户端应用的负担。云应用120还可以处理客户端设备130可能不需要设置的必要的规模、安全性和可用性问题。

示例性云计算平台是Microsoft Azure。Microsoft Azure使用专门的操作系统(也称为Microsoft Azure)来运行其“结构层”:托管在Microsoft数据中心的集群,其管理计算机的计算资源和存储资源,并且将向在Microsoft Azure之上运行的应用提供资源(或其子集)。

云计算系统可以使用位于客户端数据中心处的云计算设备和软件,诸如使用Microsoft Azure Stack。将云计算技术移植到公司数据中心可以为应用所有者提供灵活性和生产力,为信息技术(IT)部门提供灵活性和控制力,并且确保公司资产得到保护。

图2示出了可以实施所公开的实施例的示例性非限制性服务器或计算机202。这样的服务器或计算机可以用来实施云计算、DNS代理和DNS服务器。

在图2中,计算环境220包括计算机241,计算机241通常包括各种计算机可读介质。计算机可读介质可以是可以由计算机241访问的任何可用介质,并且包括易失性和非易失性介质可移除和不可移除介质。系统存储器222包括以下形式的计算机存储介质,诸如只读存储器(ROM)223和随机存取存储器(RAM)260等易失性和/或非易失性存储器。基本输入/输出系统224(BIOS)(包含诸如在启动期间帮助在计算机241内的元件之间传输信息的基本例程)通常存储在ROM 223中。RAM 260通常包含由处理单元259立即可访问和/或目前正在由处理单元259操作的数据和/或程序模块。作为示例而非限制,图2示出了操作系统225、应用程序226、其他程序模块227和程序数据228。

计算机241还可以包括其他可移除/不可移除易失性/非易失性计算机存储介质。仅作为示例,图2示出了从不可移除非易失性磁介质读取或向其写入的硬盘驱动器238、从可移除非易失性磁盘254读取或向其写入的磁盘驱动器239、以及从诸如CD ROM或其他光学介质等可移除非易失性光盘253读取或向其写入的光学磁盘驱动器240。可以在示例性操作环境中使用的其他可移除/不可移除易失性/非易失性计算机存储介质包括但不限于磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器238通常通过诸如接口234等不可移除存储器接口连接到系统总线221,并且磁盘驱动器239和光盘驱动器240通常通过诸如接口235等可移除存储器接口连接到系统总线221。

上面讨论的驱动器及其相关联的计算机存储介质为计算机241提供计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图2中,硬盘驱动器238被示出为存储操作系统258、应用程序257、其他程序模块256和程序数据255。注意,这些组件可以与操作系统225、应用程序226、其他程序模块227和程序数据228相同或不同。操作系统258、应用程序257、其他程序模块256和程序数据255在本文中被赋予不同的数字以说明至少它们是不同的副本。用户可以通过诸如键盘251和定点设备252等输入设备向计算机241中输入命令和信息,输入设备例如可以采用鼠标、轨迹球或触摸板的形式。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏手柄、卫星天线、扫描仪等。这些和其他输入设备通常通过耦合到系统总线221的用户输入接口236连接到处理单元259,但是可以通过其他接口和总线结构(诸如并行端口、游戏端口或通用串行总线(USB))来连接。显示器242或其他类型的显示设备也经由诸如视频接口232等接口连接到系统总线221,接口可以结合图形接口231、图形处理单元(GPU)229和/或视频存储器229进行操作。除了显示器之外,计算机还可以包括可以通过输出外围接口233连接的其他外围输出设备,诸如扬声器244和打印机243。

计算机241可以使用到一个或多个远程计算机(诸如远程计算机246)的逻辑连接在网络环境中操作。远程计算机246可以是个人计算机、服务器、路由器、网络PC、对等设备或其他公共网络节点,并且通常包括上面关于计算机241所描述的很多或全部元件,然而在图2中仅示出了存储器存储设备247。图2中描绘的逻辑连接包括局域网(LAN)245和广域网(WAN)249,但是也可以包括其他网络。这样的网络环境在办公室、企业范围的计算机网络、内联网和互联网中很常见。

当在LAN网络环境中使用时,计算机241通过网络接口或适配器237连接到LAN 245。当在WAN网络环境中使用时,计算机241通常包括调制解调器250或用于通过诸如互联网等WAN 249建立通信的其他装置。可以位于内部或外部的调制解调器250可以经由用户输入接口236或其他适当的机制连接到系统总线221。在网络环境中,相对于计算机241或其部分描绘的程序模块可以存储在远程存储器存储设备中。作为示例而非限制,图2将远程应用程序248示出为驻留在存储器设备247上。应当理解,所示出的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他手段。

虚拟网络是至少部分由虚拟网络链路组成的计算机网络。虚拟网络链路是以下类型的链路,该链路不包含两个计算设备之间的物理(有线或无线)连接,而是使用网络虚拟化方法来实施。

多租户架构可以使用多个虚拟网络。如下所述,每个虚拟网络可能需要DNS服务器。

一种解决方案是针对每个租户(虚拟网络)在其网络中部署一个虚拟机(VM)作为DNS服务器,在该DNS服务器中它管理和托管所需要的域。租户虚拟机指向这个DNS服务器以进行名称解析。这个DNS服务器可以同时作为权威服务器以及用于外部查询的转发器/递归解析器。这个解决方案不是最佳的,因为它需要每个租户有专门用于DNS的一个专用VM,并且将管理开销放置在客户端上。这个解决方案也不提供容错,例如,如果VM死机。

另一解决方案是针对每个租户虚拟网络使用受限的名称空间。在这个解决方案中,客户端无法将自己的域名带入云中。他们被迫保留一些特定的DNS后缀(比如按以下格式:<VM-Name>.<Tenant-ID>.myclouddomain.com)。在这个解决方案中,DNS解析正常工作,但是必须在查询路径上创建额外的访问控制列表(ACL),以确保一个租户无法解析另一租户的名称。

这些解决方案可能成本效益较低或者可能限制系统的能力或功能。以下描述允许租户使用单个DNS服务器来完全隔离地为多个客户端提供服务并且允许客户将自己的域名带入云中的解决方案。这支持了租户域去往/来自私有公共云的无缝迁移。

在一个实施例中,如图3所示,多租户DNS解决方案可以具有两个主要组件:(多租户)DNS代理302和(多租户)DNS服务器304。

DNS代理302可以包括计算机或服务器,其具有一个或多个存储设备302a和与一个或多个存储设备302a通信的一个或多个处理器302b。一个或多个处理器302b可以被配置为执行如下所述操作。

DNS代理302可以被认为是用于转发DNS业务的网关。它可以监听从租户网络发出的DNS分组,并且将查询转发到物理网络上的DNS服务器304。除了转发之外,多租户代理还可以将由因特网标准跟踪协议RFC 2671(DNS的扩展机制(EDNS0))定义的EDNS0选项ID添加到传出DNS分组中。该选项ID可以包含分离标识符,诸如虚拟网络ID(VNET标识符)。该标识符由DNS服务器304使用以确保隔离。在返回路径上,代理可以清理EDNS0选项并且将分组路由回租户VM。

图4示出了可以在DNS代理302处进行的方法。

在步骤402中,从虚拟网络接收域名系统(DNS)请求。DNS代理302可以在DNS请求被发送到共享DNS服务器304时拦截该DNS请求。

在步骤404中,利用分离标识符来标记DNS请求。分离标识符可以是分离任何两方的任何标识符,例如,它可能是每个公司的、每个人的、每个应用的、每个任何其他东西的。分离标识符可以是虚拟网络ID。

在一个示例中,诸如虚拟网络ID等分离标识符被放置在选项字段中。例如,分离标识符可以放置于EDNS0选项字段中。或者,分离标识符可以以某种其他方式附加到DNS请求。

在步骤406中,DNS请求被转发至共享DNS服务器304,其存储包括虚拟网络在内的多个虚拟网络的DNS数据。

再次参考图3,DNS代理302从诸如虚拟网络306等虚拟网络接收DNS请求。DNS代理302将分离标识符(诸如虚拟网络306的虚拟网络ID)标记至DNS请求。DNS代理302将DNS请求转发至共享DNS服务器,其存储包括虚拟网络在内的多个虚拟网络的DNS数据。

DNS代理302还可以被配置为从共享DNS服务器304接收对DNS请求的DNS响应。也可以利用分离标识符(诸如虚拟网络ID)来标记DNS响应。这个DNS响应然后可以被转发到由诸如虚拟网络ID等分离标识符指示的正确的虚拟网络。在另一实施例中,应答的路由不需要使用诸如虚拟网络ID等分离标识符来实施。

DNS代理302可以检查一个位置处的所有DNS请求和DNS响应。在图3中,管理程序(hypervisor)310可以包括DNS代理302。在一个实施例中,每个物理设备(计算机或服务器)具有管理程序310和相关联的DNS代理302。在诸如图2所示的计算机或服务器202等物理设备处的处理器和存储设备可以被认为实施DNS代理302的功能。

DNS服务器304可以包括共享DNS服务器,其为多个虚拟网络提供服务。共享DNS服务器可以利用针对每个关联的虚拟网络的独立操作来配置和维护。DNS服务器304可以包括彼此通信的一个或多个存储设备304a(存储器)和一个或多个处理器304b。

DNS服务器302可以是能够提供以下各项的DNS服务器:

1.对“自带域名”场景的支持,以允许由多个租户来配置DNS区域。DNS区域可以是以下域名系统(DNS)中的域名空间的任何连续部分:该DNS的管理职责已经委托给单个管理员。

2.为客户托管域名执行名称解析的能力,同时在名称解析期间提供租户隔离。

3.对DNS区域的管理界面和持久性存储的隔离。应用编程接口(API)可以被提供以在DNS服务器上创建虚拟实例。虚拟实例可以具有包含DNS记录的DNS区域。这些API可以被隔离,使得其他用户不能访问它们。API可以向可以底层系统发送信息,该底层系统执行对DNS服务器302的远程过程调用(RPC)。

4.对服务器设置(转发器、有条件的转发器等)的隔离。针对DNS服务器302处的每个虚拟网络的配置设置可以是独立的。

5.执行租户特定的动态DNS(DDNS)更新的能力。

6.对DNS区域传输的隔离。DNS区域传输允许两个DNS服务器进行同步。区域传输请求可以包括虚拟网络ID的标签以允许正确的本地名称空间信息被同步。

7.对租户域内的业务管理的支持。

8.执行公共名称解析的能力。

DNS服务器可以由具有租户特定数据和设置的多个虚拟化实例组成,每个虚拟化实例被映射到虚拟网络。使用传入查询中的虚拟网络ID,DNS服务器可以执行名称解析任务。DNS服务器也可以能够执行公共名称解析。

图5示出了可以在DNS服务器304处执行的方法。

在步骤502中,接收由代理利用诸如虚拟网络ID等分离标识符来标记的DNS请求。诸如虚拟网络ID等分离标识符允许DNS服务器304确定DNS请求用于哪个虚拟网络。

在步骤504中,使用分离标识符来检查专用于虚拟网络的DNS本地名称空间,以处理针对虚拟网络的该请求。由于使用本地名称空间,因此每个虚拟网络可以将相同的域名独立映射到不同的IP地址。

在步骤506中,如果DNS请求在DNS本地名称空间处解析,则提供对DNS请求的响应。否则,可以在DNS高速缓存或外部DNS服务器处解析请求。

图3的示例示出了如何允许本地名称空间发生冲突。在图3中,红色租户虚拟网络306和蓝色租户虚拟网络308可以独立地定义诸如“vm1.contoso.com”等名称到不同IP地址的映射。当接收到针对“vm1.contoso.com”的DNS请求(诸如用红色租户虚拟网络306的虚拟网络ID标记的DNS请求)时,DNS服务器304可以将正确的IP地址提供回DNS代理302。红色租户虚拟网络306和蓝色租户虚拟网络308的名称空间可以被允许冲突。这可以允许将现有网络转换为虚拟网络而不必修改名称空间,使得该名称空间不与其他名称空间冲突。也有可能的是,实例可以没有用于给定名称的DNS记录。

DNS请求可以利用诸如虚拟网络ID等分离标识符进行标记的响应来应答。或者,可以使用其他寻址方法。

如果请求未在DNS本地名称空间处解析,则DNS服务器304可以针对该DNS请求来检查共享DNS高速缓存。共享DNS高速缓存可以用于多个虚拟网络,因为它存储外部网络的IP地址。例如,当DNS请求涉及对外部网络上的位置的IP地址的请求时,IP地址可以或可以不存储在该共享高速缓存中。如果IP地址被存储在该共享高速缓存中,则DNS服务器304可以利用IP地址进行响应。如果请求未在共享高速缓存处解析,则DNS服务器304可以检查外部DNS服务器。然后可以利用来自外部DNS服务器的IP地址更新共享高速缓存。

如图6所示,在共享DNS服务器304处,可以按以下顺序进行解析直到找到匹配:

1)检查由分离标识符所指示的虚拟网络的本地名称空间(步骤602)。

2)检查共享名称空间(步骤604)。

3)执行外部解析(步骤606)。

为了配置系统,一旦创建了虚拟网络,则向DNS代理和DNS服务器指示关于分离标识符(诸如虚拟网络ID)和虚拟网络的对应关系。DNS服务器然后为虚拟网络创建用于存储本地名称空间的分区。管理进程可以在DNS服务器处设置和更新本地名称空间信息。

应当理解,本文中描述的任何软件组件在被加载到处理器中并且被执行时可以将处理器从通用计算系统转换为被定制为支持本文中呈现的功能的专用计算系统。处理器可以由任何数目的晶体管或其他分立电路元件构成,该晶体管或其他分立电路元件可以单独地或共同地采用任何数目的状态。更具体地,响应于包含在本文中公开的软件模块内的可执行指令,处理器可以作为有限状态机进行操作。这些处理器可执行指令可以通过指定处理器如何在状态之间进行转换来对处理器进行转换,从而转换构成处理器的晶体管或其他分立硬件元件。

对本文中呈现的软件模块进行编码还可以对本文中呈现的计算机可读存储介质的物理结构进行转换。物理结构的具体转换可以取决于各种因素,在本说明书的不同实现中。这样的因素的示例可以包括但不限于用于实施计算机可读存储介质的技术、计算机可读存储介质是被表征为主存储器还是次存储器等等。例如,如果计算机可读存储介质被实施为基于半导体的存储器,则可以通过转换半导体存储器的物理状态来将本文中公开的软件编码在计算机可读存储介质上。例如,软件可以转换构成半导体存储器的晶体管、电容器或其他分立电路元件的状态。软件还可以对这些组件的物理状态进行转换以便在其上存储数据。

作为另一示例,本文中公开的计算机可读存储介质可以使用磁或光学技术来实施。在这样的实现中,当软件在其中编码时,本文中呈现的软件可以转换磁性或光学介质的物理状态。这些转换可以包括改变给定磁介质内特定位置的磁特性。这些转换还可以包括改变给定光学介质内特定位置的物理特征或特性,以改变这些位置的光学特性。在不脱离本说明书的范围和精神的情况下,物理介质的其他转换是可能的,前述示例仅被提供以便于该讨论。

鉴于以上内容,应当认识到,在该架构中发生很多类型的物理转换以便存储和执行本文中呈现的软件组件。还应当认识到,该架构可以包括其他类型的计算设备,包括手持式计算机、嵌入式计算机系统、智能电话、PDA和本领域技术人员已知的其他类型的计算设备。还可以想到的是,该架构可以并不包括图中所示的所有组件,可以包括未在附图中明确示出的其他组件,或者可以利用完全不同于附图所示的架构。

备选地或附加地,本文中描述的功能可以至少部分地由一个或多个硬件逻辑组件来执行。例如而非限制,可以使用的示例性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。

计算机可读存储介质可以为一个或多个处理器的指令提供存储。尽管本文中包含的计算机可读存储介质的描述涉及诸如硬盘或CD-ROM驱动器等大容量存储设备,但是本领域技术人员应当理解,计算机可读介质可以是任何可用的存储介质。

作为示例而非限制,计算机可读存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实施的易失性和非易失性、可移除和不可移除介质。例如,计算机可读介质包括但不限于RAM、ROM、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、闪存或其他固态存储器技术、CD-ROM、DVD、HD-DVD(高清晰度DVD)、BLU-RAY或其他光学存储器、盒式磁带、磁带、磁盘存储器或其他磁存储设备、或者可以用于存储期望的信息和指令的任何其他介质。为了本说明书和权利要求的目的,短语“计算机可读存储介质”及其变型不包括波形、信号和/或其他暂态和/或无形的通信介质。

尽管已经以特定于计算机结构特征、方法和变形行为、特定计算机器和计算机可读存储介质的语言描述了本文中提出的主题,但是应当理解,所附权利要求中定义的方法和设备不一定限于本文中描述的具体特征、动作或介质。相反,具体特征、动作和介质被公开作为实施权利要求的示例形式。

虽然已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,在所附权利要求中限定的主题不一定限于上面描述的特定特征或动作。相反,上述具体特征和动作被公开作为实施权利要求的示例形式。意图在于,技术的范围由所附的权利要求限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1