本章内容包括 ;数据库资源记录资源记录(ResourceRecord)简称RR组成了域区文件的内容是DNS的核心数据顾名思义资源记录包含DNS应该知道的重要资源信息这些资源就是其他的DNS服务器和主机该节将说明主要的资源记录类型并介绍它们的使用 ;缓存文件缓存文件(根提示)将标明根域名服务器使得任何DNS服务器都能很容易地找到域名系统树的根该节介绍缓存文件它的重要性以及如何使用 ;委托授权将你的主域名服务器向InterNIC注册使得域外的需要访问你的域名列表的客户机可以连接到这台服务器还可用域名服务器记录(NS记录)公布你的辅域名服务器该节将解释为什么要公布授权服务器 如果DNS是有生命的那么有些事它是靠直觉完成的而其他的功能是要靠学习才有的本章将介绍DNS应完成的基本工作即哪些DNS几乎是靠直觉完成的事情(从它的域区文件里得到资源信息)还将介绍各种资源记录的类型可用来使DNS完成更高级的任务的满足用户的需要(路由邮件服务定位信息以及利用密钥交换来提高安全结构)本章不涉及DNS最近才具有的新的动态升级功能 数据库资源记录 像任何其他数据库一样DNS的体系结构也是由表组成的每张表包含许多记录DNS数据库表称为域区文件(zonefile)大多数记录都有专门的含义因为它们标识了许多资源的位置它们甚至可以和其他表中的记录相联系资源记录类型包括授权开始记录SOA(StartOfAuthority)地址记录A(Address)指针记录Ptr(Pointer)等本章将在后面详细地介绍各种资源记录类型附录F资源记录和InterNIC缓存文件提供了一个完整的资源记录列表 在域区文件中能见到什么样的记录取决于若干因素首先要看是哪一种域区文件若是正向查找域区和反向查找域区就很少有相同的记录另一个决定域区文件内容的因素是管理员想要发布或者是需要发布什么信息本节将详细解释各种重要的记录类型应该对它们都很了解并知道它们是如何使用的 当把域区信息以文件形式存储时WindowsDNS把域区数据库文件存放在%Windows\system\dns目录下WindowsDNS也在\samples子目录下提供了若干模板文件以提供文件格式的例子 WindowsDNS服务器能在三处存储配置信息和域区信息配置信息一般存储在注册表里也能存储在兼容BIND的引导文件里(UNIX机器这样做)域区信息存储在域区文件或活动目录里DNS服务器引导配置信息在注册表里的位置是HKLMSystemCurrentControlsetServicesDNSZones文件名为BOOT不像UNIX的NAMEDBOOT文件WindowsDNS服务器允许它的引导文件里只有主服务器辅服务器和缓存服务器的信息图显示了WindowsDNS服务器Properties(属性)里的Advanced(高级)选项卡 当LoadZoneDataonstartup(启动时载入域区数据)选项设置为FromFile(从文件)时注册表信息就会自动产生一个引导文件当变成FromRegistry(从注册表)时先前的引导文件移入\backup子目录下不论是上述哪种情况注册表总是保持当前信息这种改变是在Apply(应用)按钮按下时即时生效的 这里容易引起误导的是除非活动目录被使用否则总是用域区文件来存储域区信息尽管在图中有FromActiveDirectoryandRegistry(从活动目录和注册表)选项域区文件(即真正的资源记录)还是不存储在注册表里当域区信息存储在活动目录里时域区记录通过LDAP协议传送至可见的目录对象尽管这些域区记录仍然用于任何辅服务器但主服务器上不再存在域区文件同时也不再有FromFile(从文件)这个选项 WindowsDNS域区文件的格式是与RFC兼容的并且本章中这样的格式同样应用于BIND域区文件和WindowsDNS文件本章所包括的信息将比在WindowDNS管理界面所能看到的要多得多这是因为实际的数据存储比所能看到的要复杂得多而在服务器中为尽量把事情简单化则只需对配置的选项和缺省值进行选择 RFCRFClRFCRFCRFCRFCRFC和RFC(可从wwwisiedu找到)是根域资源记录的最有权威的文件当使用DNS服务器管理控制器时WindowsDNS会自动格式化记录但如果使用引导文件选项并在WindowsDNS和BIND之间来回移动文件则需要知道如何使用文本编辑器来格式化记录以及如何让Windows接受引导文件WindowsDNS的一个出色的特征是它可以用DNS服务器管理控制台生成一个配置然后把配置存进一个引导文件里显然如果想从WindowsDNS转到基于UNIX/BIND的系统这是很有帮助的没有别的更好的方法 资源记录语法格式 以下的内容摘自RFC由PaulMockapetris编写解释了RR格式的语法(第~页) 这些文件的格式是一系列的条目条目基本上是以行为单位的但也可以用括号来续行并且续行文本的字符中可以包括CRLF(回车换行)任何数量的Tab键和空格键的组合都相当于一个分隔符用以分隔条目中的组成项在主文件任何一行的后面都可以加注释注释以分号开始定义以下条目 以上第一条定义空行在文件的任何地方都可使用空行空行可以带注释也可以不带注释以上还定义了两个控制条目$ORIGIN和$INCLUDE$ORIGIN后必须跟一个域名其作用是将当前域设置为条目中所指定的域$INCLUD条目将在当前域名文件中插入一个域名文件$INCLUDE条目中的域名是任选项目的是指定包含文件的当前域名$INCLUDE条目也可以带注释注意不论$INCLUDE条目是否改变$INCLUDE文件的域都不会改变父文件(当前文件)的当前域 后两个条目代表RR(资源记录)的格式如果RR条目以空格开始则这个RR是归以上条目中最后指明的域所有如果一个RR条目是由域名(<domainname>)开始则重新设定记录的所有者<rr>的内容可以有以下两种格式 RR以可选项TTL和Class开始然后是与类型(type)和类别(class)相应的type段和RDATA(记录数据)段class和type使用标准助记符TTL是个十进数若省略class和TTL的值则缺省为最后一次曾指定的值因为type和class的助记符是不会重复的对它们的句法分析将是唯一的(这里所列的顺序和示例与实际资源记录中的顺序是不同的这里所列的顺序更便于进行语法分析)带有<domainname>的记录将占主文件数据的绝大部分 域名的每一部分用字符串表示并用.分开域名中可以使用任何字符以.结尾的域名称为绝对域名是完整的域名不以.结尾的域名称为相对域名实际的域名是由相对域名和在$ORIGIN$INCLUDE指定的源相连接后组成的或者是主文件在调用例程时的目的参数当没有源可用时相对域名则是一种错误 字符串<characterstring>可用两种方式来表示可以是没有内部空格的连续字符集或者是用??括起来的字符集这时的字符集可以用除了?以外的任何字符如果要用?符则必须和反斜槓\连用 这些文件都是文本文件但有些字符或表示法有特殊的意义特别是 表示根 @单独的@符表示当前的源 \X这里的X是除了~数字符以外的任意字符这种表示法是要说明这里的X符只是个普通的字符而没有任何特殊的含义如?\?就表示一般的.而不代表根 \DDD这里的D是八进制数DDD是相应十进制数的八进制表示所得到的DDD也是作为文本而没有其他的意义 ()括号用于括起跨行的数据括号内若有行结束符也不承认是行的结束 分号用来开始注释分号后的内容可以忽略 本章后面所描述的每种RR的语法表示和举例均出自RFCRFCRFC这些文档是主文件格式的权威参考资料不过还是要提到一些资料 ;资源记录条目不区分大小写所以hostname=HOSTNAME=HOSTNAme ;在资源记录的名字中每个标号有个字符长度的限制每个全域名也不能超过个字符 ;服务资源记录(SRV)中的下划线在RFC目前的修订本中被指定也许是暂时的在指定服务和协议域时使用目前的RFCbis草案意图废除年月日的RFCisdvaftictf=dnsindifcbistxt文件 ;为了国际化RFC采用了标准的增加字符集的支持它在RFC后就被废除了RFC中指定了UTF标准它并不是专门处理DNS的字符集这个标准已经内置于WindowsDNS的资源记录支持中了 下划线使用WindowsNT中经常使用下划线来命名模式但是当把NetBIOS名字映射到DNS域名空间时就会有问题Windows管理员必须认识到目前下划线在DNS主机和域名字中是非法的有些域名服务器仅仅不提倡使用下划线但有些服务器却返回错误信息和拒绝查询在Windows中因为DNS和Windows名字空间必须相互紧密联系所以下划线的使用是一个典型的问题剩下的问题便是UTF名字或像下划线这样的特殊字符的使用将给DNS服务器协同工作带来麻烦 开始授权记录SOA 开始授权记录一般称为SOA记录(StartofAuthority)是所有正向和反向域区文件中必要的第一个条目由RFC定义的SOA记录提供了每个域需要的若干关键信息最重要的是SOA记录中指定了域的授权域名服务器图l是SOA记录的DomainNameServerManagerProperties(DNS管理器属性)对话框在服务器列表中双击域区图标就可以打开该对话框 SOA记录非常重要它们包含以下各段(在图中可以看到其中的某些值)以下的列表中给出了所有的段(但不一定和WindowsDNS管理器中所显示的完全相同) |