nullDNS服务器配置DNS服务器配置何斌武
hbwork@dlut.edu.cn
albin.bbs@bbs.dlut.edu.cn
大连理工大学网络中心版权声明版权声明本文内容为大连理工大学LINUX选修课讲义,欢迎大家转载,但禁止使用本
进行任何商业性或赢利性活动。转载时请保留本版权声明。
作者:何斌武,hbwork@dlut.edu.cn,
大连理工大学网络中心,April 1999.
URL: ftp://ftp.dlut.edu.cn/pub/PEOPLE/albin/一、背景知识一、背景知识了解一些有关ARPANET的历史对理解Domain Name System(DNS,域名服务)是很重要的。DNS是为了解决ARPANET及其发展而来的Internet上的特定问题而开发的,DNS在Internet中起着至关重要的作用。
1.1 Internet历史简介1.1 Internet历史简介60年代后期,美国国防部开始资助研究ARPANET
八十年代早期,TCP/IP出现,并在BSD UNIX中第一个使用,BSD免费使很多机构与Internet的连接成为可能。
Internet从很少的几个主机发展成为连有上万台计算机的网络,并成为基于TCP/IP、被大家称之为Internet的网络之主干网
1988年,DARPA退出,由NSF(National Science Foundation)资助交建立NSFNET,代替ARPANET成为Internet之主干网。
现在连在Internet上的主机已经上千万台,上亿用户1.2 DNS发展历史1.2 DNS发展历史70年代时,ARPANE只有几百台机器,使用一个单个文件HOSTS.TXT就可以包含所有这些主机的信息,此文件存储连接在ARPANET上每一个主机名到IP地址的对应关系;现在UNIX之/etc/hosts文件即从此而来。
此文件由SRI(Stanford Research Institute)之NIC维护,从一台主机SRI-NIC向各主机分发。每周需要更新一到两次,并且随着机器的增加这种机制很难管理,并且传输此文件会消耗富贵的网络带宽。
当ARPANET移植到TCP/IP
之后,网络规模迅速增长,使用HOSTS.TXT文件将存在如下问题:1.2 DNS发展历史(续)对网络流量及负载的影响:SRI-NIC几乎不可用
名字冲突
无法保证一致性(consistency)
因此,ARPANET资助开发HOSTS.TXT之替换
,其目标是开发一个能够解决HOSTS.TXT所存在的各种问题的系统,同时此系统又能够允许对数据的本地管理并且整个网络可以访问此数据。管理的分散可以解决单个主机的瓶颈,减轻网络流量负载。本地管理又使用数据的更新更为及时;使用层次形命名空间又可以消除主机名冲突。
USC Information Sciences Institute的Paul Mockapetris负责
此系统并与1984年发布了RFC882和883,对DNS进行了具体说明1.2 DNS发展历史(续)1.3 DNS基本知识1.3 DNS基本知识分布式数据库:允许对整个数据库的某一部分进行本地化管理,同时每个部分又可以通过C/S机制在整个网络上进行查询。复制及缓冲的应用使得此系统具有良好的健壮性及性能。
名字服务器此DNS中含有对数据库某一段的信息,并使这些数据可以被称之为解析器(resolver)的客户端可用。通常resolver只是一个创建请求并通过网络将这些请求发送给相应DNS服务器的库程序。
DNS数据库的结构与UNIX文件系统的结构极为相似,采用树型结构,UNIX文件系统的根写为“/”,而在DNS中其根为空字符“”,但通常书写为 “.”.DNS数据库与UNIX文件系统之比较DNS数据库与UNIX文件系统之比较null同目录一样,每个域都有自己的域名。相对于上级域,每个域都有自己的标记(label),如同文件系统中每个目录的相对目录名。同时每个域都有自己的域名,此域名标识其在整个数据库中的位置,如同文件系统中的绝对路径名一样。
在DNS中,完整的域名用从树形结构中从树叶到根所经过的各个节点名,用“.”作为分隔符的书写形式表示,与文件系统之绝对路径名表示顺序相反。
在DNS中,每个域可以由不同的组织管理。同样,每个域也可以将相应的域分为若干个子域,并将这些子域的管理分给其他单位。如InterNIC运行在edu域中,让U.C. Berkeley 通过berkeley.edu域名服务器来分配子域。在某种程度上这与NFS文件系统很相似。
DNS与UNIX文件系统表示法比较DNS与UNIX文件系统表示法比较nullnull在文件系统中,目录可以含有文件,同样也可以有子目录。与此相似,每个域下可以有主机和其他子域。域名可以看作是在DNS数据库的索引值;可以将DNS中的数据看作是域名的粘贴。
在网络中的每个主机都有一个域名,此域名指向有关此主机的相关信息。这些信息可能包括IP地址、电子邮件交换、别名等信息。主机可以有一到多个别名,通常这些别名指向另一个域名(正式域名,canonical domain name).
使用这种复杂结构可以克服HOSTS.TXT文件的不足。如层次形结构可以解决名字冲突的问题,因为每个域具有唯一的域名,因此在此域内可以自由选择主机名,而不会与其他域发生冲突。nullDNS的别名指向一个正式主机名nullDNS中命名冲突问题的解决1.4 BIND之历史1.4 BIND之历史第一个DNS系统被称为JEEVES,由Paul Mockapetris自己开发。
BIND在其之后开发出来,由Kevin Dunlap为Berkeley‘s 4.3BSD UNIX操作系统开发,BIND之含义为Berkeley Internet Name Domain. BIND是当今最为流行的DNS服务器。已经移植到很多种UNIX操作系统,同时很多厂家的UNIX也将其作为
组成随其OS发布。
1997年BIND由Internet Software Consortium负责开发,当前最新版本Bind 8.2
URL: http://www.isc.org/1.5 我是否需要DNS?1.5 我是否需要DNS?与 Internet连接:YES
如果您有自己的基于TCP/IP的网际网:可能需要;网络规模较大时需要DNS;如果有多台邮件服务器,需要DNS
局域网:可以不用DNS;可以考虑NIS;但如果准备与Internet相连或要使用统一的主机名管理,最好使用DNS。二、DNS工作原理二、DNS工作原理DNS是一个主机信息的数据库,提供Internet主机信息
DNS是一种Client/Server结构
本章内容介绍DNS工作机制
域名空间(Domain Name Space)域名空间(Domain Name Space)DNS分布式数据库使用域名为索引值,通常这些域名为在整个树状结构中的路径;此树状结构与UNIX的文件系统很类似。我们将DNS的每个分支称为一个结点(node);BIND所允许的最大树结构深度为127。
域名:每个节点使用一个名字标识,名字最长为63个字符。完全域名(FQDN,fully-qualified domain name)表示与文件系统这绝对路径相似,但书写方向相反,如www.dlut.edu.cn,;要求同一域下的域名和主机,与 UNIX文件系统中每个目录下的文件名必须唯一很相似。
nullDNS命名空间结构null域(domain):域名空间的一个子树。域的域名与其在此树状结构中的子树名字相同,即网域的名字为其在顶级域中的结点(node)名,如网域dlut.edu.cn是在树状结构中的dlut.edu.cn结点。
与此类似,在文件系统中目录/usr事实上对应/usr结点。
子树内的所有域均是此子树对应域的子域。
简要的说,域是域名空间中的一个子树。
主机:主机是网域中的一部分;域名是其在DNS数据库中的索引;域含有在其网域内的主机。
主机通常以地域或组织进行分类,是一个逻辑性的数据,与网络、网络地址及硬件类型不存在固定的对应关系。如一个网域内可以有若干个主机,这些主机位于不同的网络甚至是不同的国家,但可以使用同一域名。优点:优点:DNS定义一个从属于网络上的主机信息,具有分级结构和可分区的数据库。允许将划分名字区的子分区为独立可管理的分区,称为域名或子域名,其优点之一是减少了主机名冲突的可能性。DNS数据库的分布特性允许在名字服务器上重新分配子域。同时,子域的管理也被委托给它所在的位置,这种服务器称之为授权服务器。
DNS解放了系统管理员,配置DNS支持的客户工作站需要最少的工作,它为它是完全静态的,DNS客户机文件不需要被更新。
在DNS中,所有主机信息包括在数据库文件中,这些文件保存在几个运行处理名字到地址转换的服务进程的主机上,此外还提供其他相关主机的信息。我们将完成这项工作的主机称之为DNS服务器。nullDNS服务器可以与其他DNS服务器一起联合工作,完成客户机对特定主机信息的查询。
可以通过较少的DNS服务器完成对整个网络的DNS服务
一台DNS服务器只用保存相应网域内的主机信息
根据网络的规模,可以有多个名字服务器,采用多个 DNS服务器的主要原因是服务系统的性能、容错性能和便于管理。
DNS的可分布性或分级的特性允许将服务器的责任分给网络上的可靠用户可组织,分担管理重担,使其更容易管理
通过主、从和cache-only DNS三种类型的服务器,可以提高容错能力。主服务器保存实际数据,从服务器作为后备服务器,而cache-only服务器中含数据,只含有解析到的数据的缓存。顶级域名顶级域名Com
edu
gov
mil
net
org
cn
de
arpa (用于IP->主机名)域名与目录名之比较域名与目录名之比较一个主机在多个域中一个主机在多个域中null在域名空间树中的树叶通常表示特定的主机,其域名可能指向网络地址、硬件信息以及邮件信息等。
可通常比较域名确定两个域之间的关系,与www.dlut.edu.cn为dlut.edu.cn的一个子域。同时具有IP与数据的域名同时具有IP与数据的域名授权(delegation)授权(delegation)DNS的主要任务是引入一个系统,各组织机构能够被授权管理自己的数据库分区。DNS中的授权与一个大机构的责任授权相似,每个部分被划分为更小的部门。
被授权组织通过建立自己的DNS服务器(授权服务器 ),这台服务器的组织负责维护属于它的网络的主机信息。即这台服务器必须提供用户一个指针,指向Internet网上的其他用户,以备访问其他机构的网络的需要。
一旦将管理权授于它的子域,子域所对应的机构就有权建立适合它自己需要的结构。如同用户能够建立它的本地子目录一样。
管理域的权力包括能够进一步将低级域的管理权授于网络上的成员分区和部门。
上级域名服务器含有到授权服务器的指针(IP地址)DLUT负责维护域dlut.edu.cnDLUT负责维护域dlut.edu.cn名字服务器(Name Server)名字服务器(Name Server)用于存储域名空间信息的程序称之为名字服务器。名字服务器通常含有一个区域(zone,命名空间的一部分)的完整信息,这时名字服务器是此区域的权威服务器(have authority for that zone).
名字服务器可以是多个区域的授权服务器
区域(zone)与网域(domain)的区别:zone所对应的是域名服务器的数据,而网域则对应域名空间。zone含有除了其授权被指向别处的整个网域的信息,如区域dlut.edu.cn含有除lib.dlut.edu.cn,net.dlut.edu.cn之外其他所有 dut.edu.cn网域(domain)的数据。域名服务器的分类域名服务器的分类主域名服务器(Primary masters):主域名服务器从其所运行的主机的相应文件中取得其授权区域的主机信息。
备份域名服务器(Secondary masters):从另一个授权服务器取得其授权区域的数据。备份域名服务器启动时会与其他域名服务器联系,更改数据.
对指定域的数据维护只用在主域名服务器上完成,便于管理。在备份域名服务器上只用设置其从主域名服务器上取数据即可,启动之后备份域名服务器会定期地与主域名服务器通讯进行数据更新。
使用备份域名服务器可以增加冗余度。
域名服务器可同时作一些区域的主域名服务器,同时也可以作其他区域的备份域名服务器。
域(domain)与区域(zone)域(domain)与区域(zone)数据文件数据文件主域名服务器通过读取DNS服务器所在主机上的文件加载其区域的数据。通常将这些文件称之为db files.
备份域名服务器有时也可以从数据文件中加载数据;在配置备份域名服务器时可以指定把从主域名服务器传输的数据备份到数据文件中,这样在其重启之后首先读取数据文件,然后再和主域名服务器通讯,检查文件中的数据是否需要更新。
数据文件中含有其所描述的区域的资源记录(Resource records).通过资源记录说明整个域内主机的信息,也可以使用资源记录来进行指定授权。解析器(Resolvers)解析器(Resolvers)客户机使用解析器访问DNS服务器。主机上所运行的程序通过解析器来获得有关域名空间的信息。解析器完成如下工作:
查询名字服务器
对DNS服务器的响应(资源记录或错误信息)进行解释
将此信息返回给调用程序
在BIND中,解析器实际上是一组库程序调用,这些库程序调用被编译到如telnet/ftp等应用程序中,而不是通过单独的进程来实现。名字分解(Resolution)名字分解(Resolution)DNS服务器用于从域名空间中检索数据,不但要给出相应域名服务器授权域的数据,同时在甚非授权范围内进行数据查找,这一过程称之为名字分解(name resolution或resolution).
DNS服务器通过查询顶级域名服务器得到其他域的数据。根域名服务器(Root Name Server)根域名服务器(Root Name Server)根域名服务器含有所有项级域名的授权服务器信息。(事实上是通过其他项级域名服务器给出授权的)。当收到查询项级域名服务器的请求时,根域名服务器会给出相应项级域名服务器的名字及IP地址,然后再由这些服务器给出二级的域名服务器及地址。
根域名服务器在地址解析中起着十分重要的作用,因此DNS提供了一种称之为cache的机制,提供有关根域名服务器的有关信息。同时因为所有的域名查找都要从根据域名服务器开始,为了保证Inernet上的所有DNS查询,Internet上提供了十多个根域名服务器。nullDNS查询过程递归查找:DNS解析过程递归查找:DNS解析过程将IP地址转换为主机名将IP地址转换为主机名必要性:方便记忆;安全检查(.rhosts,hosts.equiv)
DNS中解决方法:使用in-addr.arpa反向域。In-addr.arpa反向域使用与IP地址相反的表示方法,如peony.dlut.edu.cn(www.dlut.edu.cn)之IP地址为202.118.66.18,其反向域表示法为:18.66.118.202.in-addr.arpa, 相对应的域分别为66.118.202.in-addr.arpa, 118.202.in-addr.arpa, 202.in-addr.arpa, in-addr.arpa, arpa.
In-addr.arpa反向域结构(附图)
IP地址到主机名使用反向查找(Inverse Queries)nullIn-addr.arpa反向域缓冲(Caching)缓冲(Caching)使用缓冲技术加快DNS查找过程
在DNS的查找过程中,递归查找需要多次查询,使用已经查询过的内容,可以减少查询次数
DNS服务器将其已经查询到的内容暂存起来,可以加快到相应DNS服务器的查找过程。DNS解析:缓存DNS解析:缓存存活时间(Time To Live,TTL)存活时间(Time To Live,TTL)DNS服务器不是永远使用其cache的数据,否则授权服务器的修改对网络上的其他主机就不再起作用了。授权服务器通过有其数据中指定存活时间告诉其他DNS服务器可以使用其cache数据的最长时间;如果在cache中的数据超过其TTL值,DNS服务器必须丢弃此数据,并从授权服务器中取得新的数据。
TTL值的选择需要综合考虑性能和一致性。小的TTL值会提高数据的一致性,但会加重DNS服务器的负载,降低其他域对所在域的查询速度。
大的TTL值会加快DNS查找,但在更改过DNS数据之后可能会造成其他DNS服务器与授权服务器数据的不一致。三、准备工作三、准备工作取得bind取得bind源代码:
ftp://ftp.isc.org/isc/bind/src/8.2/
ftp://ftp.isc.org/isc/bind/src/4.9.7/
ftp://ftp.dlut.edu.cn/pub/unix/bind/
LINUX RPM包:
bind*.i386.rpm(FTP或CDROM)
安装: rpm -qa |egrep bind
rpm -Ivh bind-*.rpm
相关参考资料:
BOG(Bind Operation Guide)
http://www.dlut.edu.cn/idq/zhuanti/zhuanti.htm安装bind-8安装bind-8从源代码安装参考如下URL:http://www.dlut.edu.cn/idq/zhuanti/zhuanti11.html
从RPM包安装Bind8.x
rpm -ivh bind-8.*.i386.rpm
rpm -Uvh bind-8.*.i386.rpm申请IP地址及域名申请IP地址及域名从InterNIC或APNIC申请IP地址空间,CERNET用户可以从CERNET申请。
确定自己的上级域,选择自己的域名,并在相应上级域注册自己的域名(即在in-addr.arpa和相应的上级域名服务器中加入到自己DNS服务器的指针)配置Bind配置Bind根据你与Internet的连接情况确定相应的配置,在后面的内容中假设与Internet有完全的连接。null设置DNS数据设置DNS数据第一步是将dlut.edu.cn域内的数据转换为相同的DNS主机表。DNS含有多个数据文件,其中一个文件完成主机名到IP地址的对应关系,其他文件则完成地址到主机名的对应关系。通常我们将从IP地址到主机名的查找过程称之为反向解析。
每个网络必须有自己的反向映象文件。
建议文件名使用统一的命名规则,如db.dlut, db.202.118.66等.数据文件数据文件在数据文件中的主要内容为DNS资源记录(DNS Resource Record ), DNS系统不区分大小写,但最好使对数据类型使用大写,数据内容为小写。
数据类型:
SOA记录:授权域的开始 (Start of Authority)
NS记录:列出相应的域名服务器列表
A记录:主机名到IP地址对应记录
PTR记录:IP地址到主机名对应关系记录
CNAME记录:正式名称(用于建立别名)
MX记录:邮件交换记录
注释行:以;开始可空行资源记录格式资源记录格式[name] [ttl] class type dateSOA记录SOA记录 dlut.edu.cn. IN SOA cedrus.dlut.edu.cn. root.dlut.edu.cn. (
1 ; Serial,序列号,备份域名服务器使用此域
10800; Refresh after 3 hours
3600; Retry after 1 hour
604800; Expire after 1 week
86400) ; Minimum TTL of 1 Day
注意事项:
在DNS数据中绝对域名必须以“.”结束(常见错误)
更改主域名服务器后必须增加序列号
dlut.edu.cn.为此记录所对应域名, 确认以“.”结束,通常在数据文件中用@表示对应的域(named.conf文件)
nullIN: Internet, 数据类型,还有其他类型,但现在只用IN
SOA: Start of Authority
cedrus.dlut.edu.cn.:数据文件所在主机(主DNS服务器主机名,数据文件所在主机名)
root.dlut.edu.cn. 管理员Email地址,其中@用.代替
(1 10800 3600 604800 86400)将SOA记录扩展为多行
序列号:其他DNS服务器根据此值判断主DNS数据文件内容是否已经修改,其值为相对值,最好使用整数或修改日期加相应编号,如1999052801
刷新时间:保存3小时后应与主域名服务器进行通讯,进行数据,以秒为单位,也可使用D,H,M等表示,刷新频率,除非检测到Serial的变化,否则不进行传输
Retry:告诉备份服务器如果当前的尝试失败,等待指定时间后再从主域名服务器更新数据nullExpire: 用秒表示,也可使用D/H/M(Bind 8),告诉备份域名服务器数据何时无效,在数据无效时备份域名服务器必须丢弃暂存的数据,重新从主域名服务器请求新的数据
最小存活时间:指定没有明确定义ttl的资源记录的默认生存时间值(ttl).NS 记录NS 记录格式:
[name] IN NS hostname.
使全局DNS数据库一致,这些记录把指针指向本服务器权限之外授权域的其他服务器。一个NS记录通常用于为DNS树中的一个子域或一个父域指定服务器域限
NS记录可用于反向和正向解析两个文件
为了使上级域能够找到下级域,必须在上级域中加入下级域的NS记录,如dlut.edu.cn需要在edu.cn域名服务器中加入 dlut.edu.cn. IN NS cedrus.dlut.edu.cn.
IN NS gingko.dlut.edu.cn.
Cedrus.dlut.edu.cn. IN A 202.118.66.6
gingko.dlut.edu.cn. IN A 202.118.66.8地址记录:A地址记录:A语法如下:
主机名 IN A IP地址
注:主机名可使用相对名称与FQDN,如果主机名以.结束表明使用FQDN,否则认为使用的是相对主机名,会加入SOA记录的域名形成FQDN。
示例:
peony.dlut.edu.cn. IN A 202.118.66.18
Or:
peony IN A 202.118.66.18
正式主机名记录(CNAME)正式主机名记录(CNAME)一个CNAME记录是指向主机的正式域名的别名,其语法如下:
aliasname [ttl] IN CNAME canonicalname.
示例如下:
www.dlut.edu.cn. IN CNAME peony.dlut.edu.cnPTR记录PTR记录语法:
rev.in-addr.arpa. IN PTR hostname.
如:
18.66.118.202.in-addr.arpa. IN PTR peony.dlut.edu.cn.
采用相对名:
18 IN PTR peony.dlut.edu.cn.
(加入SOA记录中的域名形成FQDN)
MX记录MX记录用于指定到指定主机或域的邮件交换记录(sendmail等SMTP服务器使用),语法如下:
[name] [TTL] IN MX reference_value hostname.
其中参考值(reference value)只有其相对值有意义。Loopback地址Loopback地址0.0.127.in-addr.arpa. IN SOA cedrus.dlut.edu.cn. Root.dlut.edu.cn.(
1; Serial
10800; Refresh after 3 hours
3600; Retry ater 1 hour
604800;
86400)
IN NS cedrus.dlut.edu.cn.
IN NS gingko.dlut.edu.cn
1 IN PTR localhost.根域名服务器cache数据文件根域名服务器cache数据文件取得最新DNS根域名服务器IP地址
$ dig > root.cache
或参考bind所带的文件,示例文件内容如下(实例文件)
启动文件启动文件Bind-4: /etc/named.boot
Bind-8: /etc/named.conf(实例,dlut.edu.cn DNS服务器)
启动DNS服务器:
#named
重新读取数据:
#ps ax |egrep named
#kill -HUP $PID
Or:
#named-restart
#named-reload