系统管理:迈向 BIND 的一步

作者:Tom Adelstein

DNS 主要是一种目录服务。每天有数百万人和计算机使用一个或多个目录。目前,我们的世界中存在如此多的目录,以至于它们几乎对普通观察者来说是透明的。你可以说这是一个目录的世界,而对于使用互联网的人来说,无论使用何种设备,DNS 仍然是其中重要的一部分。

在过去,人们经常将目录称为数据库,从技术上讲他们是对的。目录和数据库具有许多共同特征,例如存储信息和快速搜索数据的能力。想想你用手机作为个人联系人数据库的次数。事实上,你的手机使用其地址簿作为目录来快速查找和拨打人们的电话号码。

目录也不同于数据库,因为人们倾向于读取目录的内容远多于写入。目录不需要支持事务、索引、触发器和二进制对象的存储。目录提供人们和程序执行某些活动所需的信息,并且目录快速提供信息。

您可能想知道为什么系统管理员必须了解 DNS 的内部运作原理。它只是一个目录,对吧?人们将信息存储在目录中,计算机像电话簿一样使用这些信息。毕竟,当我购买我的域名时,我提供了所有联系信息等等。这些信息不应该已经存在于我的顶级域名服务器 (TLD) 中了吗?

别忘了,您提供了两个或多个域名服务器的名称。其中一个服务器将充当人们查找您的域名的主要目录。其他服务器将充当备份 DNS 服务器。当您指定这些服务器时,您就承担了在域名系统中为您的域创建条目的责任。

DNS 目录与其他目录在管理方式上有所不同。一旦有人获得域名的权利,注册商就会将域名提交给 TLD 服务器。注册商还会提交将包含有关新注册域名信息的 DNS 服务器的名称和 IP 地址。

一旦提交成为 TLD 集合的一部分,系统管理员就必须接管并管理 IP 地址及其各自的通用名称。我们称 DNS 目录为分布式目录,因为您必须独立管理您自己的部分。

作为管理员,您应该确保您的服务器保持在线,以便人们可以找到您的网站。这意味着您必须使用标准 DNS 协议将网站名称正确映射到其正确的 IP 地址。

Web 化应用程序?

除了安全性、稳定性和准确性之外,将 DNS 纳入您的基础设施还能带来其他好处。它可以提高您的可扩展性。如果您拥有和运营多个活动域名或内部身份验证服务,这一点就变得很重要。简而言之,在当今的商业环境中,控制您自己的 DNS 而不是让其他人来做是有价值的。

许多公司已经将其核心业务应用程序 Web 化,并且必须维护自己的 DNS 服务器。企业通常不会更换正在运行的应用程序。他们认为升级和/或迁移遗留系统成本太高。“如果它没坏,就不要修理它”这句老话在这里适用。

即便如此,企业也明白他们必须跟上新技术,否则就会失去客户给竞争对手。这造成了一个两难境地。如果您经营一家企业,您必须权衡升级业务应用程序的成本与失去业务的成本。

因此,一个行业应运而生,以帮助企业在保持现有遗留应用程序的同时对其进行现代化改造。这个概念始于硅谷的几家小型初创公司,并迅速发展壮大。这个想法非常奏效,以至于主要的 ERP 供应商收购了这些小型初创公司。

现在,像 SAP 和 Oracle 这样的公司已经 Web 化了遗留系统。他们通过添加 Web 前端,同时使用基于 Web 的后端将不同的系统连接在一起来实现这一点。DNS 成为 Web 化的组成部分,因为此类系统需要可以相互通信的目录服务器。

随着 Web 服务和可执行互联网的兴起,DNS 也占据了突出的地位,人们可以使用 Google、Yahoo 等公司提供的应用程序。快速可靠地解析 IP 地址对于这些产品在互联网上和企业内部的成功至关重要。

DNS 目录还有助于管理局域网和广域网。由于这一要求,DNS 配置和管理已成为更有价值的系统管理技能之一。

术语

当您开始学习 DNS 术语时,您会发现它不直观。在许多方面,这些术语感觉像是一门外语。在您使用一段时间之前,它不会有太多意义。

