- 论坛徽章:
- 0
|
DNS(Domain Name Service)服务器是网络中我们随时都需要的服务器.在因特网上各个主机是由ip地址来标识地,但是这些数字十分难记,人们往往比较偏爱使用名字来访问各个网站,所以域名服务器在因特网中占有十分重要的作用.
一 DNS的原理
DNS提供的服务就是要将人们所熟悉的名字映射成IP地址.一般有两种机制来完成,一种是有主机表来完成,另一种是采用域名服务的守护进程(named , 或 in.namd)来实现.
1. 主机表机制
在INTERNET初期,名字服务是通过NIC(Network Information Center)中的一张大型的Internet主机表来完成的。这张表被称为NIC注册主机表。它存储在NIC的netinfo/hosts.txt文件中,它保存着所有已经注册的网站的主机名和ip地址。Hosts.txt的文件格式是
n NET : 26.0.0.0 : MILNET:
关键字: 网络地址 : 网络名
n HOST: 16.1.0.9 :WSL.DEC.COM : VAX : ULTRIX : TCP/SMTP:
关键字:主机地址 :主机名 :计算机:操作系统:服务名
n GATEWAY:18.10.0.4,18.26.0.138:GW.LCS.MIT.EDU:VAX:CGW:IP/GW,EGP
关键字 :网关地址 : 网关名 :计算机:操作系统:服务名
大家可以看到hosts.txt文件中前两个关键字(网络记录和主机纪录)在linux系统中就分为两张表/etc/networks和/etc/hosts。
下面就举一个/etc/hosts的例子:
#********************************************************************
#*/etc/hosts Table of IP addresses and host names *
127.0.0.1 localhost loghost loopback
202.117.1.8 bbs bbs.xjtu.edu.cn
202.117.1.24 ftp ftp.xjtu.edu.cn
202.112.11.130 dns dns.xnaet.edu.cn
202.117.1.13 www www.xjtu.edu.cn
#********************************************************************
现在解释一下/etc/hosts各个纪录的含义。127.0.0.1 是一个ip地址,localhost 是对应于127.0.0.1的主机名,loghost和loopback 是它的别名,主机名和别名都会被解析到同一个ip地址,也就是127.0.0.1。
/etc/networks 的范例文件是
#*******************************************************************
# The networks file associates Internet Protocol (IP) network numbers
# with network names. The format of this file is:
#
# network-name network-number nicnames . . .
#
#
# The loopback network is used only for intra-machine communication
loopback 127
#
# Internet networks
#
arpanet 10 arpa # Historical
milnet 26 mil
#******************************************************************
现在解释一下/etc/networks的纪录格式,arpanet 是网络名,10 是网络地址,arpa是网络别名。
大家也可以看到,随着Internet中主机数目的增加,主机表机制已经越来越不适应发展,在一张有这几万条纪录的主机表中,名字和ip地址映射查找地效率将很低,所以大多数的主机表系统已经被DNS所取代。但是主机表系统在小型网络中仍然十分有用,在小型网络中,由于主机的数目比较少,并且由于主机的信息变化比较少,所以采用配置和维护的主机系统就比较有效。另外,主机表对NIS系统也十分重要。现在通常采用NIS和DNS同时使用,取长补短。
2. DNS原理
DNS实际上是一个分布式的数据库系统,它是有层次结构的系统,DNS并没有一张保存着所有的主机信息的主机表,相反,这些信息是存放在许多分布式的域名服务器中,这些域名服务器组成一个层次结构的系统,顶层是一个根域(root domain),它使用符号点号”. “来表示。其实,域的概念和我们地理上的行政区域管理的概念是类似地,一个国家行政机构包括中央政府,(就相当于根域)和各个省份的省政府(第一级域名),省政府之下又包括许多市政府(第二级域名),市政府之下包括许多县政府(第三级域名),等等依次类推,每一个下级子域都是上级域的子域。每个域都有自己一组的域名服务器,这些服务器中保存着当前域的主机信息和下级子域的域名服务器信息。例如根域服务器不必知道根域内所有主机的信息,它只要知道所有子域的域名服务器的地址即可。
第一层域一般有两种类型,一种是地理域,另一种是机构域,地理域是通过地理区域来划分域名,例如中国的地理域名是CN,日本是JP,香港是HK,美国一般不使用地理域名;机构域是根据注册的机构类型来分类,机构类的类型为:
n Com 商业机构
n Edu 教育机构
n Gov 政府机构
n Mil 军事机构
n Org 一些国际组织和一些非盈利性组织等等
n Net 网络服务提供商
下图就表示了域名的层次结构:
图一 DNS的层次结构
在图一中包括了地理域和机构域两种类型,其中地理域是以中国为例说明的,机构域是以com举例说明的。如上图所示,www.china-pub.com 标明了Internet上的一个主机,com是一级域,china-pub是二级域,www,mail,dns都是主机名,用以标明主机的服务类型。这个例子就形象的说明了域名系统的层次结构和分层管理机制。
在上面介绍了域的概念和域的层次结构之后,就可以了解dns的工作原理和过程,dns的工作过程是:
a) 客户机提出域名解析请求,并将该请求发送给本地的域名服务器.
b) 当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回.
c) 如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址.
d) 本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址.
e) 重复第四步,直到找到正确的纪录.
f) 本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机.
让我们举一个例子来详细说明解析域名的过程.假设我们的客户机想要访问站点www.china-pub.com,本地的域名服务器是dns.xjtu.edu.cn ,一个根域名服务器是NS.INTERNIC.NET,所要访问的网站的域名服务器是dns.china-pub.com,域名解析的过程如下:
(1)客户机发出请求解析域名www.china-pub.com.的报文
(2)本地的域名服务器收到请求,查询本地缓存,假设没有该纪录,则本地域名服务器dns.xjtu.edu.cn则向根域名服务器ns.internic.net发出请求解析域名www.china-pub.com.
(3)根域名服务器ns.internic.net.收到请求后查询本地纪录得到如下结果,china-pub.com NS dns.china-pub.com,同时给出dns.china-pub.com的地址,并将结果返回给域名服务器dns.xjtu.edu.cn.
(4).域名服务器dns.xjtu.edu.cn 收到回应后,再发出请求解析域名www.china-pub.com报文.
(5)域名服务器 dns.china-pub.com收到请求后,查询本地纪录找到一条纪录如下: www.china-pub.com A 211.100.6.143,并将结果返回给域名服务器dns.xjtu.edu.cn
(6)域名服务器将返回的结果保存到本地缓存,同时将结果返回给客户机.
这样就完成了一次域名解析过程.
3. DNS和NIS的区别和联系
NIS(Network Information Service网络信息服务)和DNS是类似的,都是一个数据库系统,它是由sun公司提出概念并开发出来的.他们都解决了主机表机制中主机表庞大的缺点,但是NIS适用于局域网中提供名字服务,同时NIS不仅仅提供名字服务,它还将几个系统的文件影像成为可以查询的数据库,例如/etc/hosts和/etc/networks就是这样的文件,可以供NIS客户机使用.在Internet中DNS依然占有绝对的地位,但是同时有些系统却同时使用/etc/hosts来进行名字服务.在linux系统中还有一个文件十分重要,它就是/etc/nsswitch.conf,这个文件是系统数据库和名字服务交换配置文件.
它的一个样例是 /etc/nsswitch.conf
######|###################################################################
passwd: files nisplus nis
shadow: files nisplus nis
group: files nisplus nis
hosts: files dns nisplus nis
services: nisplus [NOTFOUND=return] files
networks: nisplus [NOTFOUND=return] files
protocols: nisplus [NOTFOUND=return] files
rpc: nisplus [NOTFOUND=return] files
ethers: nisplus [NOTFOUND=return] files
netmasks: nisplus [NOTFOUND=return] files
######|###################################################################
在这个文件中,包括几个关键字例如host, network ,passwd,group,等等,这些关键字的合法取值是nisplus(代表nis 版本3), files(代表使用本地文件),dns(代表使用dns系统),nis(代表使用nis 版本2)等等.我们在这里仅仅介绍host的关键字,语句
hosts: files dns nisplus nis 的含义是在查找主机名字时首先查找本地的文件,也就是/etc/hosts文件, 然后再使用DNS进行域名解析.再使用nis 第三版,最后使用nis的第二版本来进行名字服务.(注[NOTFOUND=return]含义是如果在这条语句出现之前查询没有结果,则停止查询.)
二.域名服务器的配置
域名服务系统一般都是采用软件bind(伯克利网间名域)来实现地,它一般可以可以分为两种类型:一种是转换程序,另一种是名字服务器进程.转换程序是形成域名查询的软件,名字服务器是对域名解析查进行响应地进程.
bind软件一般是所有linux版本的缺省配置,所以安装就可以省略.但是它的配置就比较复杂,在进行配置之前我们要先了解一下域名系统的四种类型:
(1)唯转换程序系统: 在bind软件中,所有系统都要使用转换程序,但是不一定都要运行名字服务器,这些仅仅运行转换程序的系统,自身是无法获得域名信息的,必须依靠其它域名服务器系统来获得域名信息,这就叫做唯转换程序系统.它一般依赖文件/etc/resolv.conf来实现转换.
(2)主域名服务器: 在一个域中,一般有一台域名服务器保存着该域中所有主机的域名信息,这些信息是保存在这台主域名服务器中的,它可以响应有关于该域的域名解析请求.
(3)辅助域名服务器: 辅助域名服务器的配置和主域名服务器是相同的,它们的区别仅仅在于辅助域名服务器要从主域名服务器中转移整个数据库文件,并且定期从主域名服务器中取特定的数据库文件.
(4)唯缓存域名服务器: 在这种域名服务器中,我们仅仅需要配置缓存文件,唯缓存服务器从其它的域名服务器中获得域名信息,然后在自己的缓存中增加该条纪录,以备下一次域名解析请求使用.
1.唯转换程序的配置
在唯转换程序中,我们需要配置文件/etc/resolv.conf. resolv.conf是一个独立的文件,它可以告诉解析器库在使用BIND软件进行主机查找时,必须使用哪个名字服务器。如果这个文件不存在或是空的,那么解析器就假设名字服务器在你本地的主机上(这是我们下面将要介绍的情况)。
resolv.conf文件中最重要的选项是nameserver,它给出了要使用的名字服务器的IP地址。如果你使用多个nameserver选项来指定几个名字服务器,那么它们会以给出的顺序一个个尝试。因此,你应该首先给出最可靠的服务器。在目前的版本中,最多支持三个名字服务器。
如果没有给出nameserver选项,那么解析器试图连接本地主机上的名字服务器。
如果在nameserver选项中指定的ip地址是本机地址(例如127.0.0.1),则域名解析器依然会把本机作为名字服务器.
其它两个选项,domain和search涉及到如果BIND软件不能用第一个请求解析主机名时,转换程序会自动附加在主机名上的缺省域。search选项指定了一个试用的域名列表。列表项是用空格或制表符分开的。 如果没有给出search选项,转换程序就会通过使用域名本身,从本地域名直到根域中建立一个搜寻列表。本地域名可以使用domain语句给出;如果没有给出domain,那么解析器就通过系统调用getdomainname(2)来获取本地域名。
下面就举一个resolv.conf的样例文件:
########################################################################
# /etc/resolv.conf
# Local domain
domain xjtu.edu.cn
#
# First we use dns.xjtu.edu.cn as central nameserver:
nameserver 202.117.0.20
# Second we try the dns.xanet.edu.cn as nameserver:
nameserver 202.112.11.130
当解析名字www.china-pub时,解析器将首先查询域名服务器202.117.0.20,如果查询失败,则再使用域名服务器202.112.11.130进行查询。如果查询www,由于两个域名服务器都不可能返回域名请求,则必须要求转换程序自动将本地域名xjtu.edu.cn (通过选项domain xjtu.edu.cn得到)加到主机名中,于是查询的域名信息是www.xjtu.edu.cn.然后由域名服务器返回查询的结果是202.117.1.13.
2. named的配置
named(或者in.named)就是名字服务器进程,由它来响应域名解析请求.在配置named的时候,需要重点了解如下几个文件,可以说域名服务器的配置就全在这几个文件中.
named.boot文件---------这个文件中保存着运行named的配置参数,包括相关文件的位置等等.
named.local文件---------这个文件用于本机的名字服务,即把回送地址(127.0.0.1)解析为本地主机名(localhost).
named.ca 文件---------这个文件是高速缓存文件,其中包含指向根域的纪录.
named.hosts 文件---------这个文件就是域名解析的主要文件,即把域名映射成为ip地址.
named.rev 文件----------这个文件就是反向域名解析的主要文件,即把ip地址解析成为域名.
不同类型的域名服务器所需的文件也是不相同的,主域名服务器和辅助域名服务器的配置是相同的,它们和唯缓存的域名服务器是不相同的.主域名服务器需要以上介绍的所有文件,但是唯缓存的域名服务器却仅仅需要named.ca和named.boot文件,有时也会使用named.local文件,所以唯缓存的域名服务器的配置就比较简单.
下面就先介绍一下named的参数配置文件named.boot. .named.boot文件通常很小并且只包括指向DNS系统主文件的指针、以及指向名字服务器的指针。该boot文件中的注释行以一个分号开始一直延续到下一个新行开始。在我们详细讨论named.boot的格式之前,让我们首先讨论一下in-addr.arpa域.in-addr.arpa域又被称为反向解析域,其作用就是把ip地址映射成为域名.in-addr.arpa是一个固定的符号标志,然后将网络地址翻转后写在in-addr.arpa之前即可组成in-addr.arpa的域名.举例来说,网络名称(xjtu.edu.cn西安交通大学校园网)的网络地址是202.117.0.0,则它的in-addr.arpa的反向域名是117.202.in-addr.arpa.
那么下面我们就看一下named.boot的样本文件。
#########################################################################
;
; /etc/named.boot file for xjtu.edu.cn
;
directory /var/named
;
; domain file
;---------------------------------------------------
cache . named.ca
primary xjtu.edu.cn named.hosts
primary 0.0.127.in-addr.arpa named.local
primary 117.202.in-addr.arpa named.rev
在named.boot文件中,一般有如下几个命令:primary,secondary,cache,forward,
slave,directory,sortlist,domain和两个指令$include ,$origin;下面我们就主要介绍一下以上常用的命令
primary 它是一个非常重要的命令,它将这个域名服务器指定为主域名服务器.它的参数是一个域名(domain name)和一个文件名(file name)。作为一个主域名服务器,named从主文件(named.hosts)中装入域名信息。一般说来,每个named.boot文件中至少有一个primary项,即用于网络127.0.0.0的逆向映射,该网络是本地回送(loopback)网络。特别地,在配置的域名服务器是一个唯缓存服务器时,named.boot文件仅仅需要一个primary命令.
secondary 它将域名服务器指定为辅助域名服务器.域名(domain name)、地址列表(address list)和一个文件名(file name)是secondary的参数。一个辅助服务器同样也掌有该域的授权数据,但它不是从本地文件中得到的,而是从主服务器中下载来的。因此至少一个主服务器的IP地址必须在named的地址列表中给出。辅助域名服务器将联系每个主服务器直到它成功地将区域数据库传输过来,这个域信息数据库然后被保存在第三个参数指定的备份文件中。如果所有主服务器都没有响应,辅助服务器就从备份文件中取回域数据。此后,named将定期刷新区域数据。
cache cache是非常特殊的项并且实际上应该在所有运行名字服务器的机器上存在。它的功能有两个:它指示named激活它的缓冲,并从指定的缓冲文件中装入根域名提示。文件named.ca包含了根服务器提示,它是一个指向根名字服务器的一张列表。只有NS和A记录将被识别。cache命令将域(domain)和文件名(file name)作为参数。domain参数通常是根域名“.”。对named来说这个信息是绝对至关重要的:如果named.boot文件中没有cache语句,named将完全不会产生一个本地缓冲。如果下一个服务器请求不在本地网上,这将严重地降低性能以及增加网络负荷。更为严重的是,named将不能到达任何根名字服务器,因而,除了那些它确切知道的域名信息,它将不能解析任何地址。这个规则的一个例外是使用转发服务器(cf. 下面的forwarders选项)。
forwarders 这个语句将一个地址列表(address list)作为参数。这个列表中的IP地址指定了在named不能从本地缓冲中解析一个查询时可能会查询的名字服务器的一个列表。它们会被顺序地试用直到其中一个服务器对查询作出响应。
slave 该语句使得名字服务器成为一个从服务器。也即,它本身将永不执行递归查询,但只是将查询转发到forwarders语句指定的服务器上。
directory 它定义了区域文件存储的目录。文件名可以用与该目录相关的形式给出。通过重复使用directory可以指定几个目录。根据Linux文件系统标准,这应该是/var/named。
前面我们曾经讲过,唯缓存的域名服务器的配置和主域名服务的配置是不同的.在唯缓存域名服务器中,并不需要named.hosts和named.rev文件,所以在named.boot中我们仅仅需要如下配置
;
; an example file of named.boot for cache only name server
;
primary 0.0.127.in-addr.arpa /etc/named.local
cache . /etc/named.ca
大家一定要记住,在named.boot中使用命令cache并不是指明该服务器是唯缓存服务器的关键,关键是在named.boot文件中没有primary和secondary选项,(除了回送地址的选项).实际上,所有的named.boot文件中都有cache命令.
在介绍DNS的数据库文件之前,我们首先了解一下在这些文件重要使用的标准资源纪录. 资源记录(resource records),简称RR是dns数据库文件中所包含数据的组成部分。它们构成DNS中的最小的信息单元。每一种资源记录都有一个类型。例如,A标记将一个主机名映射到一个IP地址、一个CNAME标记将一个主机的别名与它的正式主机名相关联。
dns域名数据库文件中的资源记录表示法共享一个通用的格式,它是
[name] [ttl] [class] type data
各域用空格或制表符分开。一个项可以连续跨过几行,分号是注释标记,在分号和下一行之间的文字是注释信息,都将被忽略。
name 资源纪录引用的域的名字,可以是一台主机,也可以是一个域.如果该字段是以点号’.’结束,则表明该域是一个绝对的域名,否则就是在本地域基础上的域名。如果没有给出这个字段,那么该RR假定应用于前一个RR的域。
ttl 为了迫使解析器在一段时间后放弃信息,每个RR有一个相应的“生命周期”(“time to live”),或简称ttl。ttl域用秒来指定从服务器取得的信息有效的时间。它是一个最多八位的十进制数。通常该字段为空,那么它的缺省值是前面SOA记录中所设定的值。
class 这是一个地址类,正如IP地址的IN,Hessiod(麻省理工学院开发的名字服务器)类中对象的HS,choasnet的类信息是由标记CH表示。对于TCP/IP网络来说,你必须设置class为IN。人们一般都设置该字段的值为IN.
type 它描述了标准资源的类型。最常见的纪录类型是A、SOA、PTR以及NS。
data 它保存与RR相关的数据。这个域的格式和内容依赖于RR的类型。例如在A纪录中,对应的data值是ip地址,而在NS纪录中相应的值是域名。
下面我们就逐个介绍一下标准资源纪录:
SOA (start of authority)管理开始纪录,它描述了一个授权区域。它表示紧跟在SOA RR后面的记录包含有对该域的授权信息。在文件named.boot中每一个用primary语句包括的dns数据库文件在此区域必须含有一个SOA记录。它的记录的格式是:[zone] [ttl] IN SOA origin contact(
Serial
Refresh
Retry
Expire
Minimum
)
在SOA纪录中,zone的值一般是用符号”@”表示,它代表着在named.boot中有一条primary纪录指明的域名。Ttl字段在SOA纪录中也是一般为空。
orign 这是该域的主域名服务器的主机名。它通常用一个完全的名字给出。例如dns主机是xjtu.edu.cn域中主域名服务器,则在SOA的origin字段中要给出完整的名字是dns.xjtu.edu.cn。
contact 这是维护该域的管理员的email地址。用一个点替换掉了在email中的“@”字符。例如,交通大学域的管理员是administrator,那么这个字段域将含有administrator.xjut.edu.cn。
serial 这是一个用单个十进制数表示的区域文件的版本号数。每当区域文件中的数据改变时,就必须增加该字段的值。辅助名字服务器还可以通过这个字段识别区域信息是否改变。为了保持最新,辅助域名服务器在一定间隔时间后就请求主域名服务器的SOA记录,并且将该序列号值与本身缓冲中的SOA记录的序列号值相比较。如果发现序列号的值增加了,辅助服务器就必须从主服务器将整个区域数据库传输过来。
refresh 它指定了辅助服务器在检查主服务器的SOA记录是否更新之前所要等待的一个以秒计的间隔时间。同样地,这是一个最多八位的十进制数。由于网络的拓扑结构不会经常性地改变,所以对于大型网络来说,这个数应该指定为大约一天左右。否则,如果更新太快,虽然会使辅助域名服务器和主域名服务器的纪录几乎保持一致,但是这样会加重网络和服务器的负担。
retry 它确定了在辅助域名服务器在和主域名服务器连接失败之后,应该等待一定的时间间隔后才能再此连接主域名服务器。它也是一个最多八位的十进制数,单位是一秒钟。该字段不应该太小,否则一个临时的服务器失败或网络问题将导致辅助服务器反复连接,不仅浪费了网络资源,同时可能什么结果也得不到。一个小时(3600)、或者一个半小时(1800),是一个好的选择。
expire 它以秒指定了一个时间值,在这个时间过后,如果服务器还不能联系到主要服务器的话,它最终将丢弃所有的区域数据。这个时间值通常应该很大。建议设置为42天。
minimum 这是对于没有明确指定ttl的所有资源记录的一个缺省的ttl值。这是一个八位的十进制数,单位是一秒钟,它指明了该标准资源记录在其他的服务器中所能够保存的时间。然而,它与辅助服务器开始尝试更新区域信息所必须等待的时间无关。Minimum应该是一个很大的值。一周或一个月的值是一个很好的选择。对于单个RR可能经常改变的情况,你仍可以给它们一个不同的ttl值。
下面是一个样例设置:
@ IN SOA dns.xjtu.edu.cn administrator.xjtu.edu.cn. (
1999022700 ; Serial 1999年2月27日
43200 ; Refresh 一天更新两次
3600 ; Retry 一个小时后重试
3600000 ; Expire 1000个小时过期
604800 ; Minimum ttl 是一个星期
)
A 地址纪录(address)。 该字段将一个主机名解析为对应IP地址。其格式为
[host] [ttl] IN A address
资源数据域包含是ip地址。对于每一台主机,只能有一个A记录。用于这个A记录的主机名被认为是正式的或规范的主机名。所有其它主机名都是别名,并且必须使用一个CNAME记录映射到这个规范的主机名上。如果host没有使用符号“.”,则主机名是在本地的域名基础上的名字,如果使用”.”结束,则表明该主机名是一个绝对域名。
举例如下: www IN A 202.117.1.13
dns.china-pub.com. IN A 211.100.6.143
NS 名服务器纪录(name server).这指向一个本区域的一个二级子域的主名字服务器。就是这条纪录组成了dns系统中的层次结构。为了解析这个主机名,必须另外给出一个A记录,指明NS主机的地址。它的格式为:
[domain] [ttl] IN NS server
举例如下: xjtu.edu.cn. IN NS dns.xjtu.edu.cn.
CNAME 它将一个主机的别名与它的正规(或规范)主机名相关联。规范主机名就是主文件为其提供一个A记录的主机名;别名只是通过一个CNAME记录简单地联结到规范主机名上,但它们本身没有任何其它的记录。
PTR 域名指针纪录.这个类型的记录用于将域名解析为ip地址。它将域名和in-addr.arpa域相关联。其格式是:
Name [ttl] IN PTR host
举例如下: 交通大学的反向域名是117.202.in-addr.arpa。
43.48 IN PTR reserch.xjtu.edu.cn
把域名reserch.xjtu.edu.cn反向解析为202.117.48.43.
MX 邮件交换器(mail exchanger)。它为本域指明了一个邮件服务器,所有到达本域的邮件将会重定向到邮件服务器上。MX记录的句法是
[name] [ttl] [class] MX preference host
host 为name命名邮件交换器。每个邮件交换器有一个整数preference(优先权)与之关联。一个想要将邮件分发到name的邮件传输代理会试用所有针对这个域的MX记录的主机,直到成功为止。具有最低优先权值的将首先试用,然后按着优先权值的增大顺序试用其它主机。
举例如下:
IN MX 10 dns.xajump.edu.cn.
HINFO 这个记录提供了有关系统硬件和软件的信息。它的句法是
[host] [ttl] [class] HINFO hardware software
hardware(硬件)字段确定主机所使用的硬件。Software(软件)字段指定系统所用的操作系统软件。总的说来这个纪录并不常用。
在介绍了标准的资源纪录之后,dns的几个重要的数据库文件也就非常容易理解了,下面我们就通过一个实例来具体说明named的配置。
3.配置的named.的实例
第一步,在你的linux系统中以超级用户身份登录。
第二步,编辑/etc/named.boot文件,使用命令#vi /etc/named.boot
directory /var/named # 指定配置文件目录
cache . named.ca # 缓存文件名
primary xjtu.edu.cn named.hosts #本子域正向解析文件
primary 117.202.in-addr.arpa named.rev #反向解析文件
primary 0.0.127.in-addr.arpa named.local #回送地址解析文件
在本例中,域名是xjtu.edu.cn,对应的反向域名是117.202.in-addr.arpa。
其实,named.ca ,named.hosts,named.rev和named.local文件的名字是可以随便改变的,只要你在named.boot文件中指定,并且在储存配置文件的目录中有对应的文件即可,例如named.boot文件可以更改为如下:
directory /var/named # 配置文件目录
cache . named.ca # 缓存文件名
primary xjtu.edu.cn named.xjtu.hosts #本子域正向解析文件
primary 117.202.in-addr.arpa named.xjtu.hosts #反向解析文件
primary 0.0.127.in-addr.arpa named.local #会送地址解析文件
第三步,生成named.local文件
在世界上所有的dns服务器上的named.local文件几乎都是一样的,所以我们只要从任何一个主机上下载这个文件就可以了。范例文件如下:
@ IN SOA dns.xjtu.edu.cn. root.xjtu.edu.cn. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS 127.0.0.1.
1 IN PTR localhost.
大家可以在这个文件中看到有一个SOA纪录和一个PTR纪录,我们仅仅需要修改SOA纪录中的域名信息和管理员邮件地址字段。
第四步 生成/named.ca文件
named.ca文件也是十分相似的,它必须要提供根域名服务器的名字和地址,范例文件如下:
; This file holds the information on root name servers needed to
; initialize cache of Internet domain name servers
; (e.g. reference this file in the "cache . 〈file〉"
; configuration file of BIND domain name servers).
;
; This file is made available by InterNIC registration services
; under anonymous FTP as
; file /domain/named.root
; on server FTP.RS.INTERNIC.NET
; -OR- under Gopher at RS.INTERNIC.NET
; under menu InterNIC Registration Services (NSI)
; submenu InterNIC Registration Archives
; file named.root
;
; last update: Aug 22, 1997
; related version of root zone: 1997082200
;
;
; formerly NS.INTERNIC.NET
;
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
;
; formerly NS1.ISI.EDU
;
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107
;
; formerly C.PSI.NET
;
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
;
; formerly TERP.UMD.EDU
;
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
;
; formerly NS.NASA.GOV
;
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
;
; formerly NS.ISC.ORG
;
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
;
; formerly NIC.NORDU.NET
;
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
;
; temporarily housed at NSI (InterNIC)
;
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10
;
; housed in LINX, operated by RIPE NCC
;
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
;
; temporarily housed at ISI (IANA)
;
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
;
; housed in Japan, operated by WIDE
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
; End of File
在这个文件的前部,注明了本文件的出处,(我是从FTP.RS.INTERNIC.NET下载的)它是由interNIC给出的根域信息,在文件的其余部分,就逐个列出了各个根域服务器,例如:
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
第一行,符号”.”指明了根域, 360000 是ttl, NS 指明了域名服务器的域名是
M.ROOT-SERVERS.NET. 。第二行指明了M.ROOT-SERVERS.NET.的地址是202.12.27.33。
Named.ca文件一般不需要我们进行修改。
第五步 生成named.hosts文件
在我们的named.boot文件中指定的是一个主域名服务器,所以在named.hosts文件中我们配置如下:
@ IN SOA dns.xjtu.edu.cn. root.xjtu.xajump.edu.cn. (
990930
10800
1800
604800
604800 ) ;
IN NS dns.xjtu.edu.cn.
IN MX 10 mail.xjtu.edu.cn.
dns IN A 202.117.0.20
mail IN A 202.117.1.21
www IN A 202.117.1.13
ftp IN A 202.117.1.24
在这个文件中,我们设置四台主机dns.xjtu.edu.cn ,mail.xjtu.edu.cn,www.xjtu.edu.cn和ftp.xjtu.edu.cn 的域名信息。其中NS 指明域xitu.edu.cn 的域名服务器是dns.xjtu.edu.cn.
MX字段指明域xjtu.edu.cn的邮件服务器是mail.xjtu.edu.cn。A 字段指明了这几台主机域名对应的ip地址。
第六步 生成named.rev文件
同named.hosts文件一样,只不过named.rev是一个反向的域名解析文件。范例文件如下:
@ IN SOA dns.xjtu.edu.cn. root.xjtu.xajump.edu.cn. (
990930
10800
1800
604800
604800 ) ;
IN NS dns.xjtu.edu.cn.
20.0 IN PTR dns.xjtu.edu.cn.
21.1 IN PTR mail.xjtu.edu.cn.
13.1 IN PTR www.xjtu.edu.cn.
24.1 IN PTR ftp.xjtu.edu.cn.
第七步 修改/etc/resolv.conf文件
配置转换程序文件,/etc/resolv.conf的范例文件是
domain xjtu.edu.cn
nameserver 127.0.0.1
nameserver 202.117.1.9
在这个文件中首先指明本域是xjtu.edu.cn。第一个域名服务器是本机127.0.0.1.第二个域名服务器是202.117.1.9。
第八步 启动named进程
在配置好上述所有文件后,即可运行named进程,来等待dns请求。使用命令如下:# /usr/sbin/named 来启动named进程。在第一次启动进程时,应该查看出错信息:
使用如下命令:# tail -f /var/log/messages 来查看信息。
经过以上的八个步骤,一个完整的域名服务器就已经正常运行了!下面我们要做的就是要检查它运行情况,是否正常工作!
三 使用nslookup来调试named
在linux下的工具nslookup可以用于检查名字服务器设置的操作。它是随bind软件附赠的。Nslookup首先使用/etc/resolv.conf 文件中指定的域名服务器作为缺省的服务器,如果有多个,则选择第一个。Nslookup不仅能查询单个的主机,还可以查询DNS记录的任何类型,甚至传输一个域的整个区域信息。
当不加参数地调用,nslookup将显示它所用的名字服务器,并且进入交互模式。在’〉’提示符下,你可以键入任何想要查询的域名。缺省地,它请求类A记录,这些是包含与域名相关的IP地址的。
通过使用命令“set type=type”来改变查询类型,这里type是一个标准资源记录名或所有纪录名(ANY)。
Nslookup的使用命令如下所示:
# nslookup
Default Server: localhost
Address: 127.0.0.1
〉 www.xjtu.edu.cn
Server: localhost
Address: 127.0.0.1
Non-authoritative answer:
Name: xjtu04.xjtu.edu.cn
Address: 202.117.1.13
Aliases: www.xjtu.edu.cn
如果你要查询的不是一个A类型的纪录,可以通过命令来设置查询的类型,使用命令set type=(A , NS ,MX)等等,例子如下所示:
〉 xjtu.edu.cn
Server: dns.xanet.edu.cn
Address: 202.112.11.130
*** localhost can't find xjtu.edu.cn: Non-existent host/domain
(注:查询缺省是A类型的纪录,所以无法找到xjtu.edu.cn的ip地址)
〉 set type=NS
〉 xjtu.edu.cn
Server: dns.xjtu.edu.cn
Address: 202.117.0.20
xjtu.edu.cn nameserver = dns.xjtu.edu.cn
dns.xjtu.edu.cn internet address = 202.117.0.20
(注:在设置查询类型为NS之后,就可以找到相应的纪录)
以同样的方式你可以查询MX记录,等等。使用一个ANY类型将返回与一个给出的名字关联的所有资源记录。
除了调试,nslookup还可以为named.ca文件获取根名字服务器的当前列表。你可以通过查询与根域相关的所有NS类型记录来做到。
在使用nslookup的时候,还可以使用命令server 来指定特定的域名服务器,例如:
〉 server dns.xanet.edu.cn
Default Server: dns.xanet.edu.cn
Address: 202.112.11.130
同时可以设置缺省的域名,例如:
〉 set domain=xjtu.edu.cn
〉 www
Server: dns.xanet.edu.cn
Address: 202.112.11.130
Non-authoritative answer:
Name: xjtu04.xjtu.edu.cn
Address: 202.117.1.13
Aliases: www.xjtu.edu.cn
在设置了缺省的域名之后,就直接可以输入www,nslookup会自动把缺省的域名加入。
我们所输入的www实际上是查询www.xjtu.edu.cn。
如果在查询的时候出错了,这时我们可以使用set debug命令了进行信息的调试。
〉 www.lib.xanet.edu.cn
Server: localhost.edu.cn
Address: 127.0.0.1
*** localhost.edu.cn can't find www.lib.xanet.edu.cn: Non-existent host/domain
找不到相关的域名信息,我们进行调试和跟踪。
〉 set debug
〉 www.lib.xanet.edu.cn
Server: localhost.edu.cn
Address: 127.0.0.1
;; res_nmkquery(QUERY, www.lib.xanet.edu.cn, IN, A)
------------
Got answer:
HEADER:
opcode = QUERY, id = 33813, rcode = NXDOMAIN
header flags: response, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0
QUESTIONS:
www.lib.xanet.edu.cn, type = A, class = IN
AUTHORITY RECORDS:
-〉 xanet.edu.cn
ttl = 10711 (2h58m31s)
origin = dns.xanet.edu.cn
mail addr = root.dns.xanet.edu.cn
serial = 990930
refresh = 10800 (3H)
retry = 1800 (30M)
expire = 604800 (1W)
minimum ttl = 604800 (1W)
------------
;; res_nmkquery(QUERY, www.lib.xanet.edu.cn.xjtu.edu.cn, IN, A)
------------
Got answer:
HEADER:
opcode = QUERY, id = 33814, rcode = NXDOMAIN
header flags: response, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0
QUESTIONS:
www.lib.xanet.edu.cn.xjtu.edu.cn, type = A, class = IN
AUTHORITY RECORDS:
-〉 xjtu.edu.cn
ttl = 10711 (2h58m31s)
origin = dec3000.xjtu.edu.cn
mail addr = root.dec3000.xjtu.edu.cn
serial = 111003
refresh = 28800 (8H)
retry = 7200 (2H)
expire = 86400 (1D)
minimum ttl = 86400 (1D)
------------
;; res_nmkquery(QUERY, www.lib.xanet.edu.cn.edu.cn, IN, A)
------------
Got answer:
HEADER:
opcode = QUERY, id = 33815, rcode = NXDOMAIN
header flags: response, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0
QUESTIONS:
www.lib.xanet.edu.cn.edu.cn, type = A, class = IN
AUTHORITY RECORDS:
-〉 edu.cn
ttl = 10711 (2h58m31s)
origin = NS2.NET.edu.cn
mail addr = HOSTMASTER.NET.edu.cn
serial = 2000111113
refresh = 14400 (4H)
retry = 1800 (30M)
expire = 604800 (1W)
minimum ttl = 86400 (1D)
------------
*** localhost.edu.cn can't find www.lib.xanet.edu.cn: Non-existent host/domain
通过上面返回的信息,我们可以清楚的知道,在没有找到纪录时,首先发送请求到根域,
NS2.NET.edu.cn,然后是dec3000.xjtu.edu.cn,最后找到了dns.xanet.edu.cn,发现没有该纪录,则返回查询结果。
最后讲一讲如何从主域名服务器中下载一个完整的域信息。
〉 server dns.xanet.edu.cn
Default Server: dns.xanet.edu.cn
Address: 202.112.11.130
〉 ls xanet.edu.cn 〉 xanet.dns
[dns.xanet.edu.cn]
#
Received 70 answers (59 records).
〉view xanet.dns
www 202.117.1.13
dns 202.117.0.20
ftp 202.117.1.24
mail 202.117.1.21
……
nslookup完整的命令集可以通过nslookup中的help命令得到。
四 总结
上面我们已经详细的介绍了linux系统中域名服务器的原理和配置,相信在按照上述的步骤,我们都能够顺利的安装好域名服务器,但是如果要当好一个大型网络的域名管理员,不仅需要实际的操作经验,更需要自己阅读详细的rfc文档。如下的文档要仔细阅读:
Rfc 1032 “DOMAIN ADMINISTRATORS GUIDE”
Rfc 1033 “DOMAIN ADMINISTRATORS OPERATIONS GUIDE”
Rfc 1034 “DOMAIN NAMES - CONCEPTS AND FACILITIES”
Rfc 1035 “DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION”
Rfc 1713 “Tools for DNS debugging”
Rfc 1912 “Common DNS Operational and Configuration Errors” |
|