这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

DNS Record

DNS Record 介绍

1 - 概述

DNS Record 概述

DNS 记录,在RFC规范中称为 Resource Recode/资源记录,缩写为RR。

Resource Recode 定义

RR格式

RR的定义来自 rfc1035 中 3.2 RR definitions。所有的RR都有如下所示的相同的顶层格式:

                                    1  1  1  1  1  1
      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                                               |
    /                                               /
    /                      NAME                     /
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                      TYPE                     |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                     CLASS                     |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                      TTL                      |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                   RDLENGTH                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
    /                     RDATA                     /
    /                                               /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

各个字段的具体格式和描述如下:

字段 格式和描述
NAME 所有者名称(owner name),例如,这个资源记录匹配的节点的名称
TYPE 包含 RR TYPE 代码之一的 2 个八位字节(octets)
CLASS 包含 RR CLASS 代码之一的 2 个八位字节(octets)
TTL 32位有符号整数,指定在再次咨询信息源之前此资源记录可以被缓存的时间间隔。零值被解释为该 RR 仅能用于正在进行的流程,不应当被缓存。例如,总是将零 TTL 分配给 SOA 记录,以便禁止缓存。零值也可以用于极短暂的数据。
RDLENGTH 无符号 16 位整数,指定以八位字节计的 RDATA 字段的长度。
RDATA 可变长度的八位字节字符串,用来描述资源。这个信息的格式取决于资源记录的 TYPE 和 CLASS 。

TYPE 值域

TYPE 字段用于资源记录。注意,这些类型是 QTYPE 的子集。

TYPE 含义 备注
A 1 a host address/主机地址
NS 2 an authoritative name server/权威名称服务器
MD 3 a mail destination/邮件目的地 被废弃,使用 MX
MF 4 a mail forwarder/邮件转发器 被废弃,使用 MX
CNAME 5 the canonical name for an alias/别名的正则名称
SOA 6 a marks the start of a zone of authority/标记权威区域的开始
MB 7 a mailbox domain name/邮箱域名 EXPERIMENTAL
MG 8 a mail group member/邮件组成员 EXPERIMENTAL
MR 9 a mail rename domain name/邮件重新命名域名 EXPERIMENTAL
NULL 10 a null RR EXPERIMENTAL
WKS 11 a well known service description/众所周知的服务描述
PTR 12 a domain name pointer/域名指针
HINFO 13 host information/主机信息
MINFO 14 mailbox or mail list information/邮箱或邮件列表信息
MX 15 mail exchange/邮件交换
TXT 16 text strings/文本字符串
SRV 33 service and protocol/服务和协议 在rfc2052中引入

QTYPE 值域

QTYPE 字段出现在查询的 question 部分。QTYPE 是 TYPE 的超集,因此所有 TYPE 是合 法的 QTYPE。此外,定义有下述 QTYPE:

QTYPE 含义 备注
AXFR 252 A request for a transfer of an entire zone/请求传送整个区域
MAILB 253 A request for mailbox-related records (MB, MG or MR)/请求相关邮箱记录(MB、MG 或 MR)
MAILA 254 A request for mail agent RRs/请求邮件代理 RR 被废弃,参阅 MX
* 255 A request for all records/请求所有记录

CLASS 值域

CLASS 字段出现在资源记录中。定义有下述 CLASS 助记符和值:

助记符 含义 备注
IN 1 the Internet/互联网
CS 2 the CSNET class/CSNET 类 被废弃,仅在某些被废弃的 RFCs 中用于举例
CH 3 the CHAOS class/CHAOS 类
HS 4 Hesiod [Dyer 87]

备注:

QCLASS 值域

QCLASS 字段出现在查询的 question 部分。QCLASS 值是 CLASS 值的超集;每一个 CLASS 都是合法的 QCLASS。除了 CLASS 值以外,定义有下述 QCLASS:

QCLASS 含义 备注
* 255 any class/任何类

标准 Resource Recode

下述 RR 定义预期会在所有类中出现,至少有可能。尤其是,NS、SOA、CNAME 和 PTR 将在所有类中使用,并且在所有类中有相同格式。因为它们的 RDATA 格式是已知的,在这些 RR 的 RDATA 部分中的所有域名可以压缩。

<domain-name> 是表示为一系列标签的域名,并终止于零长度的标签。<character-string> 是单一长度的八位字节,后面跟有字符的数量。<character-string> 被看作是二进制信息,其长度最多可达 256 个字符(包括长度八位字节)。

各个RR的详细格式见后面章节。

其他

显性URL转发记录: 将域名指向一个http(s)协议地址,访问域名时,自动跳转至目标地址。例如:将www.a .com显性转发到www.b.com后,访问www.a.com时,地址栏显示的地址为:www.b.com