Linux 发行版提供了称为 BIND 的知名软件包来执行 DNS 功能。BIND 的替代品包括 djbdns 套件。尽管如此,许多人仍然认为系统管理员应该从 BIND 开始,因为它运行着世界上几乎所有的 DNS 服务器。我们不会提供关于 BIND 的历史课程,因为这个主题会让读者昏昏欲睡。

尽管如此,我们仍需要解决一个历史遗留问题。有些人继续使用过时或已弃用的 BIND 版本 - 版本 4。在本系列中,我们将使用较新的 BIND 8 和 9 版本。我们不会介绍 BIND 4。

如果您使用的系统中的 DNS 配置文件看起来与本系列中显示的语法不同,那可能是因为该系统使用 BIND 4。就像我们上面说的那样,企业通常不会更换正在运行的系统。可能需要一场灾难才能让某人升级到 BIND 8 或 9。由于 BIND 4 中存在安全漏洞的可能性,您应该强烈建议任何 BIND 4 系统的用户进行升级。

托管其他域名的名称服务器

将 DNS 想象成电话簿。如果您想在电话簿中查找 John 和 Jane Doe,电话公司会发布这些信息。但是,如果您想查找 janedoe.com;系统管理员必须提供姓名和号码,并使其成为分布式 DNS 目录的一部分。

管理员如何做到这一点?他们在 DNS 爱好者称为区域文件的文件中创建他们的列表。

一个区域保存一个域名的信息,或者使用我们的电话簿类比来说,就是一个家庭的信息。您可能在房子里住了十五个孩子,当他们在家里时,您可以通过同一个地址和电话号码联系到他们每个人。同样,您可能有十五台服务器,它们都位于同一个数据中心。

BIND 的多功能性的一部分允许您在一台服务器上管理多个区域。为了说明这一点,假设您管理一台服务器,该服务器托管五个不同的网站,每个网站都有完全不同的域名。假设一个是 red-domain.org,而其他的是 red-kid.com、red-sister.org 等等。所有网站的所有者都要求您管理他们的 DNS 记录。

每个网站都在不同的域中。因此,您必须为每个网站编写一个区域文件。在注册商的数据库中,您的服务器将被列为这些域名的名称服务器。

因此,server1.red-domain.org 被列为您联系以查找房子里的其他孩子(如 red-kid.com、red-sister.org 和其他孩子)的人。

假设外面有人正在寻找一个孩子,他们打电话给您。您有很多孩子,现在他们每个人都有手机,您忘记了他们的号码。所以,您有您自己的列表。这是一个目录,您在其中查找现在哪个孩子住在房子里并拥有手机。

您查看您的目录,发现今天谁在那里。您将那个小目录称为 /etc/named.conf,这是 BIND 配置文件的名称。从某种意义上说,/etc/named.conf 是您的区域文件目录列表。它为您提供有关系统上每个区域位置的信息。我们将在下一篇文章中讨论这一点。

关于 BIND 的一些小知识

Linux 发行版通常使用 BIND 作为其默认名称服务器。BIND 带有三个组件。第一个是服务或守护进程,它运行 DNS 的应答端。当门铃响起时,它会应门。在您的系统中,您会在名为 named(发音为 name-dee)的守护进程下找到应门者。

我们将 BIND 捆绑包中的第二个项目称为解析器库。解析器就像一个没有口音的谈判者。它会出去查找网站的名称,然后找到 IP 号码,以便您可以在互联网丛林中找到正确的计算机。

有些人将解析器视为 BIND 内部的客户端。解析器代码会向 DNS 服务器发出查询,试图将名称转换为 IP 地址。您会发现 BIND 的这一部分使用其自己的小目录,称为 resolv.conf

关键在于;您还可以配置 resolv.conf 。与服务器不同,客户端不是单个程序,而是一个库,其他孩子(如 Web 浏览器或电子邮件客户端)可以读取该库来解析名称。

BIND 的第三部分提供了诸如 dig 命令之类的工具,用于测试 DNS。转到您的控制台并键入 dig yahoo.com,看看会发生什么。稍后,我们将讨论 dig 和此工具包中的其他工具。

现在,我只想让您熟悉一些概念,例如区域以及 /etc/bind 目录中配置文件的概念。下次,我们将在 Debian 系统上安装 Bind9,将其放入 chroot 环境中并设置一个区域进行管理。在那之前,祝您 7 月 4 日快乐!

加载 Disqus 评论