Chinaunix首页 | 论坛 | 博客
  • 博客访问: 163718
  • 博文数量: 48
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 370
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-08 18:10
文章分类

全部博文(48)

文章存档

2009年(2)

2007年(46)

我的朋友

分类:

2007-07-17 13:33:47

的原文描述

RRDNS协议包中是二进制,通常在域名服务器或解析器中都是高度编码的,在RFC 1034的例子中,在管理文件采用了一个相似的格式,用来展示RR记录的内容,这个格式里,大部分的RR都是一行,连续多行使用括号括起来。

行开头是RR的拥有者,如果开头是空的,那么拥有者与前一个RR记录相同,空行是为了容易阅读。

拥有者后面是TTL,类型( type)和类(class),类型和类是前面定义的,TTL是类型字段前面的整数。为了避免不正确的断句,typeclass是不相连的,TTL是整数,跟着是typeis always last,最后?)。例子中IN类和TTL值经常为了好看而省略。

RR的资源数据或RDATA 部分使用一些短语代表数据。

例如,我们显示RR的信息如下:

ISI.EDU.

MX

10 VENERA.ISI.EDU.

 

MX

10 VAXA.ISI.EDU

VENERA.ISI.EDU

A

128.9.0.32

 

A

10.1.0.52

VAXA.ISI.EDU

A

10.2.0.27

 

A

128.9.0.33

MXRRs拥有RDATA 部分,它包含了16位的数和一个域名,有IP地址的RR使用标准IP地址格式,包含32位互联网地址。

例子中有6RR3个域史每个都有2RR

相近的:

XX.LCS.MIT.EDU. IN

A

10.0.0.44

CH

A

MIT.EDU. 2420

这里显示2XX.LCS.MIT.EDU 的地址,每个描述不同的类。

记录的讨论

如同上面的描述,域名服务器存储的信息就像是一系统的RR记录,每一个都包含了指定域名的部分信息(通常是这样,但不总是,一个主机)。简单的可以理解RR是一个格式化的数据,域名匹配一个相关的数据,并存储一些其它信息,以帮助系统确定何时使用这个RR记录。

MX 记录用来控制邮件传送,其中的数据是优先级和域名。优先权控制邮件传送的尝试顺序,数小的优先,如果两个优先级相同,服务器随机选择一个。如果某个优先级下没有服务器响应,邮件传送程序将使用下一个优先级,优先级数字没有绝对的意义,它们只对应与同一域名的其它的MX记录。邮件传送的主机给定域名,它必须有一个相关的A记录,只有CNAME是不够的。

对于一个给定的域,如果即有CNAME记录又有MX记录,那么MX记录是错误的,并会被忽略。替代的是,邮件会被传送到CNAME指向的MX记录指定的服务器中。(For a given domain, if there is both a CNAME record and an MX record, the MX record is in error, and will be ignored. Instead, the mail will be delivered to the server specified in the MX record pointed to by the CNAME.,晕,有些前后不理解的矛盾)

example.com.

IN

MX

10

mail.example.com.

 

IN

MX

10

mail2.example.com.

 

IN

MX

20

mail.backup.org.

mail.example.com.

IN

A

10.0.0.1

 

mail2.example.com.

IN

A

10.0.0.2

 

例如:

邮件传送将会尝试mail.example.com mail2.example.com (随机顺序),如果两个都失败了,则尝试使用mail.backup.org

