Skip to main content

4. NSEC资源记录 (The NSEC Resource Record)

NSEC资源记录列出两个独立的内容: 包含权威数据或委托点NS RRset的下一个所有者名称 (按区域的规范排序),以及NSEC RR所有者名称处存在的RR类型集 [RFC3845]。区域中完整的NSEC RR集指示区域中存在哪些权威RRset,并且还形成区域中权威所有者名称的链。此信息用于为DNS数据提供认证的拒绝存在 (authenticated denial of existence),如[RFC4035]中所述。

因为区域中的每个权威名称都必须是NSEC链的一部分,所以对于包含CNAME RR的名称,必须 (MUST) 存在NSEC RR。这是对传统DNS规范[RFC1034]的更改,该规范声明如果名称存在CNAME,则它是该名称允许的唯一类型。在已签名区域中,RRSIG (见第3节) 和NSEC 必须 (MUST) 与CNAME资源记录存在于相同的名称。

有关区域签名者如何确定其必须在区域中包含哪些NSEC RR的讨论,请参见[RFC4035]。

NSEC RR的type值为 47

NSEC RR与类无关。

NSEC RR 应该 (SHOULD) 具有与SOA minimum TTL字段相同的TTL值。这符合负缓存的精神 ([RFC2308])。

4.1. NSEC RDATA线格式 (NSEC RDATA Wire Format)

NSEC RR的RDATA如下所示:

                     1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ Next Domain Name /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ Type Bit Maps /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

4.1.1. Next Domain Name字段 (The Next Domain Name Field)

Next Domain字段包含具有权威数据或包含委托点NS RRset的下一个所有者名称 (按区域的规范排序); 有关规范排序的解释,请参见第6.1节。区域中最后一个NSEC记录中的Next Domain Name字段的值是区域顶点的名称 (区域的SOA RR的所有者名称)。这表明NSEC RR的所有者名称是区域规范排序中的最后一个名称。

发送方在传输NSEC RR时禁止 (MUST NOT) 在Next Domain Name字段上使用DNS名称压缩。

给定区域不权威的RRset的所有者名称 (例如粘合记录) 禁止 (MUST NOT) 列在Next Domain Name中,除非在相同的所有者名称处至少存在一个权威RRset。

4.1.2. Type Bit Maps字段 (The Type Bit Maps Field)

Type Bit Maps字段标识在NSEC RR所有者名称处存在的RRset类型。

RR类型空间分为256个窗口块,每个块表示16位RR类型空间的低8位。使用单个八位字节窗口编号 (从0到255)、单个八位字节位图长度 (从1到32,表示用于窗口块位图的八位字节数) 和最多32个八位字节 (256位) 的位图来编码至少有一个活动RR类型的每个块。

块在NSEC RR RDATA中以数字递增顺序存在。

   Type Bit Maps Field = ( Window Block # | Bitmap Length | Bitmap )+

其中 "|" 表示连接。

每个位图以网络位顺序编码窗口块内RR类型的低8位。第一位是位0。对于窗口块0,位1对应于RR类型1 (A),位2对应于RR类型2 (NS),依此类推。对于窗口块1,位1对应于RR类型257,位2对应于RR类型258。如果设置了某位,则表示该类型的RRset存在于NSEC RR的所有者名称处。如果某位清除,则表示该类型的RRset不存在于NSEC RR的所有者名称处。

表示伪类型的位必须 (MUST) 清除,因为它们不会出现在区域数据中。如果遇到,读取时必须 (MUST) 忽略它们。

禁止 (MUST NOT) 包含没有类型存在的块。必须 (MUST) 省略位图中的尾随零八位字节。每个块的位图长度由存在于NSEC RR所有者名称处的RR类型集中在该块内具有最大数值的类型代码确定。未指定的尾随零八位字节必须 (MUST) 解释为零八位字节。

委托点处的NSEC RR的位图需要特别注意。必须设置与委托NS RRset对应的位以及父区域具有权威数据的RR类型对应的位; 必须清除父区域不权威的任何非NS RRset对应的位。

区域禁止 (MUST NOT) 为仅持有粘合记录的任何域名包含NSEC RR。

4.1.3. NSEC RDATA中通配符名称的包含 (Inclusion of Wildcard Names in NSEC RDATA)

如果通配符所有者名称出现在区域中,则通配符标签 ("*") 被视为文字符号,并且出于生成NSEC RR的目的,其处理方式与任何其他所有者名称相同。通配符所有者名称出现在Next Domain Name字段中,不进行任何通配符扩展。[RFC4035]描述了通配符对认证拒绝存在的影响。

4.2. NSEC RR展示格式 (The NSEC RR Presentation Format)

RDATA部分的展示格式如下:

Next Domain Name字段表示为域名。

Type Bit Maps字段表示为RR类型助记符序列。当助记符未知时,必须 (MUST) 使用[RFC3597]第5节中描述的TYPE表示。

4.3. NSEC RR示例 (NSEC RR Example)

以下NSEC RR标识与alfa.example.com关联的RRset,并标识alfa.example.com之后的下一个权威名称。

alfa.example.com. 86400 IN NSEC host.example.com. (
A MX RRSIG NSEC TYPE1234 )

前四个文本字段指定名称、TTL、类和RR类型 (NSEC)。条目host.example.com.是按规范顺序在alfa.example.com之后的下一个权威名称。A、MX、RRSIG、NSEC和TYPE1234助记符表示存在与名称alfa.example.com关联的A、MX、RRSIG、NSEC和TYPE1234 RRset。

上述NSEC RR的RDATA部分将编码为:

         0x04 'h'  'o'  's'  't'
0x07 'e' 'x' 'a' 'm' 'p' 'l' 'e'
0x03 'c' 'o' 'm' 0x00
0x00 0x06 0x40 0x01 0x00 0x00 0x00 0x03
0x04 0x1b 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x20

假设验证器可以认证此NSEC记录,它可以用于证明beta.example.com不存在,或证明没有与alfa.example.com关联的AAAA记录。[RFC4035]中讨论了认证的拒绝存在。


相关章节导航: