Linux架设DNS服务器(一)

一、域名系统介绍1.域名系统域名系统为一个分布式数据库,它使本地负责控制整个分布式数据库的部分段,每一段中的数据通过客户,服务器模式在整个网络上均可存取,通过采用复制技术和缓存技术使得整个数据库可靠的同时,又拥有良好的性能.域名服务器包含数据库的部分段的信息,并可提供被称之为解析器的客户来访问.DNS的数据库结构形成一个倒立的树状结构,根的名字用空字符串""来表示,但在文本中用"."来书写.树的每一个节点都表示整个分布式数据库中的一个分区(域),每个域可再进一步划分成子分区(域),每个域都有一个标签(LABEL),标明了它与父域的关系.域也有一个域名(domainname),给出它在整个分布式数据库中的位置.在DNS中,域名全称是一个从该域到根的标签序列,以"."分隔这些标签.该标签最多可包含63个字符.树中每一节点的完整域名为从该节点到根之间路径上的标签序列.如果根域在节点的域名中出现,该名字看起来就象以点结尾(实际上是以点和空标签作结尾).这些以点结尾的域名被称之为绝对域名(AbsoulteDomainName).不以点结尾的域名被称之为相对域名.域(Domains)即为树状域名空间中的一棵子树,域的域名同该子树根节点的域名一样.也就是说,域的名字就是该域中最高层节点的名字.举例来说,zhuhai.gd.cn域的顶端就是名为zhuhai.gd.cn的节点.在DNS中,每个域分别由不同的组织进行管理.每个组织都可以将它的域再分成一定数量的子域并将这些子域委托给其他组织进行管理.域既能包括主机又能包括其他域(它的子域).域名被用做DNS数据库中的索引.子域中任何域名被认为是域的一部分.事实上,主机即为域,域名仅是DNS数据库中的索引,"主机"可由指向相关主机信息的域名来索引,域包含所有其域名在该域的主机.在域名树中,叶节点的域通常代表主机,它们的域名可指向网络地址,硬件信息和邮件路由信息.在树内的节点,其域名既可命名一台主机,也可指向有关该域的子孙或子域的结构信息,在域名树中的内部域名并不受唯一性限制,它们既可表示它们所对应的域,又可代表网络中某台特定的主机.例如,sun.com既是sun的域,又是在sun和internet间转发信件的邮件服务器的域名.网络上的每一台主机都有一个域名,域名给出有关主机的信息,该信息中包含IP地址,MAIL路由信息等等,主机也可以有一个或多个域名别名,别名仅是一些指向正式域名的另1.1域名.判断域是否为另一域的子域的简单方法是比较它们的域名.子域名以其父域名结尾.设计域名系统的一个主要目的是让管理分散化,这是通过代理来实现的.管理域的组织将该域划分成子域,每一个子域可以由其他组织代理,这意味着那些代理组织负责维护在该子域的所有数据.他们可以自由地改变数据,甚至可以将他们管理的子域再划分成更多的子域并将它们再分配.父域中仅包含指向这些子域的指针,因而引用对那里的查询.1.2域名服务器 存储有关域名空间信息的程序被称为域名服务器(nameserver).通常,域名服务器拥有部分域名空间(称之为区zone)的完整信息.域名服务器可以拥有多个区的授权.区与域的关系:区包含了域中除了代理给别处的子域外所含有的所有域名和数据.如果域的子域没有被代理出去,则该区包含该子域名和子域中的数据.DNS定义了两类域名服务器:primaryMaster和secondaryMaster.PM域名服务器从它所运行的主机上的文件获得它所负责的区的数据,SM域名服务器则是从其它的具有该区授权的域名服务器上获得它的区的数据.SM域名服务器会定期查询PM域名服务器以保证区数据为最新版本.一般情况下,最好设立一台PM域名服务器和若干台SM域名服务器.这样可以分担负载.以及确保区中所有主机都有比较靠近的域名服务器,方便访问.1.3解析器运行在主机上并需要域名空间信息的重新需要解析器(Resolver),在bind中解析器仅仅是一组库例程,并编译进象telnet和ftp这样的程序中,它们并非独立的进程.解析器所做的工作为:汇集查询,发送查询并等待应答,未得到应答时重发查询.1.4地址到域名的映射在域名空间的数据是通过名字来进行索引的,找到一个给定域名的地址相对容易.但是要找到映射给一定地址的域名就要在树上的每一个域名空间作穷尽搜索.如果这样的话,效率将相当低,为了解决这个问题,创建一个以地址为索引的域名空间.这部分名字空间被称为in-addr.arpa域.in-addr.arpa域中的节点以Doted-octet(将32bitIP地址表示为由"."分隔开的四个8bit的十进制形式的方法)形式表示IP地址.IP地址在名字空间以相反的方向表示,因为名字是从叶读到根,例如,www.zhuhai.gd.cn的IP地址为202.105.177.100,则相应的in-addr.arpa子域为177.105.202.in-addr.arpa,使IP地址中的第一个字节出现在树的最高层使的管理员有能力沿着网络联接将in-addr.arpa域代理出去,例如177.105.202.in-addr.arpa可以被代理给网络177.105.202的管理员.1.5缓存与生存期名字服务器在处理递归查询时,可能要进行多次查询才能得到信息,在这过程中,名字服务器可以获得很多有关域名空间的信息,名字服务器将所以这些信息都缓存起来以加速以后的查询.除了加速查询外,缓存还使得我们不必再次查询根名字服务器,这样可使得我们不必过分依赖根名字服务器而大大减轻根名字服务器的负载.生存期(TTL)为所容许的名字服务器对数据缓存的时间长度,一旦生存期到了,名字服务器必须丢弃缓存数据并从授权的名字服务器中重新获取新的数据.这样可以确保域数据在整个网络上的一致性.1.6BIND:LINUX名字服务linux和其他的unix一样,都是用BIND来实现名字服务.BIND的服务端的软件是被称为named的守护进程.bind的主页是