学习情境2.1 DNS服务器架设
2.1.1 学习要点
1.知识点:理解域名空间结构及DNS域名服务概念与作用
2.技能点:掌握DNS的数据库文件配置,能对DNS进行服务测试与域名解析排错
2.1.2 任务描述
配置域名为sl232.cn的DNS,IP地址解析为172.17.4.232。要求建立“www.sl232.cn”、“ftp.sl232.cn”、“mail.sl232.cn”、“pop3.sl232.cn”、“smtp.sl232.cn”域名正反向解析正确。
添加备选DNS服务器IP为172.17.4.200,配置本机为cqvie.cn(172.17.4.200)域的辅助DNS服务器。
2.1.3 相关知识
1.DNS基本知识
DNS是域名系统(Domain Name Server)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。DNS命名用于Internet等TCP/IP网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与之相关的其他信息,如IP地址。因为,你在上网时输入的网址,是通过域名解析系统解析找到了相对应的IP地址,这样才能上网。其实,域名的最终指向是IP。
2.DNS系统的组成
DNS是基于客户/服务器模型设计的。本质上,整个域名系统以一个大的分布式数据库的方式工作。大多数具有Internet连接的组织都有一个域名服务器。每个服务器包含指向其他域名服务器的信息,结果是这些服务器形成一个大的协调工作的域名数据库。
每当一个应用需要将域名翻译为IP地址时,这个应用便成为域名系统的一个客户。这个客户将待翻译的域名放在一个DNS请求信息中,并将这个请求发给域名空间中的DNS服务器。服务器从请求中取出域名,将它翻译为对等的IP地址,然后在一个回答信息中将结果地址返回给应用。
因此,在概念上可以将DNS分为3个部分:
(1)域名空间。这是标示一组主机并提供他们的有关信息的树结构的详细说明。树上的每一个节点都有其控制下的主机的有关信息的数据库。查询命令试图从这个数据库中提取适当的信息。这些信息是域名、IP地址、邮件别名等在DNS系统中能找到的内容。
(2)域名服务器。他们是保持和维护域名空间中数据的程序。由于域名服务器是分布式的,每一个域名服务器含有一个域名空间自己的完整信息,并保存其他有关部分的信息。一个域名服务器拥有其控制范围内的完整信息。其控制范围称为区(Zone),对于本区内的请求由负责本区的域名服务器解释;对于不同区的请求将由本区的域名服务器与负责其他区的相应服务器联系。
(3)解析器。解析器是简单的程序或子程序库,它从服务器中提取信息以响应对域名空间中主机的查询,用于DNS客户。
3.Linux DNS分类
在Linux系统中,域名服务(DNS)是由柏克莱(Berkeley)的BIND(Berkeley Internet Name Domain)软件实现的。BIND是一个客户机/服务器系统。它的客户方面称为解析程序(resolv⁃er),它产生对域名信息的查询,将这类信息发送给服务器,DNS服务器回答解析程序的查询。BIND的服务是一个称为named(读作“name”“d”)的守护进程。
BIND可以配置成以几种不同的方法运行的DNS,常见的BIND配置是主DNS服务器、辅助服务器和反向DNS服务器。
(1)主DNS服务器
主DNS服务器(primary name server)是特定域所有信息的权威性信息源。它从域管理员构造的本地磁盘文件中加载域信息,该文件(区文件)包含着该服务器具有管理权的一部分域结构的最精确信息。主服务器是一种权威性服务器,因为它以绝对的权威去回答对其管辖域的任何查询。
(2)辅助DNS服务器
辅助DNS服务器(secondary name server)可从主服务器中复制一整套域信息。区文件是从主服务器中复制出来的,并作为本地磁盘文件存储在辅助服务器中。这种复制称为“区文件复制”。在辅助域名服务器中有一个所有域信息的完整拷贝,可以权威地回答对该域的查询。因此,辅助域名服务器也称为权威性服务器。
配置辅助域名服务器不需要生成本地区文件,因为可以从主服务器中下载该区文件。
(3)反向DNS服务器
如果自己拥有网络IP地址,就必须为IP地址做反向DNS。这样就可以根据IP地址反向解析出域名来。
一个域名服务器可以是上述配置中的任何一种,但经常是将多种配置类型的元素组合在一起。
4.DNS常用术语
DNS是一个很复杂的概念,下表列出了常用的DNS术语。
(1)域:代表网络一部分的逻辑实体或组织。
(2)域 名:主机名的一部分,它代表包含这个主机的域。它可以和域交换使用。
(3)主 机:网络上的一台计算机。
(4)节 点:网络上的一台计算机。
(5)域名服务器:提供DNS服务的计算机,它将DNS名字转化为IP地址。
(6)解 析:把一个域名转化为与其相应的IP地址的过程。
(7)解析器:从域名服务器中提取DNS信息的程序或库子程序。
(8)反向解析:将给出的IP地址转化为其相应的DNS名字。
(9)欺 骗:使网络看上去好象具有不同的IP地址或域名的行为。
5.DNS服务器配置文件
在Linux上的域名服务是由named守护进程来执行的,named最早是为BSD向客户机提供域名服务而开发的。named守护进程通常在系统启动时开始工作,并一直工作到系统关闭。
named配置文件如下所示:
/var/named/chroot/etc/named.conf:设置通用的named参数,指向该服务器使用的域数据库信息的源
/var/named/chroot/var/named/named.ca:指向根域名服务器。
/var/named/chroot/var/named/named.local用于在本地回环地址
DNS配置的主文件/var/named/chroot/etc/named.conf文件通常很小,只包括一些指向DNS信息源的信息。其中某些源是本地文件,其他则是远程服务器。下面我们将看到一个需要生成的每种类型文件的例子。
想要将域名服务器作为主DNS服务器、辅助DNS服务器还是反向DNS服务器,需要修改配置文件named.conf
(1)named.conf文件的配置选项
Directory:指定DNS文件所在的目录。
Master:以一个域名和一个文件名为参数。此选项声明named对指定的域具有控制权,并使named从指定的区域加载信息。
Hint:为named建立高速缓存信息。以一个域名和一个文件名为参数。域名通常用“.”指定。指定的文件包括一组称为服务器提示的记录,这些记录列出了根域名服务器的信息。
Forwarders:以一个域名服务器的列表作为参数。告诉本地域名服务器:如果它不能从它的本地信息中解析出地址,那么就与该列表中的服务器联系。
Slave:把本地域名服务器变成一个从属服务器。如果给出了此选项,那么本地服务器就试着通过递归查询来解析DNS名字。
(2)主服务器配置文件
我们以sl099.com域为例,说明主服务器的配置,下面将说明主服务器的named.conf配置文件:
options{
directory“/var/named”;//DNS区域文件存储目录
dump-file“/var/named/data/cache_dump.db”;//缓存文件存放区
statistics-file“/var/named/data/named_stats.txt”;//DNS统计数据存放点
//query-source address∗port 53;//源端口};
zone“sl099.com”IN{//定义sl099.com区域
typemaster;//定义为master主域,表示由本服务器来维护这个域数据库
file“lx10000.com.zone”;//定义该域的文件位置为/var/named/lx10000.com.zone};
zone“.”IN{//“.”表示根域,是整个互联网的根部
type hint;//指定域类型,hint表示初始化DNS域,由hint链接到根与服务器
file“named.ca”;//“named.ca”这个文件就是根域服务器链接文件
};
zone“localhost.”IN{//定义localhost正向解析区申明
typemaster;//定义为master主域,表示由本服务器来维护这个域数据库
file“localhost.zone”;//定义该域的文件位置为/var/named/localhost.zone
allow-update{none;};//不允许更新};
zone“0.0.127.in-addr.arpa.”IN{//定义localhost反向解析区申明
typemaster;
file“named.local”;
allow-update{none;};};
(3)辅助服务器配置文件
辅助服务器的配置与主服务器的配置不同,它使用slave语句代替master语句。
slave语句指向作为域信息源的远程服务器,以替代本地磁盘文件。下面的named.conf文件可以配置成为“sl099.com”域的辅助服务器:
zone“sl099.com”IN{
type slave;//本区域为辅助域名服务器
masters{172.17.2.5;};//列出使用的DNS主服务器主机地址是172.17.2.5
file“lx10000.com.zone”;};
zone“2.17.172.in-addr.arpa”IN{//定义sl099.com的反向解析区域
type slave;
masters{172.17.2.5;};
file“lx10000.com.rev”;};
(4)高速缓存DNS服务器配置文件
高速缓存服务器(caching-only server)可运行域名服务器软件,但是没有域名数据库软件。它从某个远程服务器取得每次域名服务器查询的结果,一旦取得一个,就将它放在高速缓存中,以后查询相同的信息时就用它予以回答。高速缓存服务器不是权威性服务器,因为它提供的所有信息都是间接信息。
对于高速缓存服务器只需要配置一个高速缓存文件,但最常见的配置还包括一个回送文件,这或许是最常见的域名服务器配置。
配置高速缓存域名服务器是很简单的。必须有named.conf和named.root文件,通常也要用到named.local文件。下面是用于高速缓存服务器的named.conf文件的例子:
options{
directory“/var/named”;};
zone“.”IN{
type hint;//hint:表示是互联网中根域名服务器;master:表示定义的是主域名服务器;slave:表示定义的是辅助域名服务器
file“named.root”;};
include“/etc/rndc.key”;
directory这一行告诉named到哪里去找寻文件。所有其后命名的文件都将是相对于此目录的。该文件告诉named去维持一个域名服务器响应的高速缓存,并利用named.ca文件的内容去初始化该高速缓存。该高速缓存初始化文件的名字可以是任何名字,但一般使用/var/named/chroot/var/named/named.root。使它成为一个高速缓存配置的原因,不是在该文件中使用一个hint语句,而是因为没有master和slave语句。
但是,在我们这个例子中却有一个master语句。事实上,几乎在每一个高速缓存的配置文件中都有这一个语句,它将本地服务器定义为它自己的回送域的主服务器,并假定该域的信息存储在named.local文件中。这个回送域是一个in-addr.arpa域(in-addr.arpa域用于指定逆向解析,也就是IP地址到DNS名字的解析),它将地址127.0.0.1映射为名字localhost。转换自己的回送地址对于大多数人都是有意义的,因为大多数的named.conf文件都包含这一项。
(5)DNS资源记录类型
配置named所需的所有文件(named.hosts、named.rev、named.local和named.ca)中的信息是以称为资源记录的形式存在的。每个资源记录都有一个类型,这个类型说明记录的功能。这些记录都是标准资源记录,称为RR(resource records)。表2.1.1列出了最常见的资源记录类型,其余的类型很少用到,如果感兴趣的话。请参考相应的RFC和帮助文件。
表2.1.1 常见标准资源记录

(续表)

(6)DNS的数据库文件
在/var/named/chroot/var/named目录建立区域的数据库文件,文件名与/var/named/chroot/etc/named.conf配置文件的区域数据文件名一致,如前面的lx10000.com.zone文件名。
本地域sl099.comDNS数据库文件,在文件中,所有的记录行都必须顶头写,前面不能有空格。“;”引导的是注释行。第一个有效行是“SOA”记录,这是每个数据库文件都必须有的。
配置sl099.com域的数据库文件/var/named/chroot/var/named/lx10000.com.zone,如下所示:
$TTL 86400
//生存时间记录字段。它以秒为单位定义该资源记录中的信息存放在高速缓存中的时间长度。
$ORIGIN sl099.com.
//origin:这个域的主域名服务器的规范主机名。用点“.”结尾的绝对主机名.@IN SOA www.sl099.com. root.localhost.(
//@是该域的替代符,在该文件中表示“sl099.com”
//SOA:告诉域名服务器它后面跟着的所有资源记录是控制这个域的(SOA)表示授与控制权
//负责维护这个域的管理员的电子邮件联系地址。因为@在资源记录中有特殊的意义,所以用点“.”代替这个符号。如果负责维护sl099.com的人是root,那么联系地址就是root.sl099.com
2009041301//这个区信息文件的版本号,它是一个整数。辅助域名服务器用它来确定这个区信息的文件是何时改变的。每次改变信息文件时都应该把这个数加1
28800//辅助域名服务器在试图检查主域名服务器的SOA记录之前应等待的秒数。SOA记录不经常改变,因此可以把这个值设置为一天
14400//辅助服务器在主服务器不能使用时,重试对主服务器的请求应等待的秒数
3600000//这是辅助服务器在不能与主服务器取得联系的情况下丢掉区信息之前应等待的秒数,一般应该设置成30天左右
86400( //当没有指定ttl资源记录时默认的ttl值)
NS sl099.com.//说明该域的域名服务器
MX 10 mail.sl099.com.//MX(Mail Exchanger)记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。数字10表示优先级别,数字越小,表示优先级越高

named.local文件可以将回送地址127.0.0.1转换成本地主机名,它是反向域0.0.127.INADDR.ARPA使用的区文件。由于所有系统都将127.0.0.1作为回送地址,该文件实际上对于每一个系统都是相同的。下面是从sl099.com上获取的一个典型的named.local文件:

(7)DNS服务器的启动
在配置好named.conf文件和所需的区文件之后,我们就可以启动named了。named通常是在系统引导时启动的,也可以使用下面命令启动:
#/etc/rc.d/init.d/named start
named就会开始运行,读取named.ca文件及其定义的任何区文件并将它的进程ID以ASCII码的形式写入/var/run/named.pid中,下载任何来自主服务器的区文件,如果有必要的话在端口53等待DNS请求。
如果named服务器已经在运行了,想要重新启动服务器,可以运行以下命令
#/etc/rc.d/init.d/named restart
如果不想重新启动named服务器,而只是想要重新加载配置文件和区域文件,可以运行以下命令:
#rndc reload
2.1.4 任务实施
配置域名为sl232.cn的DNS,IP地址解析为172.17.4.232。要求建立“www.sl232.cn”、“ftp.sl232.cn”、“mail.sl232.cn”、“pop3.sl232.cn”、“smtp.sl232.cn”域名正反向解析正确。
添加备选DNS服务器IP为172.17.4.200,配置本机为cqvie.cn(172.17.4.200)域的辅助dns服务器。
1.下载安装DNS系统配置工具软件
(1)从教学服务器ftp://172.17.4.100下载DNS的系统配置软件system-config-bind-4.0.3-2.el5.noarch.rpm到本地的Linux服务器上。
(2)用rpm指令安装DNS系统配置工具软件,会看到如图2.1.1所示的安装的进度显示。

图2.1.1 rpm指令安装示意图
(3)在X11图形化界面运行域名服务配置,对DNS进行初始化,目的让配置文件named.conf、数据库文件等自动生成。
系统→管理→服务器设置→域名服务系统,如图2.1.2所示。初始化结果如图2.1.3所示。

图2.1.2 域名服务配置
2.编辑DNS配置文件named.conf
(1)用vi编辑器打开named.conf配置文件。
[root@localhost~]#cd/var/named/chroot/etc/
[root@localhost etc]#vim named.conf
(2)添加备选DNS服务器为172.17.4.200,在options{}选项中加入forwarders{172.17.4.200;};目的告诉本地域名服务器:如果它不能从它的本地信息中解析出地址,那么就与该列表中的172.17.4.200服务器联系

图2.1.3 域名服务初始化结果
options{//服务器的全局配置选项以及一些默认配置
directory“/var/named”;//区域文件存储目录
forwarders{172.17.4.200;};//如果域名服务器无法解析时,将请求交由172.17.4.200来解析
dump-file“/var/named/data/cache_dump.db”;//缓存文件存放区
statistics-file“/var/named/data/named_stats.txt”;//DNS统计数据存放点
//query-source address∗port 53;//源端口};
(2)添加服务器的正向解析区域sl232.cn,性质为辅助服务器,主服务器地址在172.17.4.200,在options{};选项后添加如下内容:
zone“sl232.cn”IN{//定义sl232.cn区域
type slave;//定义该区域类型为辅助服务器
masters{172.17.4.200;};
file“zone.exp”;
allow-update{none;};//不允许更新};
(3)添加服务器的正向域sl232.cn的反向解析区域,性质为辅助服务器,主服务器地址在172.17.4.200,在named.conf文件中继续添加如下内容:
zone“4.17.172.in-addr.arpa”IN{//定义sl232.cn的反向解析区域
type slave;
masters{172.17.4.200;};
file“rev.exp”;
allow-update{none;};};
3编辑DNS配置数据库文件
(1)编辑数据库正向解析数据文件zone.exp
[root@localhost/]#cd/var/named/chroot/var/named/
[root@localhost named]#vim zone.exp
(2)正向解析数据文件编辑后的结果
$TTL 86400
$ORIGIN sl232.cn.
@IN SOA www.sl232.cn. root.localhost.(
2009041301
28800
14400
3600000
86400 )
NS sl232.cn.
MX 10 mail.sl232.cn.
www IN A 172.17.2.232
mail IN A 172.17.2.232
localhost IN A 127.0.0.1
ftp CNAME www
pop3 CNAME www
smtp CNAME www
www、mail是域名的主机记录,ftp、pop3、smtp是www的别名
(3) 编辑反向解析数据文件rev.exp
[root@localhost/]#cd/var/named/chroot/var/named/
[root@localhost named]#vim rev.exp
(4) 反向解析数据文件编辑后的结果
$TTL 86400
@IN SOA www.sl232.cn. root.localhost.(
2009041301
28800
14400
3600000
86400 )
NS sl232.cn.
232 IN PTR www.sl232.cn.//232是反向区域的指针记录
4.编辑本地DNS客户端配置文件
(1)用vi编辑器打开/etc/resolv.conf文件
#vim/etc/resolv.conf
(2)文件编辑后的结果
nameserver 172.17.4.232
nameserver 61.128.192.68
nameserver是DNS服务器地址。172.17.4.232是主服务器地址,负责sl232.cn的本地解析,如果要解析Internet上的域名地址,就用61.128.192.68来解析。
5.重启named服务并测试DNS
(1)重启named服务
#/etc/rc.d/init.d/named restart
停止named: [确定]
启动named: [确定]
服务正常启动
(2)测试正向解析www主机
#ping www.sl232.cn
PING www.sl232.cn(172.17.4.232)56(84)bytes of data.
64 bytes from station1(172.17.4.232):icmp_seq=1 ttl=64 time=0.026 ms
64 bytes from station1(172.17.4.232):icmp_seq=2 ttl=64 time=0.018 ms
(3)用nslookup指令对DNS进行交互测试
#nslookup
>www.sl232.cn//测试www.sl232.cn主机记录
Server: 172.17.4.232//查询www主机所对应的IP地址是172.17.4.232
Address: 172.17.4.232#53
Name: www.sl232.cn
Address:172.17.4.232
>172.17.4.232//测试172.17.4.232的反向指针记录
Server: 172.17.4.232
Address: 172.17.4.232#53
232.4.17.172.in-addr.arpa name=www.sl232.cn.
//查到172.17.4.232所对应的主机是www.sl232.cn
上述是对域名sl232.cn进行正向与反向解析测试,测试都返回了正确结果。
(4)mx邮件交换记录测试结果
>set q=mx//设置查询mx的邮件交换记录
>sl232.cn //mx的域名
Server: 172.17.4.232
Address: 172.17.4.232#53
sl232.cn mail exchanger=10 mail.sl232.cn.
测试结果发现sl232.cn域名的邮件服务器地址在mail.sl232.cn,这就是为什么我们的邮件信箱地址不写mail.sl232.cn,而用sl232.cn来取代mail.sl232.cn的原因,就是这个mx邮件交换记录起作用。
6.Windows客户端的DNS配置
(1)Windows下DNS服务器地址的指定
打开网络属性,配置TCP/IP
把DNS客户端IP设置为172.17.4.232
如图2.1.4所示为Windows下DNS服务器地址设置。

图2.1.4 Windows下DNS服务器地址设置
(2)Windows下的dns测试结果
C:》ping www.sl232.cn
正在Ping www.sl232.cn[172.17.4.232]具有32字节的数据:
来自172.17.4.232的回复:字节=32时间<1ms TTL=64
来自172.17.4.232的回复:字节=32时间<1ms TTL=64
来自172.17.4.232的回复:字节=32时间<1ms TTL=64
来自172.17.4.232的回复:字节=32时间<1ms TTL=64
172.17.4.232的Ping统计信息:
数据包:已发送=4,已接收=4,丢失=0(0%丢失),
往返行程的估计时间(以毫秒为单位):
最短=0ms,最长=0ms,平均=0ms
往返行程的估计时间(以毫秒为单位):
最短=0ms,最长=0ms,平均=0ms
以上结果表明sl232.cn域名能正常被解析出来。
2.1.5 考核要点
表2.2.2 DNS服务器架设考核要点

2.1.6 能力拓展
1.什么是域名空间?Internet上的DNS域名系统采用何种层次结构?
2.什么是域?什么是区域?二者有什么差别和联系?
3.DNS域名解析的方法有哪些?是如何实现域名解析的?
4.试用图示说明DNS域名的解析过程。
5.如何安装DNS服务器?
6.DNS有哪些属性设置?各有什么作用?
7.如何为DNS服务器的数据库区域设置老化清理?
8.如何在运行Windows xp的计算机上配置DNS客户端?
9.如何使用Nslookup命令来查询DNS服务器?

