引言

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

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

服务器---- 一起组成系统的计算机,允许我们使用名字而不是地址---- 可以服务许多不同的功能,每一个都有助于你通过名字访问服务器的能力。

在前面的指南中,我们讨论了域名系统的一些基本术语和概念。 我们将假设您对本文中所涉及的概念有一定的了解。 在本指南中,我们将讨论一些不同类型的 DNS 服务器设置,以及每种设置的优点、用例和属性。

Dns 查询的路径

当客户机程序希望通过域名访问服务器时,它必须找出如何将域名转换为实际的可路由地址,以便用于通信。 它需要知道这些信息,以便获取或向服务器发送信息。

有些应用程序,包括大多数 web 浏览器,维护一个最近查询的内部缓存。 这是应用程序首先检查的地方,如果它有这种能力,为了找到有问题的域的 IP 地址。 如果它在这里找不到问题的答案,它就要求系统解析器找出域名的地址是什么。

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

因此,查询通常从客户机应用程序发送到系统解析器,然后传递到具有其地址的 DNS 服务器。 此 DNS 服务器称为递归 DNS 服务器。 递归服务器是一个 DNS 服务器,它被配置为查询其他 DNS 服务器,直到找到问题的答案。 它将向客户机返回答案或错误消息(在本例中为系统解析器,系统解析器将反过来将其传递给客户机应用程序)。

递归服务器通常也会维护一个缓存。 它将首先检查这个缓存,看看是否已经有查询的答案。 如果没有,它将查看是否有控制上层域组件的任何服务器的地址。 因此,如果请求是针对 www.example. com 的,并且它无法在缓存中找到主机地址,它将查看是否有名称服务器的地址,例如.com,如果有必要,还有 com。 然后,它将向能够找到的最特定域组件的名称服务器发送一个查询,以便查询更多信息。

如果它找不到任何这些域组件的地址,它必须从层次结构的最顶层开始,查询根名称服务器。 根服务器知道控制分区的所有 TLD (顶级域名)服务器的地址。 Com,. 网。 等等。 它会询问根服务器是否知道 www.example. com 的地址。 属性的名称服务器引用递归服务器。 热释光剂量计。

然后,递归服务器跟踪每个连续的名称服务器的引用线索,这些名称服务器已经被委派了对域组件的责任,直到它能够集中到具有完整答案的特定名称服务器。 它将这个答案放入其缓存中,以便稍后查询,然后将其返回给客户机。

从这个示例中可以看到,有许多不同类型的服务器,它们各自扮演不同的角色。 让我们来看看不同类型的 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 服务器可以配置为作为一个递归的缓存服务器,用于选定数量的本地客户机,同时只回答来自其他客户机的迭代的权威请求。 这是一个常见的配置,因为它允许您回答域的全局请求,同时也允许您的本地客户机利用服务器进行递归解析。

虽然某些 DNS 软件是专门为完成一个特定的角色而设计的,但是像 Bind 这样的应用程序非常灵活,可以作为混合解决方案使用。 虽然在某些情况下,试图在单个服务器中提供过多的服务会导致性能下降,但在许多情况下,特别是在小型基础设施的情况下,维护一个单一的、多功能的解决方案是最有意义的。

关系差异

虽然 DNS 服务器配置之间最明显的差异可能是功能上的,但关系上的差异也是极其重要的。

主服务器和辅助服务器

考虑到 DNS 在提供服务和整个网络可访问性方面的重要性,对于一个区域具有权威性的大多数 DNS 服务器将具有内置冗余。 这些服务器之间的关系有各种术语,但通常,服务器在其配置中可以是主服务器或辅助服务器。

主服务器和辅助服务器都是它们处理的区域的权威服务器。 初级不比次级有任何更多的权力在区域。 区分主服务器和辅助服务器的唯一因素是它们从哪里读取区域文件。

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

辅助服务器通过区域传输从区域的主服务器之一接收它的权威区域。 一旦有了这些区域,它就会将它们放置在缓存中。 如果必须重新启动,则首先检查其缓存,以查看其中的区域是否是最新的。 如果没有,则从主服务器请求更新的信息。

对于所处理的所有区域,服务器并不只是主服务器或辅助服务器。 主要或辅助状态是按区域分配的,因此服务器可以是某些区域的主要服务器,也可以是其他区域的辅助服务器。

Dns 区域通常至少有两个名称服务器。 任何负责 internet 可路由区域的区域必须至少有两个名称服务器。 通常,维护更多的名称服务器是为了分散负载和增加冗余。

公共服务器与私人服务器

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

组织可以维护一个外部可用的只有权威的 DNS 服务器,以处理其所处理的域和区域的公共 DNS 查询。 对于内部用户,组织可以使用单独的 DNS 服务器,其中包含公共 DNS 提供的权威信息以及关于内部主机和服务的其他信息。 它还可能为其内部客户机提供其他特性,如递归和缓存。

虽然我们提到了在上面提到的“组合”服务器中让一个服务器处理所有这些任务的能力,但是分割工作负载确实有一些优点。 事实上,维护完全独立的服务器(内部服务器与外部服务器)并不了解彼此通常是可取的。 从安全的角度来看,公共服务器没有私有服务器的记录尤其重要。 这意味着不要在公共区域文件中列出带有 NS 记录的私有名称服务器。

还有一些额外的考虑要记住。 虽然让您的公共和私有服务器共享它们在传统的主辅关系中共有的区域数据可能更容易,但这可能会将您的私有基础结构的信息泄露到外部环境中。

除了让您的私有服务器远离专区文件本身(本质上是一个可公开搜索的实体)之外,通常还应该删除公共服务器配置文件中对私有服务器的任何引用。 这意味着删除传输、通知和主要配置细节,以便公共服务器的危害不意味着您的内部名称服务器突然暴露。

这意味着为每个文件维护单独的区域文件,这可能是额外的工作。 然而,这对于绝对的分离和安全性可能是必要的。

总结

您可能已经意识到,在选择 DNS 配置时有相当大的灵活性。

您的选择将在很大程度上取决于您的组织的需求,以及您的主要优先事项是为选定的客户机提供更快的 DNS 解析(缓存或转发) ,还是将您的域和区域服务于整个互联网(权威服务器)。 组合方法是常见的,最终,决议进程的双方都需要得到考虑。

在接下来的指南中,我们将演示如何开始使用这些配置。 我们将从教授如何设置缓存或转发服务器开始。 稍后,我们将讨论如何通过设置一对只有权威的 DNS 服务器来为您的域服务。