这是什么,不是什么。
DNS 是域名系统。DNS 将机器名转换为网络上所有机器都拥有的 IP 地址。它将名称翻译(或用行话说“映射”)为地址,并将地址翻译为名称,以及其他一些事情。本 HOWTO 文档介绍了如何使用 Unix 系统定义此类映射,其中一些内容特定于 Linux。
映射只是两个事物之间的关联,在本例中是一个机器名,例如 ftp.linux.org
,以及机器的 IP 号码(或地址)199.249.150.4
。DNS 还包含从 IP 号码到机器名的反向映射;这被称为“反向映射”。
对于外行(你 ;-)来说,DNS 是网络管理中比较不透明的领域之一。幸运的是,DNS 实际上并没有那么难。本 HOWTO 将尝试使一些事情更清晰。它描述了如何设置一个简单的 DNS 名称服务器,从仅缓存服务器开始,到为域设置主 DNS 服务器。对于更复杂的设置,您可以查看本文档的 问答 部分。如果在那里没有描述,您将需要阅读真正的文档。我将在 最后一章 中回顾一下真正的文档是什么。
在您开始之前,您应该配置您的机器,以便您可以 telnet 进入和退出它,并成功地与网络建立各种连接,并且您尤其应该能够执行 telnet 127.0.0.1
并获得您自己的机器(现在就测试一下!)。您还需要良好的 /etc/nsswitch.conf
、/etc/resolv.conf
和 /etc/hosts
文件作为起点,因为我不会在此解释它们的功能。如果您尚未设置并运行所有这些,则 Networking-HOWTO 和/或 Networking-Overview-HOWTO 解释了如何设置它。阅读它们。
当我说“您的机器”时,我指的是您正在尝试在其上设置 DNS 的机器,而不是您可能拥有的参与网络工作的任何其他机器。
我假设您没有位于任何阻止名称查询的防火墙后面。如果您是,您将需要一个特殊的配置 --- 请参阅关于 问答 的部分。
Unix 上的名称服务由一个名为 named
的程序完成。这是由互联网软件协会协调的“BIND”软件包的一部分。Named
包含在大多数 Linux 发行版中,通常安装为 /usr/sbin/named
,通常来自一个名为 BIND
的软件包,大小写取决于打包者的突发奇想。
如果您有 named,您可能可以使用它;如果您没有,您可以从 Linux ftp 站点获取二进制文件,或者从 ftp://ftp.isc.org/isc/bind9/ 获取最新和最棒的源代码。本 HOWTO 是关于 BIND 版本 9 的。关于 BIND 4 和 8 的旧版本 HOWTO 仍然可以在 http://langfeldt.net/DNS-HOWTO/ 找到,以防您使用 BIND 4 或 8(顺便说一句,您也会在那里找到本 HOWTO)。如果 named 手册页谈到(在最后,在 FILES 部分)named.conf
,则您有 BIND 8;如果它谈到 named.boot
,则您有 BIND 4。如果您有 4 并且有安全意识,您真的应该升级到最新版本的 BIND 8。现在。
DNS 是一个全网范围的数据库。请注意您放入其中的内容。如果您将垃圾放入其中,您和其他人将从中获得垃圾。保持您的 DNS 整洁和一致,您将从中获得良好的服务。学习使用它、管理它、调试它,您将成为另一位优秀的管理员,防止网络因管理不善而崩溃。
提示:如果您已经拥有我指示您更改的所有文件,请制作备份副本,以便如果在完成此操作后没有任何效果,您可以将其恢复到旧的、工作状态。
本节由 Joost van Baal 撰写。
存在各种软件包可以在您的机器上获得 DNS 服务器。有 BIND 软件包(http://www.isc.org/products/BIND/);本 HOWTO 所述的实现。它是最流行的名称服务器,自 1980 年代以来,它被用于 Internet 上绝大多数名称服务机器,并在周围部署。它在 BSD 许可下可用。由于它是最流行的软件包,因此存在大量关于 BIND 的文档和知识。但是,BIND 存在安全问题。
然后是 djbdns(http://djbdns.org/),这是一个相对较新的 DNS 软件包,由 Daniel J. Bernstein 编写,他也是 qmail 的作者。它是一个非常模块化的套件:各种小型程序负责处理名称服务器应该处理的不同工作。它的设计考虑了安全性。它使用更简单的区域文件格式,并且通常更容易配置。但是,由于它不太为人所知,您的本地专家可能无法在这方面为您提供帮助。不幸的是,此软件不是开源的。作者的广告在 http://cr.yp.to/djbdns/ad.html 上。
DJB 的软件是否真的比旧的替代方案有所改进是一个备受争议的话题。关于 BIND 与 djbdns 的讨论(或者说是口水战?),ISC 人员也加入了,网址是 http://www.isc.org/ml-archives/bind-users/2000/08/msg01075.html