DNS服务器类型的比较:如何选择正确的DNS配置

来源:互联网 发布:武装突袭3终极优化 编辑:程序博客网 时间:2024/05/17 22:16

介绍

DNS或域名系统是系统如何互联以在互联网上进行通信的一个组成部分。如果没有DNS,计算机和使用它们的人将仅需要使用称为IP地址的数字地址进行连接。

除了为了简单的任务而必须记住大量复杂数字的显而易见的问题之外,通过IP地址通信还导致一些额外的问题。将您的网站移到不同的托管服务提供商,或将您的服务器移到不同的位置,都需要您通知每个客户新的位置。

DNS服务器,一起组成系统的计算机,允许我们使用名称而不是地址,可以服务许多不同的功能,每个功能都可以帮助您按名称访问服务器。

之前的指南中,我们讨论了域名系统的一些基本术语和概念。我们将假定对这篇文章中涵盖的概念有所了解。在本指南中,我们将讨论一些不同类型的DNS服务器设置,以及各自的优点,用例和属性。

DNS查询的路径

当客户端程序想要通过域名访问服务器时,必须了解如何将域名转换为可用于通信的实际可路由地址。它需要知道这些信息才能获取或发送信息到服务器。

某些应用程序(包括大多数Web浏览器)维护最近查询的内部缓存。这是应用程序将检查的第一个位置,如果它具有此功能,以查找有问题的域的IP地址。如果在这里找不到问题的答案,那么它会要求系统解析器找出该域名的地址。

通常,解析器是作为DNS查询中的客户端参与者的任何组件。系统解析器是您的操作系统用来查找DNS查询答案的解析库。一般来说,系统解析器通常是我们认为的stub解析器,因为除了在系统上搜索一些静态文件(如/etc/hosts文件)并将请求转发到另一个解析器之外,它们不具有太多的复杂性

所以一般来说,一个查询从客户端应用程序到系统解析器,然后被传递到它有地址的DNS服务器。这个DNS服务器被称为递归DNS服务器递归服务器是配置为查询其他DNS服务器,直到它找到问题的答案的DNS服务器。它会将答案或错误消息返回给客户端(在这种情况下是系统解析器,然后将其传递给客户端应用程序)。

递归服务器通常也保持缓存。它将首先检查这个缓存,看它是否已经有了查询的答案。如果没有,它会看到是否有任何控制上层域组件的服务器的地址。所以,如果请求是为了,www.example.com并且它的缓存中找不到该主机地址,它将会看到它是否具有名称服务器的地址,example.com如果有必要的话com然后,它会发送一个查询到它可以找到的最具体的域名组件的名称服务器,以便查询更多的信息。

如果没有找到任何这些域组件的地址,则必须通过查询根名称服务器从层次结构的顶部开始根服务器知道所有这些控制区的TLD(顶级域名)域名服务器的地址.com.net.org等它会询问根服务器,如果它知道到地址www.example.com根服务器将递归服务器引用到.comTLD 的名称服务器

然后,递归服务器跟踪每个连续的名称服务器的引用,这些名称服务器已经被委托负责域组件,直到它可以归入具有完整答案的特定名称服务器。它将这个答案放到它的缓存中以备以后查询,然后将其返回给客户端。

从这个例子中可以看出,有许多不同种类的服务器,每个服务器扮演着不同的角色。我们来看看不同类型的DNS服务器的细节。

功能差异

DNS服务器之间的一些区别纯粹是功能性的。大多数涉及实施DNS的服务器专门用于某些功能。您选择的DNS服务器的类型将很大程度上取决于您的需求以及您希望解决的问题类型。

仅权威的DNS服务器

只有权威的DNS服务器是一个服务器,只关心回答对其负责的区域的查询。由于它不能帮助解决外部区域的查询,所以它通常非常快并且可以有效地处理许多请求。

