【内容导航】
第1页:国际顶级域名概述
第2页:域的层次结构
第3页:域名服务器的种类
第4页:域名服务器配置所需文件
第5页:UNIX 的DNS服务器BIND软件
DNS(Domain Name System)叫域名系统,它是域名和IP地址相互转换的一种服务;域名是计算机在互联网上最重要的标识,也是建立企业网站的必备要素之一。按照国际顶级类型的域名可分为8种:
我国域名的顶级类型可分为6种:
DNS与大多数的TCP/IP服务一样,也采用客户机/服务器模式。使用DNS将主机名解析成IP地址使用到一个全局的、层次性的分布式数据库系统。该数据库包含了Internet上所有域名与其IP地址对应信息。数据库的层次性允许将域名空间划分成独立管理的部分,并称为域(Domain)。数据库的分布式特性则允许将数据库的各个不同部分分配到不同网络的域名服务器上,这样各域名服务器可以实现独立的管理。名字管理器(Name Server)包含了分布式数据库系统中的部分信息,并利用这些信息,为被称为解析器(resolver)的客户机提供服务。域名服务器运行一个服务器进程(在UNIX系统中一般为named进程),该进程进行名字对IP地址的解析,并且提供一些永久性的主机信息。DNS使每个名字器负责控制整个数据库中的部分信息,并且保证能够在整个网络中存取这些信息。
1、域的层次结构
DNS是一个包含主机信息的分布式层次结构系统。在DNS下,没有存放全部Internet信息的中心数据库,这些信息分布在一个层次结构中的若干台域名服务器上,这种结构非常类似于UNIX文件系统中的层次结构。它们的结构都组织成倒转的树,根在结构的最顶端。在UNIX文件系统中,根以“/”表示;在DNS中,根的名字以“.”表示,并被称之为根域。下图给出了这种结构的典型例子。
根域的下一级称为顶级域,这些域又可以进一步分割成子域,子域又可进一步分割成子域--与UNIX文件系统中划分目录与子目录十分类似。在UNIX文件系统中,目录既可以包含子目录也可以包含文件,同样,域既可以包含主机也可以包含子域。DNS中的域名一般相当于文件系统中的绝对路径名,是一个以该域到根域的名字列表,中间以“.”隔开,如"www.ggg.com"。当然,DNS中的一个域也可以相对其父域来指定名字,类似于文件系统中的相对路径名。需要指出的是,相对于根域的域名称为全域名(FQDN),在DNS中,一个全域名记作一个标记序列,从目标域名开始,以根域名结束。例如:cs.gg.org是子域cs的一个全域名。
2、域名服务器的种类
在域名服务中,域名服务器的配置是最为核心的内容。如果使用BIND软件对域名服务器进行配置,则可以将域名服务器分为3种类型:主域名服务器、辅助域名服务器和高速缓存服务器。下面对这3种类型的服务器做一个简单的比较:
(1)主域名服务器(Prmlary Name Server)
主域名服务器对一个或多个区的域名解析具有权威性。它从系统管理员构建的本地磁盘文件中直接加载信息,同时,主域名服务器还将定期地把数据传送给同一个区中的辅助域名服务器。主域名服务器是一种权威性的服务器,它以绝对的权威来回答域中所有的查询。
当主域名服务器回答客户请求时,要为数据附带一个时间期限(由TTL指定),指定数据的有效期限。选择主服务器时,应该选择内存和磁盘空间都比较大的计算机。同时一台计算机可以作为某一个区的主服务器,同时可拟充当另外几个域的辅助域名服务器。配置主域名服务器需要一整套的文件,主域名服务器将通过引导文件/etc/named.boot或者named.conf来确认自己所服务的区以及数据保存在哪些区文件中。
(2)辅助域名服务器(Secondary Name Server)
辅助域名服务器可以从主域名服务器中获取一整套的域信息。所有的信息都是从主域名服务器中得到的,并将这些数据备份在本地的磁盘文件中。辅助域名服务器将在主服务器不能正常工作的情况下,起到备份的作用,从而提高了整套系统的可靠性。它将定期地对服务器上的数据进行更新(也即进行区文件的转移),从而保持与主域名服务器的一致性。在辅助域名服务器上由于保持了域的完整信息,因此也可以权威地回答域中客户机的查询。
配置辅助域名服务器不需要建立本地的区文件,可以从主域名服务器中下载。但是高速缓存文件和回送文件仍然是需要包括的。
(3)高速缓存服务器(Caching-only Server)
一个高速缓存服务器可以运行域名服务器的守护程序,但不具有本地的域名服务器的数据库文件。它从远程域名服务器取得每次查询的结果,并将这些结果保存到本地的缓存文件中,以后当需要查询相同信息的时候,就可以从缓存中直接获得结果。查询结果保存在缓存中的时间将由数据附带的"time-to-live"(TTL)来指定,当期满后,系统会自动删除这条结果。
高速缓存服务器可以使用转发服务器(forwarders)。转发服务器是连接了外部网络的服务器,将这些服务器的数据结合起来构成一个大型的DNS数据库。在这种模式下,高速缓存服务器首先向一个转发服务器提出查询请求,必要的话,后者会去查询别的服务器,以便获得数据。高速缓存服务器的配置相对简单,只需要一个高速缓存文件即可。但最常见的配置还包括一个本地回送文件。
有关上述3种域名服务器在具体进行配置时所需要的文件可以参考下表。
上述文件的主要功能如下:
Named.boot----这是DNS守护进程named在启动时查看的第一个文件;该文件设置一般的named参数,指向该服务器使用的域数据库信息的源。这类源可以是本地磁盘文件或远程服务器。Named使用此文件来决定数据库文件名及其在本主机和远程主机上的位置。
Named.ca----该文件指向根域名服务器,包含Internet的根域名服务器的名字和地址。使用此文件中维护的信息,一个域名服务器可以与根域名服务器联系,以解析名字询问。
Named.hosts----该文件定义了域名服务器管理的域,主要负责将主机名映射为IP地址。它是域数据生成和修改并传播到网络或Internet上其他服务器的地方。
Named.rev----该文件定义了管理名字的反向域in-addr.arpa,主要负责将IP地址映射到主机名。
Named.local----用于在本地转移回送地址,负责将localhost解析成地址127.0.0.1。
当Named守护进程启动时,读取named.boot文件,获得服务器的类型以及初始化数据信息。该文件保存了设置named的基本参数,同时指向该服务器使用的域数据库的信源。
BIND(Berkeley Internet Name Domain)即伯克利因特网名字域系统,它是互联网软件联合会(ISC)的开放源代码软件包,BIND提供了解析器和名字服务器软件,解析器做实际的查询工作而名字服务器则提供响应, UNIX目前使用的DNS服务器主要是依靠BIND软件来实现的。
BIND已经有三个主要版本:BIND4、BIND8和BIND9。
BIND4在20世纪80年代末期面世,BIND 8发布于1997年,而BIND9则发布于2000年中期。没有BIND 5、6和7的版本,BIND 8是如此意义重大的一个更新版本,以至于大家觉得是使用一个老版本号两倍的版本号,而事实上并非真的如此,BIND 8与4.4 BSD是一起发布,因而所有版本号都升为8;目前BIND最新的版本是BIND9.3.0。
BIND 8融入了许多能够提高效率、稳定性和安全性的先进技术。BIND9甚至走得更远,具有多处理器支持、线程安全操作、实时安全性(公开密钥加密)、IPv6支持、增量区传送和一些其他特性。
BIND9是彻底重新设计和重新实现的,它将代码中针对操作系统的特定部分独立出来,因此能更容易地将BIND移植到非UNIX系统上。BIND9的内部机制有了显著不同,但是其配置步骤却保持不变。
BIND系统由三部分组成:回答查询的称为named的守护进程;联系DNS分布式数据库的服务器解析主机查询的库例程;DNS的命令行接口:nslookup、dig和host。以DNS的术语来说,类似named的一个守护进程(或者运行它的机器)称为“名字服务器”,与其联系的客户端程序称为“解析器”。
named配置文件的格式在BIND4和BIND 8之间发生了彻底的变化,新格式类似于gated.conf的格式。配置文件名也变了:在BIND4中是/etc/named.boot,而在BIND 8和9中/etc/named.conf,缓存文件和数据文件的格式保持不变。