域和域区 理解域和域区的差别需要费一点精力DNS域名树的分支是为域名所用的而叶子则用于主机在域名树中子域和主机是树中所有在它们上层的域的成员 域区在逻辑上覆盖了DNS树型结构的一部分以确定每个DNS服务器支持的名字(子域名和主机名)DNS服务器的域区决定了它所覆盖的树的分支树的区域以及有多少它所授权的域 图中有一个服务器的授权域区包括mkt和sales两个域一个DNS服务器也可以在一个域区中只有一个域图中的eng就是一个域区只有一个域的例子尽管它还有两个子域因为Windows中的域区用于控制相邻的分支也就要求mkt和sales域位于不同的域区中这与一般的域区规则稍有不同 由于DNS服务器之间的交互操作和DNS服务器及DNS客户机之间的交互操作决定了必须有域区和委托授权域区规定了名字是在哪里存放的(即哪个DNS服务器具有这些名字)而委托授权则决定客户机和服务器应从哪条路径与其他DNS服务器通信 一个域区包含的记录可以是单个域的记录一个域记录的一部分一个或几个子域的记录或者是父域和子域记录的组合对于一类特殊的用来进行从地址到名字解析的反向地址域区更是常有多个域的记录反向地址域区将在第章中描述 域区向DNS服务器提供了它所管理的名字而委托授权则告诉DNS服务器当一个查询是在其域区以外时到哪里去查找域区和委托授权都不决定哪个DNS服务器是域记录授权的最初来源哪些服务器只是备份需指定一个服务器为主服务器并给予它这种授权并指定一个服务器为辅服务器以作为主服务器的备份 主DNS服务器 如前所述主DNS服务器(即SOA)负责域中名字的授权关于那个域的名字的所有信息都要从这个服务器获得当一个主DNS服务器启动时它从它所运行主机的本地数据文件(或者活动目录)中取得域区数据一个DNS服务器可以同时是一个或几个域的主服务器也可以同时既是一个域的主服务器又是另一个域的辅服务器第章将更详细地解释DNS服务器的类型但现在至少应认识到域和域区不存在主或辅的问题只有DNS服务器才有主或辅的概念主DNS服务器才是一个域的名字的授权来源 如果要配置一个机构的域的层次结构最好首先为整个域配置一个主域名服务器DNS服务器管理的域区应包含所有的域名也许还应为子域配置一个或几个服务器如果要为机构的各个部门建立子域则每个子域应有一个主DNS服务器如果服务器不包含这个域的所有记录则必须指定一个子域授权(例如被分为等等) 通过子域的选择提高了用户的灵活性同时因为每个子域都有一个授权的启动所以潜在地增加了负载因此每次做出改变时必须进入指定的主服务器MS关于域区项的使用有时是令人费解的在实现时应注意使用方式 辅DNS服务器 辅DNS服务器从主服务器获得数据当一个辅DNS服务器启动时它首先从主服务器处获得域区数据并将自己的版本号和主服务器的版本号进行比较如果觉得必要辅服务器就进行域区数据的替换用主服务器的数据覆盖原来的数据辅服务器能和主服务器通信是因为辅服务器的名字连同SOA和NS资源记录一起保存在它的文件里辅服务器仅用一个NS记录来表示并且它不承担SOA的责任只有主服务器才有权承担当然如果辅服务器仍然没有域区数据它需要在它的启动文件建立时使用指示来定位主服务器以获得域区数据 和主DNS服务器相似辅服务器也是授权查找域名的地方其差别在于主服务器是其他需要输入域区文件的服务器的初始域名来源而辅服务器则不是传递域区数据的来源辅服务器的存在只是为了备份并提供查询服务 从主DNS服务器向辅DNS服务器传送数据 对域域区委托授权有所了解后可以转向讨论DNS的分布式数据库模型域区文件本质上是DNS名字的数据库列表主服务器拥有它自己的各个域的源域区文件 子域域名服务器可以有主服务器的功能可有效地将一个大的域名列表划分为几个较小的部分成为几个域区文件如果一个大型机构在建立其域名服务器时只使用一个域而没有划分为几个子域则域区文件将非常大这样一个很大的无层次名字空间还会有另一个问题一个不再划分的DNS分支不能支持两个同样的主机名如果不对域进行划分一个大机关就会遇到像ARPAnet决定建立DNS体系结构时所曾遇到的问题然而同样大的机构可以把它的域名空间分成几个子域但仍然只用一个域区文件如图所示这只能解决两个问题中的一个 对域进行划分可以因域区文件变小并容易管理而改善性能一个域名服务器不应该解析庞大的域区文件虽然还受其他因素影响但一般来说域区文件越小从域名服务器得到的响应就越快但子域也会带来一定的问题即数据问题委托授权解决了父域和子域的协调但一个辅服务器又如何从数据源—它的主服务器—来获得数据?回答是通过传送主服务器的域区文件这也被称作域区传送(zonetransfer)域区传送可以是部分的也可以是完全的主要取决于需求和最近一次全传送耗费的时间把大的域区文件分成几个小文件也可提高域区传送的效率这也是为什么要避免大而平面化的域名空间的重要原因之一 当一个主服务器启动时它只需要对名字查询请求做出响应当一个辅服务器启动时它就要查看主服务器的授权数据并得到一个路径和文件名以便当收到副本时保存为本地的备份这由服务器的启动信息提供在第章中将会提到如果辅服务器是第一次启动或者有人清除了它的数据目录则辅服务器就向主服务器发出请求以得到域区文件的副本 域区传送操作很像Windows(NT或)的文件复制或者是Windows在域名服务器之间的WINS数据复制当辅服务器得到了主服务器域区文件的副本后它也能对名字查询提供授权的应答如果主服务器的域区文件有所改变或更新辅服务器将如何处理?在授权开始资源记录(SOARR)中包含的若干信息字段可指示辅服务器相隔多久检查主服务器的变化这些字段设置了超期时限和刷新频率SOA资源记录也有一个版本号或序列号关于SOA资源记录的更多信息请见第章 辅服务器将定期地向主服务器查询它所需刷新的域区文件具体的就是检查序列号是否有变化序列号是一种递增的指示数据库版本的数字如果序列号有所变化辅服务器就知道域区数据有了变化就会启动新的副本传递(可能是部分的也可能是完全的传送)部分传送是在RFC中定义的一种逐渐递增的传送即仅是被改变的部分而不是整个域区文件被传送 只有当序列号增大后辅服务器才会进行域区文件传送如果序列号因为某种原因而减少则辅服务器将认为它的域区文件副本是最新的并将继续使用直到期满如果因某种原因序列号变为则辅服务器的本地域区文件将被删除辅服务器就将启动一次传输从主服务器传送完整的新的域区数据文件但是无论在哪种情况下都是从它的主服务器获得它的数据 WindowsDNS服务器和BIND还有一种通告选项以启动辅服务器的更新这就是说主服务器可以通知辅服务器数据已变化以便加速传送新信息通告选项还可以提高安全性因为是由主服务器启动域区文件的传送主服务器的管理员提供了应通知的辅服务器列表而列表中的辅服务器只限于那些已经授权的服务器将启动数据传送从辅服务器转为主服务器有助于防止域区文件被非法窃走这是一系列使用通告选项来提高传送效率的令人信服的原因然而一些BIND服务器在从WindowsDNS接收到这样的传送时会丢弃自己的所有数据所以当计划用这种方式使用BIND辅服务器时应采用BIND 希望DNS查询在全局范围内都能得到迅速处理的机构应该在不同的地理位置上配置DNS服务器也许可以把部分域区数据放在其他合作机构的服务器上这样可以提供较好的本地查询性能而配置的冗余有助于在Internet连接不正常时继续工作 在有故障时即使目的主机不能接通辅DNS服务器仍然可以进行名字解析对于如发送邮件这样的服务这是很有用的因为如果在发送邮件时可以解析主机名但不能启动一次邮件发送过程则只需将邮件在发送队列中继续排队稍后再发送而发送邮件时如果连主机名都不能解析则只能退回邮件并给出主机未知错误 Windows把域区数据集成到活动目录中作为第三类域区从而逐渐模糊了标准主辅服务器之间的区别集成后仍然可以有标准辅服务器但也可能有多个同等的使用活动目录进行复制的辅服务器这在第章中将会提到那里将讨论一些有关活动目录技术的DNS问题 本章关于域名空间和域名服务器的讨论就到这里其余部分将集中于客户机客户机的查询和DNS服务器是如何协作工作的 |