仅限权威的服务器具有以下属性:

  • 响应查询所控制区域的速度非常快。 只有权威的服务器将具有有关其负责的域的所有信息,或域中已被委派给其他名称服务器的区域的引荐信息。
  • 不会回应递归查询。 只有权威的服务器的定义是不处理递归请求的。这使得它成为一个服务器而不是DNS系统中的客户端。任何到达唯一权威服务器的请求通常来自已收到引荐的解析器,这意味着仅授权服务器将具有完整的答案,或者将能够将新的引用传递给名称服务器它已经下放了责任。
  • 不缓存查询结果。 由于仅有权威的服务器从不向其他服务器查询信息来解析请求,因此永远不会有机会缓存​​结果。它所知道的所有信息已经在其系统中。

缓存DNS服务器

缓存DNS服务器是处理来自客户端的递归请求的服务器。几乎每个操作系统的存根解析程序都会联系的DNS服务器将是一个缓存DNS服务器。

缓存服务器具有应答来自客户端的递归请求的优点。虽然仅有权威的服务器可能是服务特定区域信息的理想选择,但从客户的角度来看,缓存DNS服务器更为广泛有用。他们使世界的DNS系统可以访问非常愚蠢的客户端界面。

为了避免每次接收到递归请求时发送多次迭代请求给其他DNS服务器的性能命中,服务器缓存其结果。这使得它能够在快速处理最近的请求的同时访问广泛的DNS信息库(全世界可公开访问的DNS)。

高速缓存DNS服务器具有以下属性:

  • 访问整个公共DNS数据的范围。 所有连接到全局委托树的可公开访问的DNS服务器提供的区域数据可以通过缓存DNS服务器来访问。它知道根DNS服务器,并可以智能地跟随引荐,因为它接收数据。
  • 能够向哑客户提供数据。 几乎每个现代操作系统都通过使用存根解析器将DNS解析卸载到专用的递归服务器。这些解决图书馆只是简单地发出一个递归的请求,并希望被交还一个完整的答案。高速缓存DNS服务器具有为这些客户端提供服务的确切功能。通过接受递归查询,这些服务器承诺返回一个答案或一个DNS错误消息。
  • 保持最近请求的数据的缓存。 通过将结果从其它DNS服务器收集到其客户端请求中进行缓存,缓存DNS服务器为最近的DNS数据构建缓存。根据客户端使用服务器的数量,缓存的大小以及DNS记录本身的TTL数据的时间长短,在大多数情况下,这可以大大加快DNS解析的速度。

转发DNS服务器

为客户端机器开发缓存的替代方案是通过使用转发DNS服务器。这种方法在DNS解析链中增加了一个额外的链接,通过实现一个转发服务器,将所有请求简单地传递给具有递归功能的另一个DNS服务器(例如缓存DNS服务器)。

这个系统的优点是它可以给你一个本地可访问缓存的好处,而不必做递归工作(这可能会导致额外的网络流量,并可能占用高流量服务器上的大量资源)。这也可以导致一些有趣的灵活性,通过转发到不同的服务器来分割您的私人和公共流量。

转发DNS服务器具有以下属性:

  • 处理递归请求而不执行递归本身的能力。 转发DNS服务器最基本的属性是它将请求传递给另一个代理进行解析。转发服务器可以拥有最少的资源,并且通过利用其缓存提供了很大的价值。
  • 在更近的网络位置提供本地缓存。 特别是如果您不想构建,维护和保护一个完整的递归DNS解决方案,转发服务器可以使用公共递归DNS服务器。它可以利用这些服务器,同时将主要缓存位置移动到非常接近客户机的位置。这可以减少答案时间。
  • 增加定义本地域空间的灵活性。 通过有条件地将请求传递给不同的服务器,转发服务器可以确保内部请求由私有服务器提供服务,而外部请求使用公有DNS。

组合解决方案

虽然上面的解决方案是以非常特定的目的构建的,但通常需要设置DNS服务器来结合每个服务器的优点。