设置生存时间(TTL

RR记录的生存时间字段是一个32位以秒为单位的,它主要用于解析器缓存RR记录。它描述这个RR记录可以被缓存多长时间,以下是3种当前使用的TTL

SOA

SOA中最后一个字段是否定缓存TTL。这控制了其它服务器对no-such-domain (NXDOMAIN)缓存多长时间,这期间会回应NXDOMAIN

对于否定的缓存最长时间是3 小时 (3h)

$TTL

$TTL 指示Zone文件的顶部(SOA之前) 设置的每个RR记录默认TTL值,而不需要单个指定。

RR TTLs

每个RR 都可以有TTL字段,它就控制其它服务器可以缓存这个RR记录的时间。

所有这些TTL默认都是以秒为单位,单位也可以显式的指定,例如:1h30m,意思是1个小时又30分钟。

中的反向域名解析

反向域名解析(Reverse name resolution ,就是从IP地址到域名) in-addr.arpa 域和 PTR 记录完成。in-addr.arpa 中的条目是从低位到高位的顺序排列的,从左到右读。这和IP地址通常书写的方式相反。因此,一台主机的IP地址是10.1.2.3 in-addr.arp对应则是3.2.1.10.in-addr.arpa,这个名字应该有一个PTR 资源记录,它的数据字段是主机名或者是多个PTR记录(如果该主机有不止一个名字),例如,在 [example.com]域中:

$ORIGIN

2.1.10.in-addr.arpa

3

IN PTR foo.example.com.

注意: 例子中$ORIGIN 那一行是为了提供文本给那些不需要出现实际使用???,它们在这里只是为了说明那个example是原来列出的相连的。

其它的区域文件的指针(Other Zone File Directives

区域管理文件的格式最初在RFC 1035中定义,后来又被扩展。区域管理文件的格式自己是独立的类,它里面所有的记录必须是相同的类。

这些指针包括$ORIGIN, $INCLUDE$TTL.

指针

语法: $ORIGIN domain-name [ comment]

$ORIGIN 设置域名,它添加到任何不合格的记录后面。当一个区域文件被读入,这个文件中有一个$ORIGIN <zone-name>,那么这个$ORIGIN 就会添加这个$ORIGIN 的参数到那些不是绝对域名的字段。

$ORIGIN example.com.
WWW     CNAME   MAIN-SERVER

等效于:

 CNAME MAIN-SERVER.EXAMPLE.COM.

指针

语法: $INCLUDE filename [origin ] [ comment ]

读并处理文件filename ,就象这个文件就在$include这个位置。如果后面还有origin ,这个文件处理时会加入$ORIGIN 设置的值,否则使用当前的$ORIGIN 值。

注意: RFC 1035 指定当前的origin 应该存在$INCLUDE之后,但是不管当前域名是否被保存它都是无效的,BIND 9将它们两个都保存,这就背离了RFC 1035的设计。

指针

语法: $TTL default-ttl [comment ]

为以后没有明确定义生存时间的字段设置默认生存时间,有效的TTL值是0-2147483647 秒。

$TTL RFC 2308中定义。

管理文件扩展:$GENERATE 指针

语法: $GENERATE range lhs type rhs [ comment ]

$GENERATE 用来建立一组RR,他们的区别部分是由一个迭代程序生成。$GENERATE 能够用来方便的生成一组记录,用来支持一个/24的子网,这在RFC 2317的无类的 IN-ADDR.ARPA 中描述。

$ORIGIN 0.0.192.IN-ADDR.ARPA.
$GENERATE 1-2 0 NS SERVER$.EXAMPLE.
$GENERATE 1-127 $ CNAME $.0

等效于:

0.0.0.192.IN-ADDR.ARPA NS SERVER1.EXAMPLE.
0.0.0.192.IN-ADDR.ARPA. NS SERVER2.EXAMPLE.
1.0.0.192.IN-ADDR.ARPA. CNAME 1.0.0.0.192.IN-ADDR.ARPA.
2.0.0.192.IN-ADDR.ARPA. CNAME 2.0.0.0.192.IN-ADDR.ARPA.
...
127.0.0.192.IN-ADDR.ARPA. CNAME 127.0.0.0.192.IN-ADDR.ARPA.

range

范围:可以是1或两种格式,start-stop(开始-结束)或者start-stop/step(开始-结束/步长)。使用第一种格式,步长是1,两种格式中,开始、结束和步长值都必须是正数。

Lhs

lhs 描述RR记录建立者的名字。任何在lhs中单个的“$ 符号会被替换成迭代生成的值。想在输出中得到$,需要使用\$ $ 可以选择性的跟一个修改器,它用来改变生成的值,字段宽度和基本值。修改器由一个紧跟在$后的“{”开始,如同 ${offset[,width[,base]]},例如 ${-20,3,d},它先从当前值减20,生成的值10进制的3位数(in a zero padded field),可以的输出格式有10进制decimal (d), 8进制octal (o) 16进制hexadecimal (x or X 大写),默认的修改器是${0,0,d},如果lhs 不是绝对的域名,当前的 $ORIGIN 值会加到这里。

为了兼容以前的版本,$$仍就输出一个单独的$

Type

当前,只支持PTR, CNAME, DNAME, A, AAAA and NS.

Rhs

rhs 是域名,它的处理过程类似于lhs

$GENERATE 指针是BIND 的扩展,并不是标准的区域文件格式。

阅读(1183) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~