本章内容包括 ;动态DNS(DDNS)从windows 和DNS管理员的角度对DNS最新的动态更新特征作了一个简要的概述该节略述了安全连结问题和域区文件清除还详细讨论了windows 中的废物清理问题 ;DNS域区的活动目录集成论及了用活动目录来存储DNS域区文件为何这样使用的原因它提供什么服务以及面对决定是否使用这个可选功能时的考虑还详细讨论它提供的动态更新安全问题 ;依赖于SRV记录的活动目录概览windows 域环境中SRV记录的用法在所有windows 支持的DNS的新特征中SRV记录是支持活动目录所必需的 ;把活动目录与DNS结合起来(或不结合)收集一些因素的服务以及在使用这项技术时哪些方面需要作出有见地的决定 windows 的活动目录实现了LDAP(轻便目录访问协议)目录服务一段历史可以帮助理解这意味着什么最初的X目录服务协议因为种种原因没能完全实现商业化从而退出了历史舞台特别指出的是正是这样一个如此复杂的规范导致了它的一个子集的实现那就是LDAP协议 尽管LDAP协议的特征仍然在发展但windows 现在支持一个事实是现有的LDAP协议的实现通常不支持全球范围的定位服务DNS便是其中一个X最初的概念是只提供定位的目录结构及在目录结构中定位的能力而LDAP协议的实现却集中于目录结构的使用更甚于对它的定位 活动目录的设计利用了现有DNS的定位能力并通过活动目录与域名空间的紧密联系而实现结果活动目录里最高层的对象在名字上看起来像DNS域这恰恰是因为在这儿使用的域控制器对象代表windows 的域边界对windows 的最初版本而言它们本来是打算以有相同结构的DNS域和子域命名的 这里隐含的意义有很多本章分析了一些源于这种设计及源于使用支持此设计的DNS的最新特征的能力相互作用以及缺陷 动态DNS DDNS(动态DNS)RFC详述了能被DNS客户端用来请求改变DNS域的更新操作(定义了新的DNS操作码)和消息格式正如我们所看到的域内容必须在本域的主服务器上产生于是动态DNS定义当辅服务器接收到一个更新请求时应该被向前传送到主服务器进行如果认为这些听起来很简单易懂那么就等一会儿后面还有很多内容更新很容易实现就难了 通过对客户机所在域的授权域名服务器的定位(对NS记录的请求)来更动态更新客户端这样可以通过请求地址注册或任意的指针记录的注册来广播它的存在windows 实际上是查询SOA记录而不是NS记录然后直接向此域的主机注册在客户机做完这些以后它的名字就可以被解析了同时IP地址也能被任意检验就象资资源记录被手工键入的一样 如果这样做很简单的话任何一个DNS管理员都会像一个刚拥有一辆新自行车的小孩一样激动正如我们所知道的不付出代价或冒险是很难从新事物中获利的否则老早以前就这样做了 什么是动态DNS RFC说明了DNS的动态更新能力它介绍了DNS更新消息格式利用更新消息格式客户端可以删除一个资源记录添加一个资源记录或检测与维护先前状态 RFC详细说明了记录集的用法例如在一个DNS域里对WWW有多个相同名字(就像多个A记录一样)的记录集更新操作可能针对单个资源记录一个资源记录集或多个资源记录集通过动态更新可以添加资源记录也可以删除资源记录和资源记录集 测试一定的规则是否适合能够应用(例如对没有A记录存在)这些测试中有的是更新请求能继续下去而必须使用的先决条件有的只是没有相关操作的简单的维护这些维护利用了一种更新消息这种更新消息有一个没有相关更新操作的测试从而提供了一种查询DNS数据库以确定某些资源记录或资源记录集是否存在的简单方式 DNS服务器告知客户机维护测试或者更新操作的输出结果如果更新操作有相关操作和必需的先决条件就由DNS服务器实现更新在这种情况下更新在一种完全无反应的方式下进行也就是说此时的更新操作是原语 对于对单个资源记录的简单的添加或删除请求更新消息是没有限制的更新请求可以删除整个资源记录集因为对通配符使用的限制更新操作需要被清楚地指定 RFC规定了实时指定的或标准的RFC安全保障用以施加于更新过程但却并未为此定义一套机制RFC首次定义了安全DNS动态更新规程动态更新的安全问题在继续发展许多标准的RFC方法需要公共密钥机制提供支持在windows 的最初版本中实现了支持Kerberos的安全方法(见本章后续章节) windows 客户端对动态DNS的使用 上节提到windows 客户端可以直接到主DNS服务器进行DNS更新之所以能这样做是因为对域数据的任何改变都要在SOA服务器上进行windows 第一版的客户端配置的动态DNS更新的缺省值是每小时试图对它的DNS条目刷新一次 后续章节将会更清楚地讲到不必要的更新带来了整个系统不必要的开销所以windows 客户端做的其实比它们被指示的更高明当它们注册的时候它们首先发送一个只有断言的更新即测试一下DNS所知道的东西从客户端的角度来看是否是正确的如果是则不必更新如果客户端确实需要更新并且域区是活动目录集成的它将在注册失败后尝试是否存在任何其他主服务器如果客户端仍然失败更新过程将在分钟后重试并且等待分钟如果仍然不成功则将在再一次尝试之前等待分钟一台windows 的机器在被设置为动态更新DNS之后将会坚持不懈地让自己为人所知 第章中讨论了windows DHCP(动态主机配置协议)服务器代表客户机进行注册的能力它能被设置成多种方式但windows 客户端的缺省值是处理A记录而DHCP服务器的缺省值是处理PTR记录windows NTDHCP服务器没有这种能力DHCP能被设置为既注册记录类型又能对非windows 客户端执行这种注册这都是通过升级安全措施和注册清理来实现的(见后续章节) 问题是什么 既然动态DNS能让DNS管理员从维护域区文件的繁重劳动中解脱出来并且在年月的RFC文件中已被定义那么为什么它还是很少被使用?或者说在使用动态DNS之前究竟需要知道些什么? 安全 对前一个问题的回答用一个词来说就是安全问题如果任何人都能注册的话欺骗和抢劫之间的很多变化几乎就变的微不足道了比如说对于的A记录或者更大胆一点对域名服务器的A记录如果不对谁的机器或什么机器被允许更新哪个记录进行什么控制的话则DDNS将像一项极限运动—只有勇敢者才去试 微软已通过活动目录对域区的集成实现了对动态更新过程的保护集成特征将是本章接下来的主要话题 服务广播 在域区能被动态更新后你也许会注意到新的SRV服务记录开始出现活动目录依靠使用SRV记录来定位它必要的服务例如预计在将来_http_tcp和_ftp_tcp将用SRV记录来实现这对你的环境来说也许是个问题所以要清楚windows 这艘大船已经完全准备好了并且能够让SRV记录上载至它的最大载量 域区清理 安全更新的另一方面的问题是更新沖突与域区清理如果更新操作包括应该被允许的删除操作被拒绝记录将会变成孤立的例如如果客户端在允许移动已注册的记录时失败并且在过一会后又被安全机制拒绝移动那么谁来清除这些记录? 假设DNS服务器拒绝对一个已在域中使用名字域或相应IP地址的A记录进行注册更新的话那么考虑一下DHCP客户端试图注册其已存在的名字或者是其他的机器将要被解析到它所注册的IP地址时的情形 这只是对过期记录造成的问题的两个概念上的例子如果对于更新过程没有安全问题这些问题就会消失当客户端试图更新时他就会成功然后客户端就能执行查询和更新操作来消除潜在沖突以及旧的记录来保证更新的正确执行 DNS组织提供的一个明显的选择是在牺牲清理的代价下得到安全保障但是问题在于旧的记录将成为降低整个机器可用性的障碍 在windows 的缺省操作中只允许DNS管理员和创建该资源记录的客户机删除此记录因此如果注册一个记录的客户机抛弃了此记录它将继续保留在DNS数据库里直到其他什么操作被执行而把它清除使用DHCP协议进行注册的一个动机是清除旧记录的责任能够被移植到一个更稳定的DHCP服务器上去别忘了客户机能够改变并且经常改变他们的行动 服务影响 动态DNS的使用也给域区行为带来新的影响也带来完成工作的新方法例如使用DNS记录进行DHCP客户机的注册提供了一个对更早的WINS的DNS集成的标准替换再比如说当动态DNS和SRV记录类结合时动态DNS提供服务广播能力该服务以前仅可在windows 系统中通过NetBIOS名字获得 动态域区是指不断变化(至少是可能变化)的域区不仅要求引入域区传送机制还带来了一些新的问题域区传递如何提供对域区一致的拷贝?DNS管理员如何手动地编辑一个域区文件并且在没有版本序列号时如何进行载入?你可能会说干嘛要手动编辑呢?动态DNS已经把我们从那一堆改变方法中解脱出来了是的但是域区清理呢? windows 试图提前考虑这些问题DNS服务器在传送过程中锁定域区以防改变然而对于传送而言防御的第一要务是使用递增传送的通告选项其次是根据域区的大小来设计它以便进行完全传送时它们能尽量简单(因为锁定的缘故)DNS服务器的改变日志是如此的深所以当被请求的递增改变超出了日志里已注册的改变时一些IXFR请求会带来AXFR传送活动目录集成域区在主服务之间避免了这种可能的问题但在向辅服务器传递时却未能避免 |