1、第14章 DNS服务器架设与应用,DNS(Domain Name System,域名服务系统)是Internet上用得最频繁的服务之一,它是一个分布式数据库,组织成域层次结构的计算机和网络服务命名系统。通过它人们可以将域名解析为IP地址,从而使人们能够通过简单好记的域名来代替枯燥难记的IP地址来访问网络。,14.1 DNS工作原理,DNS是一个分布式数据库,它在本地负责控制整个分布式数据库的部分段,每一段中的数据通过客户服务器模式在整个网络上均可存取,通过采用复制技术和缓存技术使得整个数据库可靠的同时,又拥有良好的性能。,14.1.1 名称解析方法,网络中为了区别各个主机,必须为每台主机分配一
2、个惟一的地址,这个地址即称为“IP地址”。但这些数字难以记忆,所以就采用“域名”的方式来取代这些数字了。在常见的计算机系统中,可以使用3种技术来实现主机名和IP地址之间的转换:Host表、网络信息服务系统(NIS)和域名服务(DNS)。 1Host表2NIS系统3DNS系统,14.1.2 DNS组成,整个DNS域名系统由以下3个部分组成。 1DNS域名空间2DNS服务器3解析器,14.1.3 DNS查询的过程,1本地解析2直接解析,14.1.3 DNS查询的过程,3递归解析4迭代解析,14.1.4 DNS报文格式,DNS报文由12字节长的首部和4个长度可变的字段组成。标识字段由客户程序设置并由
3、服务器返回结果,客户程序通过它来确定响应与查询是否匹配。,14.1.5 实际的DNS报文数据,在客户机利用域名访问一台主机时,首先要向所设的DNS服务器发送查询报文,以获得该域名所对应的IP地址,DNS服务器要根据具体情况返回给客户端应答。,14.2 BIND的安装与运行,Bind是最知名的域名服务器软件,它完整地实现了DNS协议规定的各种功能,可以在各种主流的操作系统平台上运行,并且被作为许多供应商的Unix标准配置封装在产品中。下面介绍一下有关Bind服务器软件的安装与运行方法。,14.2.1 BIND简介,Linux系统下架设DNS服务器通常是使用Bind程序来实现的。Bind是Berk
4、eley Internet Name Domain Service的简写,是一款架设DNS服务器的开放源代码软件。 Bind经历了第4版、第8版和最新的第9版,第9版修正了以前版本中的许多错误,并提升了执行时的效能。Bind能够运行在当前大多数的操作系统系统平台之上。,14.2.2 BIND的获取与安装,在Red Hat Enterprise Linux 5下安装BIND服务器可以有两种方式,一种是源代码方式安装,一种是RPM软件包方式安装。源代码可以从ftp:/ftp.isc.org处下载,目前最新的版本是9.5.0版,文件名是bind-9.5.0-P2.tar.gz。RHEL 5自带的BI
5、ND版本是9.3.9版,文件名是bind-9.3.3-7.el5.i386.rpm,在发行版的第2张盘上。 先看一下RPM方式安装。如果安装RHEL 5系统的时候没有选择安装bind-9.3.3-7.el5包,需要从第二张安装光盘把相应文件复到当前目录以后,再用以下命令安装。,14.2.3 BIND的简单配置与运行,与其它服务器相比,BIND的配置文件结构要复杂得多,而且在配置文件不正确的情况下,BIND将无法运行。为了使BIND能初步得到运行,下面先提供一套最简单的配置文件,使得BIND能正常地运行起来,并具有初步的域名解析功能。,14.2.4 chroot功能,chroot是Change
6、Root的缩写,它可以将文件系统中某个特定的子目录作为进程的虚拟根目录,即改变进程所引用的“/”根目录位置。chroot对进程可以使用的系统资源、用户权限和所在目录进行严格控制,程序只在这个虚拟的根目录及其子目录具有权限,一旦离开该目录就没有任何权限了,所以也将chroot称为“jail监禁”。,14.2.5 使用rndc,使用rndc可以在不停止DNS服务器工作的情况进行数据的更新,使修改后的配置文件生效。在实际情况下,DNS服务器是非常繁忙的,任何短时间的停顿都会给用户的使用带来影响,因此,使用rndc工具可以使DNS服务器更好地为用户提供服务。,14.3 BIND的配置,上一节提供了一个
7、简单的配置例子,使得BIND运行后具有初步的DNS服务器功能。本节先详细解释各种配置选项的含义,再通过几个例子使读者能配置相对复杂的DNS服务器。与其它大多数服务器不同的是,BIND配置需要较多的配置文件,而不是所有的配置都集中在一个配置文件里,因此相对要复杂些。,14.3.1 BIND的主配置文件,BIND主配置文件由named进程运行时首先读取,文件名为named.conf,默认在/etc目录下。该文件只包括Bind的基本配置,并不包含任何DNS的区域数据。 1acl语句 2controls语句 3include语句 4key语句 5logging语句 6options语句 7server
8、语句 8trusted-keys语句 9view语句 10zone语句,14.3.2 根服务器文件named.root,在主配置文件/etc/named.conf中,定义了一个根域,区文件是/var/named目录下的named.root文件。它是一个非常重要的文件,包含了Internet根服务器的名字和IP地址。Bind接到客户端的查询请求时,如果本地不能解释,也不能在Cache中找到相应的数据,就会通过根服务器进行逐级查询。,14.3.3 区域数据文件,一个区域内的所有数据,包括主机名和对应IP地址、刷新间隔和过期时间等,都必须要存放在DNS服务器内,而用来存放这些数据的文件就称为区域文件
9、。 1设置其它DNS服务器缓存本机数据的默认时间2设置起始授权机构3设置名称服务器NS资源记录4设置邮件服务器MX资源记录5设置主机地址A资源记录6设置别名CNAME资源记录,14.3.4 反向解析区域数据文件,反向解析区域数据文件的结构和格式与区域数据文件类似,只不过它的主要内容是建立IP地址映射到DNS域名的指针PTR资源记录。 1设置SOA和NS资源记录2设置指针PTR资源记录,14.3.5 配置DNS负载均衡功能,DNS负载均衡的优点是简单易行,而且实现代价小。它在DNS服务器中为同一个域名配置多个IP地址(即为一个主机名设置多条A资源记录),在应答DNS查询时,DNS服务器对每个查询
10、将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的计算机上去,从而达到负载均衡的目的。,14.3.6 直接域名、泛域名与子域,许多用户有直接使用域名访问Web网站的习惯,即在浏览器中不输入www等主机名,而是直接使用如http:/ 泛域名是指一个域名下的所有主机和子域名都被解析到同一个IP地址上。 子域(Subdomain),是域名层次结构中的一个术语,是对某一个域进行细分时的下一级域。,14.3.7 辅域服务器和只缓存服务器,在Bind服务器中,还可以根据需要配置辅域服务器和只缓存服务器,以便能更快地能为客户端提供DNS服务,并提高可靠性。 1辅域服务器2只缓存服务器,14.4 小结,DNS是Internet上必不可少的一种网络服务,它提供把域名解析为IP地址的服务,是每一台上网的电脑都必须要使用的服务之一。本章首先介绍了DNS的工作原理、DNS协议,然后介绍了用Bind软件架设DNS服务器的方法,包括Bind的安装、运行和配置,以及chroot、负载均衡、泛域名、辅域服务器、只缓存服务器等特殊功能的配置方法。,