隐性UR转发记录L: 将域名指向一个http(s)协议地址,访问域名时,自动跳转至目标地址,隐性转发会隐藏真实的目标地址。例如:将www.a .com显性转发到www.b.com后,访问www.a.com时,地址栏显示的地址依然是:www.a.com

2 - A记录

将域名关联到托管相应网域服务的计算机物理 IP 地址

A 记录或地址记录(也称为主机记录)可将域名关联到托管相应网域服务的计算机物理 IP 地址。使用 Google Cloud 服务时,您可以添加 A 记录来启用您的“裸”网域地址。

3 - AAAA记录

AAAA记录是A记录的升级版本,指向IPv6地址

AAAA记录和A记录类似,两者都是指向IP地址,但对应的IP版本不同。

  • A记录指向IPv4地址

  • AAAA记录指向IPv6地址

AAAA记录是A记录的升级版本。

4 - NS记录

用于确定哪些服务器为一个网域传达 DNS 信息

域名服务器 (NS) 记录用于确定哪些服务器为一个网域传达 DNS 信息。您的网域通常会有主要的和辅助的域名服务器记录。

一般来说,为了服务的安全可靠,至少应该有两条NS记录,而A记录和MX记录也可以有多条,这样就提供了服务的冗余性,防止出现单点失败。

RDATA格式

NS 记录的 RDATA 格式如下:

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/                     NSDNAME                     /
/                                               /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

格式说明:

含义
NSDNAME 指向主机的 <domain-name>,对于指定的类和域,该主机应该是权威的。

查询方式

5 - CNAME记录

将一个别名关联到另一个真正的或规范的域名

CNAME 记录(即规范名称记录)将一个别名关联到另一个真正的或规范的域名。例如,www.example.com 可能会关联到 example.com。

A记录与CNAME记录的关系

A记录是把域名解析到IP地址,而CNAME记录是把域名解析到另外一个域名,而这个域名最终会指向A记录,在功能实现在上A记录与CNAME记录没有区别。

CNAME记录在做IP地址变更时要A记录方便。CNAME记录允许将多个名字映射到同一台计算机,当有多个域名需要指向同一服务器IP,此时可以将一个域名做A记录指向服务器IP,然后将其他的域名做别名(即:CNAME)到A记录的域名上。当服务器IP地址变更时,只需要更改A记录的那个域名到新IP上,其它做别名的域名会自动更改到新的IP地址上,而不必对每个域名做更改。

RDATA格式

CNAME 记录的 RDATA 格式如下:

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/                     CNAME                     /
/                                               /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

格式说明:

含义
CNAME 是一个<domain-name>,它规定所有者的正则或主要名称。该所有者名称是别名。

6 - TXT记录

为您所在网域之外的来源提供文本信息

TXT 记录是为您所在网域之外的来源提供文本信息的一种 DNS 记录,可用于多种用途。该记录的值可以是人工可读文本,也可以是机器可读文本。

可任意填写,可为空。

使用场景:

  • 一般做一些验证记录时会使用此项,如:做SPF(反垃圾邮件)记录
  • 使用 Google Cloud 服务时,TXT 记录可用于验证域名所有权和实施电子邮件安全措施,如 SPF、DKIM 和 DMARC。

RDATA格式

TXT 记录的 RDATA 格式如下:

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/                  TXT-DATA                     /
/                                               /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

格式说明:

含义
TXT-DATA 一个或多个<character-string>

7 - MX记录

将一个网域的电子邮件定向到托管该网域用户帐号的服务器

邮件交换 (MX) 记录将一个网域的电子邮件定向到托管该网域用户帐号的服务器。如果您是 G Suite 用户,要设置 Gmail,则需要将 MX 记录定向到 Google 邮件服务器。一个网域可定义多条 MX 记录,每条记录有不同的优先级。如果邮件通过最高优先级记录无法递送,则采用第二优先级,以此类推。

RDATA格式

MX 记录的 RDATA 格式如下:

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                  PREFERENCE                   |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    /                   EXCHANGE                    /
    /                                               /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

格式说明:

含义
PREFERENCE 16 位整数,它规定在同一所有者内,众多 RR 间,给与这个 RR 的优先权。值越低优先权越高。
EXCHANGE 一个<domain-name>,它指定愿意为所有者名称充当邮件交换的主机。

8 - PTR记录

A记录的逆向记录,负责将IP反向解析为域名

PTR记录是A记录的逆向记录,又称做IP反查记录或指针记录,负责将IP反向解析为域名

RDATA格式

PTR 记录的 RDATA 格式如下:

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/                     PTRDNAME                  /
/                                               /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

格式说明:

含义
PTRDNAME 指向域名名字空间中某个位置的 <domain-name>

