640 likes | 814 Views
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/. 一、背景知识.
E N D
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历史简介 • 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发展历史 • 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.3 DNS基本知识 • 分布式数据库:允许对整个数据库的某一部分进行本地化管理,同时每个部分又可以通过C/S机制在整个网络上进行查询。复制及缓冲的应用使得此系统具有良好的健壮性及性能。 • 名字服务器此DNS中含有对数据库某一段的信息,并使这些数据可以被称之为解析器(resolver)的客户端可用。通常resolver只是一个创建请求并通过网络将这些请求发送给相应DNS服务器的库程序。 • DNS数据库的结构与UNIX文件系统的结构极为相似,采用树型结构,UNIX文件系统的根写为“/”,而在DNS中其根为空字符“”,但通常书写为 “.”.
同目录一样,每个域都有自己的域名。相对于上级域,每个域都有自己的标记(label),如同文件系统中每个目录的相对目录名。同时每个域都有自己的域名,此域名标识其在整个数据库中的位置,如同文件系统中的绝对路径名一样。同目录一样,每个域都有自己的域名。相对于上级域,每个域都有自己的标记(label),如同文件系统中每个目录的相对目录名。同时每个域都有自己的域名,此域名标识其在整个数据库中的位置,如同文件系统中的绝对路径名一样。 • 在DNS中,完整的域名用从树形结构中从树叶到根所经过的各个节点名,用“.”作为分隔符的书写形式表示,与文件系统之绝对路径名表示顺序相反。 • 在DNS中,每个域可以由不同的组织管理。同样,每个域也可以将相应的域分为若干个子域,并将这些子域的管理分给其他单位。如InterNIC运行在edu域中,让U.C. Berkeley 通过berkeley.edu域名服务器来分配子域。在某种程度上这与NFS文件系统很相似。
在文件系统中,目录可以含有文件,同样也可以有子目录。与此相似,每个域下可以有主机和其他子域。域名可以看作是在DNS数据库的索引值;可以将DNS中的数据看作是域名的粘贴。在文件系统中,目录可以含有文件,同样也可以有子目录。与此相似,每个域下可以有主机和其他子域。域名可以看作是在DNS数据库的索引值;可以将DNS中的数据看作是域名的粘贴。 • 在网络中的每个主机都有一个域名,此域名指向有关此主机的相关信息。这些信息可能包括IP地址、电子邮件交换、别名等信息。主机可以有一到多个别名,通常这些别名指向另一个域名(正式域名,canonical domain name). • 使用这种复杂结构可以克服HOSTS.TXT文件的不足。如层次形结构可以解决名字冲突的问题,因为每个域具有唯一的域名,因此在此域内可以自由选择主机名,而不会与其他域发生冲突。
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? • 与 Internet连接:YES • 如果您有自己的基于TCP/IP的网际网:可能需要;网络规模较大时需要DNS;如果有多台邮件服务器,需要DNS • 局域网:可以不用DNS;可以考虑NIS;但如果准备与Internet相连或要使用统一的主机名管理,最好使用DNS。
二、DNS工作原理 • DNS是一个主机信息的数据库,提供Internet主机信息 • DNS是一种Client/Server结构 • 本章内容介绍DNS工作机制
域名空间(Domain Name Space) • DNS分布式数据库使用域名为索引值,通常这些域名为在整个树状结构中的路径;此树状结构与UNIX的文件系统很类似。我们将DNS的每个分支称为一个结点(node);BIND所允许的最大树结构深度为127。 • 域名:每个节点使用一个名字标识,名字最长为63个字符。完全域名(FQDN,fully-qualified domain name)表示与文件系统这绝对路径相似,但书写方向相反,如www.dlut.edu.cn,;要求同一域下的域名和主机,与 UNIX文件系统中每个目录下的文件名必须唯一很相似。
域(domain):域名空间的一个子树。域的域名与其在此树状结构中的子树名字相同,即网域的名字为其在顶级域中的结点(node)名,如网域dlut.edu.cn是在树状结构中的dlut.edu.cn结点。域(domain):域名空间的一个子树。域的域名与其在此树状结构中的子树名字相同,即网域的名字为其在顶级域中的结点(node)名,如网域dlut.edu.cn是在树状结构中的dlut.edu.cn结点。 与此类似,在文件系统中目录/usr事实上对应/usr结点。 • 子树内的所有域均是此子树对应域的子域。 • 简要的说,域是域名空间中的一个子树。 • 主机:主机是网域中的一部分;域名是其在DNS数据库中的索引;域含有在其网域内的主机。 • 主机通常以地域或组织进行分类,是一个逻辑性的数据,与网络、网络地址及硬件类型不存在固定的对应关系。如一个网域内可以有若干个主机,这些主机位于不同的网络甚至是不同的国家,但可以使用同一域名。
优点: • DNS定义一个从属于网络上的主机信息,具有分级结构和可分区的数据库。允许将划分名字区的子分区为独立可管理的分区,称为域名或子域名,其优点之一是减少了主机名冲突的可能性。DNS数据库的分布特性允许在名字服务器上重新分配子域。同时,子域的管理也被委托给它所在的位置,这种服务器称之为授权服务器。 • DNS解放了系统管理员,配置DNS支持的客户工作站需要最少的工作,它为它是完全静态的,DNS客户机文件不需要被更新。 • 在DNS中,所有主机信息包括在数据库文件中,这些文件保存在几个运行处理名字到地址转换的服务进程的主机上,此外还提供其他相关主机的信息。我们将完成这项工作的主机称之为DNS服务器。
DNS服务器可以与其他DNS服务器一起联合工作,完成客户机对特定主机信息的查询。DNS服务器可以与其他DNS服务器一起联合工作,完成客户机对特定主机信息的查询。 • 可以通过较少的DNS服务器完成对整个网络的DNS服务 • 一台DNS服务器只用保存相应网域内的主机信息 • 根据网络的规模,可以有多个名字服务器,采用多个DNS服务器的主要原因是服务系统的性能、容错性能和便于管理。 • DNS的可分布性或分级的特性允许将服务器的责任分给网络上的可靠用户可组织,分担管理重担,使其更容易管理 • 通过主、从和cache-onlyDNS三种类型的服务器,可以提高容错能力。主服务器保存实际数据,从服务器作为后备服务器,而cache-only服务器中含数据,只含有解析到的数据的缓存。
顶级域名 • Com • edu • gov • mil • net • org • cn • de • arpa (用于IP->主机名)
在域名空间树中的树叶通常表示特定的主机,其域名可能指向网络地址、硬件信息以及邮件信息等。在域名空间树中的树叶通常表示特定的主机,其域名可能指向网络地址、硬件信息以及邮件信息等。 • 可通常比较域名确定两个域之间的关系,与www.dlut.edu.cn为dlut.edu.cn的一个子域。
授权(delegation) • DNS的主要任务是引入一个系统,各组织机构能够被授权管理自己的数据库分区。DNS中的授权与一个大机构的责任授权相似,每个部分被划分为更小的部门。 • 被授权组织通过建立自己的DNS服务器(授权服务器 ),这台服务器的组织负责维护属于它的网络的主机信息。即这台服务器必须提供用户一个指针,指向Internet网上的其他用户,以备访问其他机构的网络的需要。 • 一旦将管理权授于它的子域,子域所对应的机构就有权建立适合它自己需要的结构。如同用户能够建立它的本地子目录一样。 • 管理域的权力包括能够进一步将低级域的管理权授于网络上的成员分区和部门。 • 上级域名服务器含有到授权服务器的指针(IP地址)
名字服务器(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):从另一个授权服务器取得其授权区域的数据。备份域名服务器启动时会与其他域名服务器联系,更改数据. • 对指定域的数据维护只用在主域名服务器上完成,便于管理。在备份域名服务器上只用设置其从主域名服务器上取数据即可,启动之后备份域名服务器会定期地与主域名服务器通讯进行数据更新。 • 使用备份域名服务器可以增加冗余度。 • 域名服务器可同时作一些区域的主域名服务器,同时也可以作其他区域的备份域名服务器。
数据文件 • 主域名服务器通过读取DNS服务器所在主机上的文件加载其区域的数据。通常将这些文件称之为db files. • 备份域名服务器有时也可以从数据文件中加载数据;在配置备份域名服务器时可以指定把从主域名服务器传输的数据备份到数据文件中,这样在其重启之后首先读取数据文件,然后再和主域名服务器通讯,检查文件中的数据是否需要更新。 • 数据文件中含有其所描述的区域的资源记录(Resource records).通过资源记录说明整个域内主机的信息,也可以使用资源记录来进行指定授权。
解析器(Resolvers) 客户机使用解析器访问DNS服务器。主机上所运行的程序通过解析器来获得有关域名空间的信息。解析器完成如下工作: • 查询名字服务器 • 对DNS服务器的响应(资源记录或错误信息)进行解释 • 将此信息返回给调用程序 在BIND中,解析器实际上是一组库程序调用,这些库程序调用被编译到如telnet/ftp等应用程序中,而不是通过单独的进程来实现。
名字分解(Resolution) DNS服务器用于从域名空间中检索数据,不但要给出相应域名服务器授权域的数据,同时在甚非授权范围内进行数据查找,这一过程称之为名字分解(name resolution或resolution). DNS服务器通过查询顶级域名服务器得到其他域的数据。
根域名服务器(Root Name Server) • 根域名服务器含有所有项级域名的授权服务器信息。(事实上是通过其他项级域名服务器给出授权的)。当收到查询项级域名服务器的请求时,根域名服务器会给出相应项级域名服务器的名字及IP地址,然后再由这些服务器给出二级的域名服务器及地址。 • 根域名服务器在地址解析中起着十分重要的作用,因此DNS提供了一种称之为cache的机制,提供有关根域名服务器的有关信息。同时因为所有的域名查找都要从根据域名服务器开始,为了保证Inernet上的所有DNS查询,Internet上提供了十多个根域名服务器。
将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)
缓冲(Caching) 使用缓冲技术加快DNS查找过程 • 在DNS的查找过程中,递归查找需要多次查询,使用已经查询过的内容,可以减少查询次数 • DNS服务器将其已经查询到的内容暂存起来,可以加快到相应DNS服务器的查找过程。
存活时间(Time To Live,TTL) • DNS服务器不是永远使用其cache的数据,否则授权服务器的修改对网络上的其他主机就不再起作用了。授权服务器通过有其数据中指定存活时间告诉其他DNS服务器可以使用其cache数据的最长时间;如果在cache中的数据超过其TTL值,DNS服务器必须丢弃此数据,并从授权服务器中取得新的数据。 • TTL值的选择需要综合考虑性能和一致性。小的TTL值会提高数据的一致性,但会加重DNS服务器的负载,降低其他域对所在域的查询速度。 • 大的TTL值会加快DNS查找,但在更改过DNS数据之后可能会造成其他DNS服务器与授权服务器数据的不一致。
取得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 • 从源代码安装参考如下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地址及域名 • 从InterNIC或APNIC申请IP地址空间,CERNET用户可以从CERNET申请。 • 确定自己的上级域,选择自己的域名,并在相应上级域注册自己的域名(即在in-addr.arpa和相应的上级域名服务器中加入到自己DNS服务器的指针)
配置Bind 根据你与Internet的连接情况确定相应的配置,在后面的内容中假设与Internet有完全的连接。
设置DNS数据 • 第一步是将dlut.edu.cn域内的数据转换为相同的DNS主机表。DNS含有多个数据文件,其中一个文件完成主机名到IP地址的对应关系,其他文件则完成地址到主机名的对应关系。通常我们将从IP地址到主机名的查找过程称之为反向解析。 • 每个网络必须有自己的反向映象文件。 • 建议文件名使用统一的命名规则,如db.dlut, db.202.118.66等.