DNS服务器可以被配置为充当选择数量的本地客户端的递归缓存服务器,同时仅回答来自其他客户端的迭代的权威请求。这是一个常见的配置,因为它允许您回答您的域的全局请求,同时也允许您的本地客户端利用服务器进行递归解析。

虽然某些DNS软件是专门为满足特定角色而设计的,但Bind等应用却非常灵活,可以用作混合解决方案。尽管在某些情况下尝试在单个服务器上提供太多服务可能会导致性能下降,但在许多情况下,特别是在小型基础架构的情况下,维护一个单一的一体化解决方案是最有意义的。

关系的差异

尽管DNS服务器配置之间最明显的差异可能是功能性的,但关系性差异也是非常重要的。

主从服务器

鉴于DNS在提供服务和整个网络方面的重要性,大多数对某个区域具有权威性的DNS服务器将具有内置冗余。这些服务器之间的关系有各种各样的术语,但一般来说,服务器可以是其配置中服务器服务器

主服务器和从服务器对于他们处理的区域都是权威的。主人没有比奴隶更多的权力。主服务器和从服务器之间的唯一区别在于他们从中读取其区域文件。

主服务器从系统磁盘上的文件读取其区域文件。这些通常是区域管理员添加,编辑或传输原始区域文件的位置。

从属服务器通过从该区域的其中一个主服务器进行的区域传输来接收其授权的区域。一旦它有这些区域,它们将它们放在缓存中。如果必须重新启动,它首先检查它的缓存,看看里面的区域是否是最新的。如果不是,则从主服务器请求更新的信息。

服务器不是只能成为他们所处理的所有区域的主人或奴隶。主机或从机状态是按区域分配的,因此服务器可以是某些区域的主机,也可以是其他区域的主机。

DNS区域通常至少有两个名称服务器。负责互联网可路由区域的任何区域必须至少有两个名称服务器。通常,维护更多的名称服务器以分散负载并增加冗余。

公共与专用服务器

组织经常在外部和内部使用DNS。然而,这两个领域应该提供的信息往往是截然不同的。

一个组织可能会维护一个外部可用的唯权DNS服务器来处理它处理的域和区域的公共DNS查询。对于其内部用户,组织可以使用包含公共DNS提供的授权信息的单独DNS服务器,以及有关内部主机和服务的其他信息。它也可能提供额外的功能,例如为其内部客户端递归和缓存。

虽然我们提到能够让一台服务器处理上述“组合”服务器中的所有这些任务,但分割工作负载具有一定的优势。事实上,保持完全独立的服务器(内部vs外部)往往是不可取的。从安全的角度来看,公共服务器没有私人对象的记录是尤其重要的。这意味着不会在公共区域文件中列出具有NS记录的专用名称服务器。

有一些额外的考虑要记住。虽然让公共和私有服务器共享传统主从关系中共有的区域数据可能会更容易,但这可能会泄露有关您的私有基础架构的信息。

除了只将私有服务器保留在区域文件本身之外(本质上是一个可公开搜索的实体)之外,通常也是删除公用服务器配置文件中对私有服务器的引用的好主意。这意味着删除传输,通知和掌握配置细节,以便妥协的公共服务器并不意味着您的内部名称服务器突然暴露。

这意味着为每个分区保存文件,这可能是额外的工作。但是,这可能是绝对分离和安全所必需的。

结论

在这个阶段,您可能已经意识到在选择DNS配置方面有相当多的灵活性。

您的选择在很大程度上取决于您的组织的需求,以及您的主要优先事项是为选定的客户端(缓存还是转发)提供更快的DNS解析,还是将您的域和区域提供给大型Internet(权威服务器)。组合方法是常见的,最后,解决过程的双方都需要考虑。

在我们的下一个指南中,我们将演示如何开始使用这些配置。我们将开始教导如何建立缓存或转发服务器稍后,我们将介绍如何通过建立一对仅有权威的DNS服务器来为您的域提供服务

原创粉丝点击