9 - SOA记录

表示此域名的权威解析服务器地址

SOA叫做起始授权机构记录,NS用于标识多台域名解析服务器,SOA记录用于在众多NS记录中那一台是主服务器。

SOA 记录表示此域名的权威解析服务器地址。 当要查询的域名在所有递归解析服务器中没要域名解析的缓存时,就会回源来请求此域名的SOA记录,也叫权威解析记录。

RDATA格式

SOA 记录的 RDATA 格式如下:

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    /                     MNAME                     /
    /                                               /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    /                     RNAME                     /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    SERIAL                     |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    REFRESH                    |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                     RETRY                     |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    EXPIRE                     |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    MINIMUM                    |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

格式说明:

含义
MNAME 名称服务器的 <domain-name>,该名称服务器是这个区域的数据起源或主要源。
RNAME 一个<domain-name>,它规定负责这个区域的个人的邮箱。
SERIAL 该区域的原始副本的无符号 32 位版本号。区域传递保存这个值。这个值叠起(wrap),并且应当使用系列空间算法比较这个值。
REFRESH 区域应当被刷新前的 32 位时间间隔
RETRY 在重试失败的刷新前,应当等待的 32 位时间间隔
EXPIRE 32 位时间值,它规定在区域不再是权威的之前可以等待的时间间隔的上限
MINIMUM 无符号 32 位最小值 TTL 字段,应当用来自这个区域的任何 RR 输出它。

参考资料

10 - SRV记录

记录服务器提供的服务

SRV记录是服务器资源记录的缩写,记录服务器提供的服务,SRV记录的作用是说明一个服务器能够提供什么样的服务。

SRV记录是DNS记录中的新鲜面孔,在RFC2052中才对SRV记录进行了定义,因此很多老版本的DNS服务器并不支持SRV记录。

RFC2782

概述和理由

目前,必须知道服务器的确切地址才能联系它或者广播问题。

SRV RR允许管理员为单个域名使用多个服务器,轻松地将服务从一个主机移动到另一个主机,并将某些主机指定为服务的主服务器,将其他主机指定为备份。

客户端要求特定域名的特定服务/协议(这里使用的词汇"域名"是RFC 1034上严格定义的),并获取任何可用服务器的名称。

请注意,在本文档引用“地址记录”时,它表示A RR,AAAA RR或其最现代的等价物。

RFC定义的格式

RFC2782中定义的格式是:

_Service._Proto.Name TTL Class SRV Priority Weight Port Target

各字段详细说明:

字段 说明
Service 所需服务的符号名称

在Assigned Numbers或本地定义。 服务标识符前面加上下划线_,以避免与自然界中出现的DNS标签发生冲突。
Proto 所需协议的符号名称

前面加下划线_,以防止与自然界中出现的DNS标签发生冲突。 _TCP_UDP目前是该字段最常用的值,但可以使用由Assigned Numbers或本地定义的任何名称。 Proto不区分大小写。
Name 此RR所指的域名。在这个域名下SRV RR是唯一的。(英文原文好像有些语法问题)
TTL
Class
Priority
Weight
Port 服务在目标主机上的端口。所需协议的符号名称,前面加下划线(_),以防止与自然界中出现的DNS标签发生冲突。 _TCP和_UDP目前是该字段最有用的值,但可以使用由Assigned Numbers定义的任何名称或本地的(如Service)。 Proto不区分大小写。
范围是0-65535。 这是网络字节顺序中的16位无符号整数。 通常在Assigned Numbers中指定,但不一定如此。
Target 目标主机的域名。

域名必须有一个或多个地址记录,域名绝不能是别名。敦促(但不强求)实现在附加数据部分中返回地址记录。除非并且直到将来的标准操作允许,否则名称压缩不能用于此字段。

值为“.” 表示该域名明确无法提供该服务。

###SRV记录和微软的关系

SRV记录在微软的Active Directory中有着重要地位,大家知道在NT4时代域和DNS并没有太多关系。但从Win2000开始,域就离不开DNS的帮助了,为什么呢?因为域内的计算机要依赖DNS的SRV记录来定位域控制器!微软的即时通讯服务器Live Communications Server也可以依靠SRV记录定位即时通讯服务器。

SRV 记录一般是为Microsoft的活动目录设置。DNS可以独立于活动目录,但是活动目录必须有DNS的帮助才能工作。为了活动目录能够正常的工作,DNS服务器必须支持服务定位(SRV)资源记录,资源记录把服务名字映射为提供服务的服务器名字。活动目录客户和域控制器使用SRV资源记录决定域控制器的IP地址。

鉴于SRV记录可以定位特定服务器的位置,我们可以预计,在微软将来的服务器产品中SRV记录将发挥越来越多的作用。