在Internet流行起来之前,网络上的主机使用主机表 (host table) 来将IP地址映射到物理的计算机。随着Internet规模的爆炸性增长,这种形式的表已经完全不能满足需要。
DNS是后来应运而生的一种特别系统,它可将数字形式的IP地址(例如159.226.208.193)转换为以字母形式表达的地址(例如 www.oreilly.com.cn),反之亦然,以便人们可以直观地使用。
BIND是一种分布式的数据库,它允许网络大规模无限制地增长下去。DNS和BIND可以允许本地的网络管理员分配他们的主机名称(hostname)和地址,并将这些名称和地址安装到本地的数据库中,当名称被请求时,这个数据库可以被自动地传递给其他系统。
本书除了讨论DNS背后的设计动机和配置BIND 软件包之外,还涉及了许多高级主题,包括怎样成为一个“parent”,即具备向其他人分配名称的代理()能力,怎样使用DNS正确地设置邮件转发,发现和排除故障,编写相关的程序等等。
这一版本讨论了 BIND 8 的内容。中文版本特别地增加了怎样注册域名等内容。
本书同《TCP/IP网络管理》一起,并称为网络管理员必读的经典著作!
IP 地址是取之不尽用之不竭,还是即将消耗殆尽呢?
域名又是怎样和商标挂上了钩的呢?
网络门牌号码技术大解密!
前言
第一章 背景
Internet简史
Internet和internet
域名系统简述
BIND的历史
我一定要使用DNS吗?
第二章 DNS是如何工作的?
域名空间
Internet上的域名空间
授权
名字服务器和区
解析器
解析
缓存
第三章 我该从哪里开始?
获得BIND
选择一个域名
第四章 建立BIND
我们的域
建立DNS数据
建立一个BIND配置文件
缩写
主机名检查(BIND 4.9.4及其后续版本)
工具
运行一台主名字服务器
运行一台辅名字服务器
增加更多的域
接下来是什么?
第五章 DNS和电子邮件
MX记录
邮件交换器到底是什么?
MX算法
第六章 配置主机
解析器
解析器配置示例
把损失与不便降到最小
与供应商有关的选项
第七章 维护BIND
BIND名字服务器信号
更新数据库文件
组织你的文件
改变BIND 8 系统文件的位置
BIND 8日志
让一切都运行正常
第八章 扩展你的域
需要多少名字服务器呢?
增加更多的名字服务器
注册名字服务器
更改生存期
预防灾难
应付灾难
第九章 担当父域
何时成为父域
该有多少子域呢?
给子域起什么名字
如何成为父域:创建子域
in-addr.arpa域的子域
做个好父域
管理子域的迁移
父域的生命期
第十章 高级特性和安全性问题
地址匹配列表和ACL
DNS NOTIFY(区变动通知)
DNS动态更新
系统优化
名字服务器地址排序
更喜欢使用特定网络上的名字服务器
用转发器来构造一个大的缓存
一种更受限制的名字服务器
非递归名字服务器
避免使用伪装的名字服务器
确保名字服务器的安全
镜像服务器间的负载共享
第十一章 nslookup
nslookup 是一个好工具吗?
交互式与非交互式
选项设置
避免搜索列表
常见的任务
不太常见的任务
nslookup的故障诊断与排除
网络中的无名英雄
第十二章 阅读BIND的调试输出
调试级别
打开调试
阅读调试输出
解析器搜索算法和负缓存
工具
第十三章 DNS和BIND排错
NIS确实是你的问题吗?
故障诊断与排除工具和技术
潜在故障列表
版本升级后所带来的问题
互操作性和版本问题
故障症状
第十四章 使用解析器和名字服务器的库例程编程
用nslookup进行shell脚本编程
用解析器库例程进行C编程
使用Net::DNS进行Perl编程
第十五章 其他问题
使用CNAME记录
通配符
MX记录的限制
DNS和Internet防火墙
拨号连接
网络名和网络号
其他资源记录
DNS与X.500
DNS和WINS
附录一 DNS消息格式和资源记录
附录二 在Sun主机上编译和安装BIND
附录三 顶级域
附录四 域注册表
附录五 in-addr.arpa注册表
附录六 BIND名字服务器和解析器语句
到目前为止,你可能对域名系统(Domain Name System,DNS)所知甚少。但是无论你何时使用Internet,你都会用到DNS。每次你发送电子邮件或是在网上冲浪,你都必须依赖DNS。
作为人,我们都宁愿记计算机的名字,而计算机却喜欢用数字(即主机IP地址)来称呼彼此。在互联网络上,这样的地址是一个32位的数字,或者说是介于0到大约40亿之间的一个数字。对于计算机来说这是很容易记住的,因为计算机的内存很适合存储数字,而对于我们人来说,这就不那么好记了。真的不好记吗?现在请翻开一本电话簿,任意将一些区号和电话号码连起来。记住它们,就和记住十个任意的互联网络地址差不多难。
这就是我们需要DNS的部分原因。DNS是用于处理方便我们人类使用的主机名字和由计算机来处理的互联网络地址之间的映射。实际上,DNS是Internet上一个标准机制,用来发布和访问有关主机的各种信息,而不只是地址。而且实际上几乎所有的网间互联软件都在使用DNS,包括电子邮件、远程终端程序如telnet、文件传输程序如ftp,以及Web浏览器,如网景的Navigator和微软的Internet Explorer。DNS另一个重要特性就是它使得从Internet上任何地方都能获得主机的信息。将主机信息按照某种格式存成文件,放在某台计算机上,只能对那台计算机的用户有用。DNS则提供了一种远程检索信息的方式,你能从网络上任何一个地方查找信息。
还不止这些,DNS使你能对许多场所和机构中的主机信息进行分布式管理。你不需要将数据提交给某个中心,或定期地检索中心的数据库,只保证名字服务器(nameserver)上称为区(zone)的部分是最新的就行。你的名字服务器会使网络上其他的名字服务器都能访问你区中的数据。因为数据库是分布式的,所以系统还需要能够通过搜索一定的位置来确定要查找的数据在哪里。域名系统使得名字服务器能够很聪明地在数据库之中查找,找到任何区中的数据。
当然,DNS也有它的问题。例如,为了冗余,系统允许不止一个名字服务器存储一个区的同样的数据。但是这就会导致这些区数据之间的一致性问题。不过,关于DNS最糟糕的问题是,尽管它在Internet上广泛使用,但却很少有关于如何管理和维护DNS方面的资料。Internet上大多数管理员使用厂家认为应该提供的资料,再就是从有关这个问题的Internet邮件列表和Usenet新闻组中搜集到的一些信息。
缺乏资料就意味着,对这种非常重要的互联网络服务——今天Internet的关键之一——的理解要么是从一个管理员传授给另一个管理员,就像一个保守严密的家族秘方;要么是从一个个互不相识的程序员加工程师那里重复搜集取得。新的系统管理员重犯着无数人犯过的错误。
我们写这本书的目的就是为了帮助解决这一状况。我们意识到你们当中并非所有人都想成为DNS的专家。毕竟,你们中的大多数除了管理一个域(domain)或名字服务器之外还有许多其他事情要做:系统管理、网络工程或软件开发。要一个人只负责DNS是完全不可想像的。我们会试着给你足够的信息,让你无论是运行一个小的域还是管理一个跨国的大家伙,无论是负责一个名字服务器还是管理上百个名字服务器,都只做需要做的事。现在你想知道多少,就读多少,如果你想知道更多,可以返回来继续读。DNS是个很大的话题——至少大到需要两个作者——但是我们将试着尽可能讲得通俗易懂。头两章是从理论上概述,并且让你了解一些实用的信息,余下来的章节讲的都是核心细节。我们在开始的时候提供了一个路线指南,它根据你的工作或兴趣向你建议适合的阅读路线。
当我们谈到实际的DNS软件时,我们主要讲的是BIND,即Berkeley Internet Name Domain软件,它是DNS规范的一种最为常见的实现(也是我们所知道的最好的)。我们力图在本书中精心提炼我们在用BIND管理和维护域当中的经验一一顺便说一句,这个域可能是Internet上最大的一个(不是吹牛,我们有这样的把握)。只要有可能,我们就会给出在管理中实际用到的程序,为—了速度和效率,其中许多都用Peri进行了重写。
如果你还是个生手的话,我们希望这本书能帮助你熟悉DNS与BIND,如果你已经熟悉了DNS,我们希望它能增进你的理解。即使你对DNS已经了如指掌,我们还是希望能提供一些有价值的理解和经验。