域名系统(DNS,Domain Name System)是因特网的地址簿。DNS 通过映射不容易忘记的域名(例如example.com
)到诸如192.0.2.8
或0123:4567:89ab:cdef:0123:4567:89ab:cdef
这样的 IP 地址,将 Web 流量引导至您的 Linode 并通过电子邮件发送到您的收件箱。本篇指南介绍了基本的 DNS 概念以及不同类型的 DNS 记录(DNS Record)。
在添加任何 DNS 记录之前,您应该先了解一下 DNS 的基础知识。
要最好地理解一个域名,需要从右到左阅读它。最广义的域分类在右侧,越往左则是越具体的分类。在下面的示例中,顶级域名(即 TLD,Top-level domain)就是.com
。
example.com
mail.hello.example.com
TLD 左侧的每个术语都以句点分隔,并被视为更具体的子域(虽然第一级子域及其顶级域名的结合,如example.com
,通常合称为域)。向左移动,hello
和mail
分别是第二级和第三级子域。子域通常用于唯一标识特定机器或服务,具体如何要取决于域的所有者。
选择并指定域名服务器,是域名所有权的重要组成部分。如果不这样做,则正在连接的客户端设备将不知道从哪找到您的 DNS 信息,因此您的域将无法解析。域名服务器在称为区域文件(Zone file)的文本文件中托管域的 DNS 信息。它们也被称为授权启动(SOA,Start of Authority)记录。您可以在以下几个位置之一的域名服务器上托管 DNS 信息:
使用 Linode 的免费域名服务器是最简单的方法,因为 Linode 提供了一个默认的区域文件,其中包含您的网站和电子邮件的所有正确 IP 地址。Linode 的域名服务器对于基本和高级设置都适用。但是,如果您希望尽可能多地控制 DNS 进程,还可以查看注册商和第三方 DNS 主机所提供的选项,或托管您到自己的 DNS 服务器。
您需要在域名注册商的网站上指定域名服务器。他们将负责将该信息发布到更高级别的域名服务器,并且您至少应该指定两个域名服务器。如此一来,若果其中一个关闭了,另一个还可以继续提供您的 DNS 信息。
DNS 管理的第二方面则是指定 DNS 记录,它将域名与 IP 地址进行匹配。然后,DNS 记录会自动捆绑到区域文件中,这样就可以让正在连接的设备查找到域的正确 IP 地址。如果您决定使用 Linode 的域名服务器,我们的 DNS 管理器将帮助您创建默认区域文件。这包含类似于以下内容的记录:
; example.com [448369]
$TTL 86400
@ IN SOA ns1.linode.com. admin.example.com. 2013062147 14400 14400 1209600 86400
@ NS ns1.linode.com.
@ NS ns2.linode.com.
@ NS ns3.linode.com.
@ NS ns4.linode.com.
@ NS ns5.linode.com.
@ MX 10 mail.example.com.
@ A 12.34.56.78
mail A 12.34.56.78
www A 12.34.56.78
每个域的区域文件都包含域管理员的电子邮件地址,域名服务器和 DNS 记录。当然,您不仅限于这些默认条目。您可以根据需要为多个不同的子域创建多样的 DNS 记录。若要了解如何使用 DNS 管理器添加单个 DNS 记录,请阅读 Linode 的DNS管理器概述这篇文章。
那么 DNS 实际上是如何运作的?首先,域名需要转换为您的 Linode IP 地址。DNS 将人性化的域名(如example.com
)与计算机适用的 IP 地址(如192.0.2.8
)进行匹配。这发生在称为区域文件的特殊文件中,该文件列出了域及其对应的 IP 地址(以及一些其它内容)。区域文件就像一本将名称与街道地址进行匹配的电话簿一样。
以下则是 DNS 的查找过程:
example.com
这样的域名。.com
域的域名服务器?”.com
域名服务器的 IP 地址进行响应。.com
的域名服务器,“我在哪里可以找到example.com
的域名服务器?”.com
域名服务器的 IP 地址响应example.com
域名服务器。example.com
的 IP 地址,总之它将此返回给您的浏览器,然后浏览器访问该站点的 Web 服务器。如果 ISP 没有关于当前所请求域的信息,则会发生上述情况。实际上,ISP 在第一次查找后会缓存大量 DNS 信息。这样可以加快查找速度,减少 DNS 服务器的压力。
通常来说,缓存是很好的,但如果您最近对 DNS 信息进行了更改,则可能会出现问题(例如,当您从其他托管服务提供商迁移到 Linode 时)。在这种情况下,您需要注意区域文件的存活时间(TTL,Time to live),以便尽快更改 DNS。
一个 A 记录 将您的域或子域指向您的 Linode IP 地址,可让网络流量到达你的 Linode。这是 DNS 的核心功能。下面列出的是一些典型的 A 记录:
example.com A 12.34.56.78
hello.example.com A 12.34.56.78
您可以将不同的子域指向不同的 IP 地址。如果要将example.com
的每个子域都指向 Linode 的 IP,可以使用星号(*)作为子域:
*.example.com A 12.34.56.78
一个 AAAA 记录和 A 记录相似,不过是用于 IPv6 的 IP 地址。一个典型的 AAAA 记录如下所示:
example.com AAAA 0123:4567:89ab:cdef:0123:4567:89ab:cdef
AXFR 记录是一种用于 DNS 复制的记录(虽然当下有更先进的 DNS 复制方法)。AXFR 记录不是用于普通区域文件的。相反,它们应用于从 DNS 服务器,作用是从主 DNS 服务器上复制区域文件。
有关如何使用 AXFR 将 Linode 的域名服务器配置为从 DNS 服务器的示例,请参阅我们的指南:在cPanel中配置DNS。
DNS 证书颁发机构授权(CAA,Certification Authority Authorization)使用 DNS 来允许域的持有者指定 “哪些证书颁发机构能够为该域发放证书”。参阅我们的 CAA 记录指南,可以在 Linode Manager 中进行配置演练。
CNAME 记录或称为规范名称记录(Canonical Name record),它将一个域或子域匹配到其它不同的域。通过 CNAME 记录,DNS 查找则采用目标域的 DNS 解析作为别名的解析。下面举例:
alias.com CNAME example.com.
example.com A 12.34.56.78
使用此设置,当请求alias.com
时,初始 DNS 查找将找到目标为example.com
的 CNAME 条目。于是一个新的 DNS 查找就会启动,它将查找example.com
,随后得到相应 IP 地址12.34.56.78
。最后,访问者访问的alias.com
将被引导至12.34.56.78
。
CNAME 记录的存在使得域可以具有别名。对于具有 CNAME 记录的域,某些邮件服务器会奇怪地处理其邮件,因此您不应对用于获取电子邮件的域使用 CNAME 记录。同样,MX 记录也不能引用 CNAME 定义的主机名。CNAME 记录的目标域也应具有正常的 A 记录解析。不建议将 CNAME 记录进行链接或循环。
注意,在某些情况下,CNAME 记录可以是将流量重定向到另一个域(同时还能保持相同的 URL)的有效方法。但请记住,CNAME 记录的功能与 URL 重定向是不同的。CNAME 记录将特定域的 Web 流量定向到目标域的 IP 地址。一旦访问者到达该 IP 地址,Web 服务器的配置将决定域的处理方式。如果未在服务器上配置该域,则服务器将仅显示其默认网页(如果有)。这可能是(也可能不是)CNAME 记录中目标域的网页,具体则取决于服务器的配置方式。
DKIM 记录或称域名密匙确认邮件记录(Domainkeys Identified Mail record),它显示用于验证已经签署了 DKIM 协议的消息的公钥。这种做法提高了检查邮件可靠性的能力。一个典型的 DKIM 记录如下所示:
selector1._domainkey.example.com TXT k=rsa;p=J8eTBu224i086iK
DKIM 记录以文本记录作为实现。该记录必须是为子域创建的记录,它具有唯一对应于键的一个选择器,然后便是句点(.),紧跟着是_domainkey.example.com
。其类型为 TXT,值则包含键的类型,后面跟着实际键值。
MX记录或称邮件交换记录(Mail exchanger record)则为域或者子域进行邮件分发目的地的设置。一些典型的 MX 记录如下所示:
example.com MX 10 mail.example.com.
mail.example.com A 12.34.56.78
以上记录将example.com
的邮件直接发送到mail.example.com
这一服务器。目标域(上述的mail.example.com
)需要有自己的 A 记录,该记录可以解析到您的 Linode。理想情况下,MX 记录应指向同为其服务器主机名的域。
您的 MX 记录不一定要指向您的 Linode。如果您使用的是 Google Apps 等第三方邮件服务,则应使用他们提供的 MX 记录。
优先级是 MX 记录的另一个组成部分。这是记录类型和目标服务器之间写入的数字(在上例中为 10)。优先级允许您为特定域的邮件指定一个回退服务器(或多个服务器)。较低的数字代表较高的优先级。下面是具有两个回退邮件服务器的域的示例:
example.com MX 10 mail_1.example.com
example.com MX 20 mail_2.example.com
example.com MX 30 mail_3.example.com
在此示例中,如果mail_1.example.com
已关闭,则将传递邮件到mail_2.example.com
。如果mail_2.example.com
也是关闭,邮件将被发送到mail_3.example.com
。
NS 记录或称域名服务器记录(Name sever record),是为域或子域设置对应的域名服务器。您域名的主要域名服务器记录既可以在注册商处设置,也可以在您的区域文件中设置。一份典型的域名服务器记录(至少需要两个记录)如下所示:
example.com NS ns1.linode.com.
example.com NS ns2.linode.com.
example.com NS ns3.linode.com.
example.com NS ns4.linode.com.
example.com NS ns5.linode.com.
您在注册商处指定的域名服务器随后会为您的域名提供区域文件。
您还可以为任何子域设置不同的域名服务器。子域 NS 记录在主域的区域文件中配置。例如,如果您使用的是 Linode 的域名服务器,则可以在 Linode 的区域文件中为子域mail.example.com
配置单独的 NS 记录,如下所示:
mail.example.com NS ns1.nameserver.com
mail.example.com NS ns2.nameserver.com
在您的注册商处配置了主要域名服务器,接下来则在主域的区域文件中配置子域名服务器。NS 记录的顺序无关紧要。DNS 请求随机发送到不同的服务器,如果一个主机无法响应,将查询另外一个主机。
PTR 记录或称指针记录(Pointer record)将 IP 地址匹配至一个域或者子域,它允许反向的 DNS 查询工作。它执行的服务于 A 记录截然相反,因为它允许您查找与特定 IP 地址相关联的域。
PTR 记录通常由您的主机服务提供商设置。它们不属于您域中的区域文件。也就是说您将始终要在 Linode 管理器中为您的 Linode 设置反向 DNS,即使您的域名服务器位于其他地方也是如此。同样,如果您在其他地方使用服务器,但使用的是 Linode 的域名服务器,则仍需要由主机服务提供商来设置 PTR 记录。
作为添加 PTR 记录的先决条件,您需要创建一个有效且实时的 A 或 AAAA 记录,将所需的域指向该 IP。如果需要 IPv4 PTR 记录,请将域或子域指向 Linode 的 IPv4 地址。如果需要 IPv6 PTR 记录,则将域指向 Linode 的 IPv6 地址。除此之外,IPv4 和 IPv6 PTR 记录的工作方式是相同的。
有关如何在 Linode 上设置反向 DNS ,请参阅我们的反向 DNS指南。
注意:可以为反向 DNS 设置具有相同域的不同 IP(包括 IPv4 和 IPv6 地址)。为此,您必须为该域配置多个指向各种 IP 的 A 或 AAAA 记录。
SOA 记录或称起始权限记录(Start of Authority record)给区域文件使用最初创建的主机名作为标签。接下来,它列出了负责该域的人员的联系电子邮件地址。它还带有各式各样的数字,这个我们稍后会详细介绍。首先看看下面这个典型的 SOA 记录:
@ IN SOA ns1.linode.com. admin.example.com. 2013062147 14400 14400 1209600 86400
注意:管理电子邮件地址使用句点(.)而不是 @ 符号编写。
下面列出数字的含义:
SOA 记录中提到的单个域名服务器被视为动态 DNS 的第一服务器,并且是将区域文件传播到所有其他域名服务器之前,区域文件就要被更改完成的所在。
SPF 记录或称发送方政策框架记录(Sender Policy Framework record),列出了域或子域所指定的邮件服务器。它有助于确定邮件服务器的合法性,并减少欺骗的可能性(当有人伪造电子邮件的标题,使其看起来像是来自您的域时)。垃圾邮件发送者有时会尝试这样做以绕过过滤器。
您域中的 SPF 记录告诉其他接收邮件服务器哪些外发服务器是有效的电子邮件来源,以便他们可以从您的域拒绝来自未授权服务器的欺骗邮件。一个非常基本的 SPF 记录如下所示:
example.com TXT "v=spf1 a ~all"
在 SPF 记录中,您应列出发送邮件的所有邮件服务器,然后排除所有其他邮件服务器。您的 SPF 记录将具有域或子域,类型(如果您的域名服务器支持,可选 TXT 或 SPF)和文本(以“v = spf1”开头,并包含 SPF 记录设置)。
如果您的 Linode 是您使用的唯一邮件服务器,您应该能使用上述的示例记录。使用该 SPF 记录,接收服务器将检查发送服务器的 IP 地址和example.com
的 IP 地址。如果 IP 匹配,则检查通过。如果不是,则检查将“软失败”(即标记该消息,但不会因 SPF 检查失败而自动拒绝)。
注意:确保您的 SPF 记录不会太严格。如果您不小心排除了合法邮件服务器,其邮件可能会被标记为垃圾邮件。我们建议您访问 openspf.org 以了解 SPF 记录的工作原理,以及如何构建适用于您的设置的记录。他们给出的例子也很有帮助。
SRV 记录或称服务记录(Service record)将运行在您的域或子域上的指定服务匹配到一个目标与。这允许您将特定服务(如即时消息)的流量定向到另一台服务器。典型的 SRV 记录如下所示:
_service._protocol.example.com SRV 10 0 5060 service.example.com
下面分别解释 SRV 记录中的元素:
SRV 记录的一个用途示例 —— 设置联合 VoIP。
TXT记录或称文本记录(Text record),向因特网上的其他资源提供有关该域的信息。它是一种灵活的 DNS 记录类型,可根据具体内容提供多种用途。TXT 记录的一个常见用途是在域名服务器上创建 SPF 记录,而该记录本身不支持 SPF。另一个用途则是为邮件签名创建 DKIM 记录。