第09章DNS服务的配置与应用本章导读DNS的概述DNS服务的安装安装chroot软件包配置主要名称服务器配置辅助名称服务器配置缓存Cache-only服务器启动和停止DNS服务DNS客户端的配置9.1DNS的概述DNS域名系统的简介DNS查询的工作原理DNS规划hosts文件Bind的简介DNS域名系统的简介网络中为了区别各个主机,必须为每台主机分配一个惟一的地址,这个地址即称为“IP地址”。但这些数字难以记忆,所以就采用“域名”的方式来取代这些数字了。当某台主机要与其他主机通信时,就可以利用主机名称向DNS服务器查询该主机的IP地址。整个DNS域名系统由以下4个部分组成。DNS域名系统的简介1.DNS域名空间2.资源记录3.DNS服务器4.DNS客户端DNS查询的工作原理当DNS客户端需要查询所使用的名称时,它会查询DNS服务器来解析该名称。客户端发送的查询消息包括以下3条信息:指定的DNS域名,必须为完全合格的域名(FQDN);指定的查询类型,可根据类型指定资源记录,或者指定为查询操作的专门类型;DNS域名的指定类别。DNS查询过程按两部分进行:名称查询从客户端计算机开始,并传送给本机的DNS客户服务程序进行解析;如果不能在本机解析查询,可根据设定的查询DNS服务器来解析名称。DNS查询的工作原理以上两种查询方式的具体工作过程如下。1.本地解析DNS查询的工作原理2.查询DNS服务器DNS查询的工作原理递归查询流程DNS查询的工作原理迭代查询流程DNS规划在网络中开始使用DNS之前,必须先划DNS域名称空间。名称空间规划包括确定要如何使用DNS命名和通过使用DNS要达到什么目的等。首先选择和注册一个可用于维护Internet上公司的一个顶级或二级域名作为父DNS域名,如example.com。其次,将父域名称与公司内使用的位置或公司名称组合起来形成其他子域名,如certer.example.com。在选择域名时必须符合RCF1123中的规定:所有大写字母(A~Z)、小写字母(a~z)、数字(0~9)和连字符(-)。hosts文件hosts文件是Linux系统中一个负责IP地址与域名快速解析的文件,以ASCII格式保存在“/etc”目录下,文件名为“hosts”。hosts文件包含了IP地址和主机名之间的映射,还包括主机名的别名。hosts文件的格式如下:IP地址主机名/域名Bind的简介Linux下架设DNS服务器通常是使用Bind程序来实现的。Bind是BerkeleyInternetNameDomainService的简写,它是一款实现DNS服务器的开放源码软件。Bind原本是美国DARPA资助伯克里大学(Berkeley)开设的一个研究生课题,后来经过多年的变化发展,已经成为世界上使用最为广泛的DNS服务器软件,目前Internet上绝大多数的DNS服务器有都是用Bind来架设的。9.2DNS服务的安装RedHatEnterpriseLinux安装程序默认没有安装DNS服务,应使用下面的命令检查系统是否已经安装了DNS服务或查看已经安装了何种版本。rpm-qbind如果系统还没有安装DNS服务。要安装DNS服务,可将RedHat安装盘放入光驱,加载光驱后在光盘的Server目录下找到DNS服务的RPM安装包文件bind-9.3.3-7.el5.i386.rpm,使用下面命令安装DNS服务。rpm-ivh/mnt/Server/bind-9.3.3-7.el5.i386.rpm8.3安装chroot软件包早期Linux服务都是以root权限启动和运行的,随着技术的发展,各种服务变得越来越复杂,导致BUG和漏洞越来越多。黑客利用服务的漏洞入侵系统,能获得root级别的权限,从而控制整个系统。为了减缓这种攻击所带来的负面影响,现在服务器软件通常设计为以root权限启动,然后服务器进程自行放弃root,再以某个低权限的系统账号来运行进程。这种方式的好处在于该服务被攻击者利用漏洞入侵时,由于进程权限很低,攻击者得到的访问权限又是基于这个较低权限的,因此对系统造成的危害比以前减轻了许多。8.3安装chroot软件包加载光驱后在光盘的Server目录下找到bind-chroot的RPM安装包文件bind-chroot-9.3.3-7.el5.i386.rpm,然后使用下面命令安装DNS服务。rpm-ivh/mnt/Server/bind-chroot-9.3.3-7.el5.i386.rpm8.4配置主要名称服务器主配置文件设置根区域设置主区域设置反向解析区域根服务器信息文件named.ca区域文件反向解析区域文件实现负载均衡功能实现直接解析域名实现泛域名的解析主要名称服务器的测试主配置文件Bind的主配置文件是/etc/named.conf,该文件只包括Bind的基本配置,并不包含任何DNS区域数据。options{directory/var/named;dump-file/var/named/data/cache_dump.db;statistics-file/var/named/data/named_stats.txt;};include/etc/rndc.key;设置根区域当DNS服务器处理递归查询时,如果本地区域文件不能进行查询的解析,就会转到根DNS服务器查询,所以在主配置文件named.conf文件中还要定义根区域。zone.{typehint;filenamed.ca;};设置主区域主区域用来保存DNS服务器某个区域(如:example.com)的数据信息。zoneexample.com{typemaster;fileexample.com.zone;allow-transfer{192.168.1.177;192.168.7.17;};};设置反向解析区域在大部分的DNS查询中,DNS客户端一般执行正向查找,即根据计算机的DNS域名查询对应的IP地址。但在某些特殊的应用场合中(如判断IP地址所对应的域名是否合法),也会使用到通过IP地址查询对应DNS域名的情况(也称为反向查找)。zone16.168.192.in-addr.arpa{typemaster;file192.168.16.arpa;allow-transfer{192.168.1.177;192.168.7.17;};};根服务器信息文件named.ca/var/named/named.ca是一个非常重要的文件,该文件包含了Internet的根服务器名字和地址,Bind接到客户端主机的查询请求时,如果在Cache中找不到相应的数据,就会通过根服务器进行逐级查询。由于named.ca文件经常会随着根服务器的变化而发生变化,因此建议最好从国际互联网络信息中心(InterNIC)的FTP服务器下载最新的版本,下载地址为。下载完后,应将该文件改名为named.ca,并复制到“/var/named/chroot/var/named/”目录下。区域文件一个区域内的所有数据(包括主机名和对应IP地址、刷新间隔和过期时间等)必须存放在DNS服务器内,而用来存放这些数据的文件就称为区域文件(区域数据文件使用“;”符号注释)。DNS服务器的区域数据文件一般存放在/var/named/目录下。区域文件/var/named/chroot/var/named/example.com.zone文件的完整例子。$ttl38400example.com.INSOAdns.example.com.admin.example.com.(200509050310800360060480038400)example.com.INNSdns.example.com.dnsINA192.168.16.177反向解析区域文件反向解析区域文件的结构和格式与区域文件类似,只不过它的主要内容是建立IP地址映射到DNS域名的指针PTR资源记录。在/var/named/chroot/var/named/192.168.16.arpa文件中定义反向解析区域。$ttl3600016.168.192.in-addr.arpa.INSOAdns.example.com.admin.example.com.(200509050310800360060480036000)16.168.192.in-addr.arpa.INNSdns.example.com.177.16.168.192.in-addr.arpa.INPTRdns.example.com.9INPTR负载均衡的优点是经济简单易行,它在DNS服务器中为同一个域名配置多个IP地址(即为一个主机名设置多条A资源记录),在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的计算机上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。例如,在企业网中需要使用3台内容相同的FTP服务器共同承担客户对网站的访问,它们的IP地址分别对应192.168.16.11、192.168.16.12和192.168.16.13。现只要在DNS服务器的区域文件中加入以下3条A资源记录,就可以实现3台FTP服务器网络负载均衡功能。ftpINA192.168.16.11ftpINA192.168.16.12ftpINA192.168.16.13实现直接解析域名DNS服务器默认只能解析完全规范域名FQDN,不能直接将域名解析成IP地址。为了方便用户访问,可以在DNS服务器的区域文件中加入下面一条特殊的A资源记录,以便支持实现直接解析域名功能。example.com.INA192.168.16.9或.INA192.168.16.9实现泛域名的解析泛域名是指一个域名下的所有主机和子域名都被解析到同一个IP地址上。可以在DNS服务器的区域文件末尾加入下面一条特殊的A资源记录(符号“*”是代表任何字符的通配符),以便支持实现泛域名解析功能。*.example.com.INA192.168.16.9或*INA192.168.16.9主要名称服务器的测试1.测试前的准备(1)启动DNS服务/etc/rc.d/init.d/namedstart(2)配置/etc/resolv.conf2.使用nslookup程序测试非交互式通常用于返回单块数据的情况,其命令格式为:nslookup[-选项]需查询的域名[DNS服务器地址]交互式通常用于返回多块数据的情况,其命令格式为:nslookup[-DNS服务器地址]8.5配置辅助名称服务器辅助名称服务器也可以向客户机提供域名解析功能,但它与主要名称服务器不同的是,它的数据不是直接输入的,而是从其他服务器(主要名称服务器或其他的辅助名称服务器)中复制过来的,只是一份副本,所以辅助名称服务器中的数据无法被修改。在一个区域中设置多台辅助名称服务器具有以