DNS 记录简介

域名系统(DNS,Domain Name System)是因特网的地址簿。DNS 通过映射不容易忘记的域名(例如example.com)到诸如192.0.2.80123:4567:89ab:cdef:0123:4567:89ab:cdef这样的 IP 地址,将 Web 流量引导至您的 Linode 并通过电子邮件发送到您的收件箱。本篇指南介绍了基本的 DNS 概念以及不同类型的 DNS 记录(DNS Record)。

DNS 如何是工作的?

在添加任何 DNS 记录之前,您应该先了解一下 DNS 的基础知识。

域名

要最好地理解一个域名,需要从右到左阅读它。最广义的域分类在右侧,越往左则是越具体的分类。在下面的示例中,顶级域名(即 TLD,Top-level domain)就是.com

example.com
mail.hello.example.com

TLD 左侧的每个术语都以句点分隔,并被视为更具体的子域(虽然第一级子域及其顶级域名的结合,如example.com,通常合称为域)。向左移动,hellomail分别是第二级和第三级子域。子域通常用于唯一标识特定机器或服务,具体如何要取决于域的所有者。

域名服务器

选择并指定域名服务器,是域名所有权的重要组成部分。如果不这样做,则正在连接的客户端设备将不知道从哪找到您的 DNS 信息,因此您的域将无法解析。域名服务器在称为区域文件(Zone file)的文本文件中托管域的 DNS 信息。它们也被称为授权启动(SOA,Start of Authority)记录。您可以在以下几个位置之一的域名服务器上托管 DNS 信息:

  • Linode(推荐)
  • 您的域名注册商
  • 您自己的 DNS 服务器
  • 第三方 DNS 主机

使用 Linode 的免费域名服务器是最简单的方法,因为 Linode 提供了一个默认的区域文件,其中包含您的网站和电子邮件的所有正确 IP 地址。Linode 的域名服务器对于基本和高级设置都适用。但是,如果您希望尽可能多地控制 DNS 进程,还可以查看注册商和第三方 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 解析

那么 DNS 实际上是如何运作的?首先,域名需要转换为您的 Linode IP 地址。DNS 将人性化的域名(如example.com)与计算机适用的 IP 地址(如192.0.2.8)进行匹配。这发生在称为区域文件的特殊文件中,该文件列出了域及其对应的 IP 地址(以及一些其它内容)。区域文件就像一本将名称与街道地址进行匹配的电话簿一样。

以下则是 DNS 的查找过程:

  1. 您在浏览器的地址栏中键入了像example.com这样的域名。
  2. 您的计算机通过网络服务提供商(ISP,Internet service provider)连接到因特网。您的 ISP 的 DNS 解析器查询一个根域名服务器(Root nameserver)以获取正确的 TLD 域名服务器。通俗点说,它询问根域名服务器,“我在哪里可以找到.com域的域名服务器?”
  3. 根域名服务器使用.com域名服务器的 IP 地址进行响应。
  4. ISP 的 DNS 解析器使用从根域名服务器获取的 IP 地址来询问.com的域名服务器,“我在哪里可以找到example.com的域名服务器?”
  5. .com域名服务器的 IP 地址响应example.com域名服务器。
  6. ISP 的 DNS 解析器从域的域名服务器中读取区域文件。
  7. 区域文件展示了域与哪个 IP 地址一起使用。
  8. 现在 ISP 拥有example.com的 IP 地址,总之它将此返回给您的浏览器,然后浏览器访问该站点的 Web 服务器。

如果 ISP 没有关于当前所请求域的信息,则会发生上述情况。实际上,ISP 在第一次查找后会缓存大量 DNS 信息。这样可以加快查找速度,减少 DNS 服务器的压力。

通常来说,缓存是很好的,但如果您最近对 DNS 信息进行了更改,则可能会出现问题(例如,当您从其他托管服务提供商迁移到 Linode 时)。在这种情况下,您需要注意区域文件的存活时间(TTL,Time to live),以便尽快更改 DNS。

DNS记录的类型

A 和 AAAA

一个 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

AXFR 记录是一种用于 DNS 复制的记录(虽然当下有更先进的 DNS 复制方法)。AXFR 记录不是用于普通区域文件的。相反,它们应用于从 DNS 服务器,作用是从主 DNS 服务器上复制区域文件。

有关如何使用 AXFR 将 Linode 的域名服务器配置为从 DNS 服务器的示例,请参阅我们的指南:在cPanel中配置DNS

CAA

DNS 证书颁发机构授权(CAA,Certification Authority Authorization)使用 DNS 来允许域的持有者指定 “哪些证书颁发机构能够为该域发放证书”。参阅我们的 CAA 记录指南,可以在 Linode Manager 中进行配置演练。

CNAME

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

DKIM 记录或称域名密匙确认邮件记录(Domainkeys Identified Mail record),它显示用于验证已经签署了 DKIM 协议的消息的公钥。这种做法提高了检查邮件可靠性的能力。一个典型的 DKIM 记录如下所示:

selector1._domainkey.example.com        TXT     k=rsa;p=J8eTBu224i086iK

DKIM 记录以文本记录作为实现。该记录必须是为子域创建的记录,它具有唯一对应于键的一个选择器,然后便是句点(.),紧跟着是_domainkey.example.com。其类型为 TXT,值则包含键的类型,后面跟着实际键值。

MX

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

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

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

SOA 记录或称起始权限记录(Start of Authority record)给区域文件使用最初创建的主机名作为标签。接下来,它列出了负责该域的人员的联系电子邮件地址。它还带有各式各样的数字,这个我们稍后会详细介绍。首先看看下面这个典型的 SOA 记录:

@   IN  SOA ns1.linode.com. admin.example.com. 2013062147 14400 14400 1209600 86400

注意:管理电子邮件地址使用句点(.)而不是 @ 符号编写。

下面列出数字的含义:

  • 序列号:此域的区域文件的修订号。它在文件更新时会发生变化。
  • 刷新时间:辅助 DNS 服务器在检查更改之前保留区域文件的时间(以秒为单位)。
  • 重试时间:辅助 DNS 服务器在重试传输失败的区域文件之前需要等待的时间。
  • 过期时间:辅助 DNS 服务器无法自行更新时,当前区域文件副本失效之前所等待的时间。
  • 最短 TTL:其他服务器应从该区域文件中保留缓存数据的最短时间。

SOA 记录中提到的单个域名服务器被视为动态 DNS 的第一服务器,并且是将区域文件传播到所有其他域名服务器之前,区域文件就要被更改完成的所在。

SPF

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

SRV 记录或称服务记录(Service record)将运行在您的域或子域上的指定服务匹配到一个目标与。这允许您将特定服务(如即时消息)的流量定向到另一台服务器。典型的 SRV 记录如下所示:

_service._protocol.example.com  SRV     10      0       5060    service.example.com

下面分别解释 SRV 记录中的元素:

  • 服务:服务名称必须以下划线(_)开头,随后紧跟句点(.)。该服务可能类似于_xmpp。
  • 协议:协议的名称必须以下划线(_)开头,随后紧跟句点(.)。该协议可能类似于_tcp。
  • :将接收此服务的原始流量的域名称。
  • 优先级:第一个数字(上例中为 10)允许您设置目标服务器的优先级。您可以使用不同的优先级设置不同的目标,这令您可以拥有该服务的备用服务器(或多个服务器)。较低的数字具有较高的优先级。
  • 权重:如果两个记录具有相同的优先级,则需要对比权重。
  • 端口:运行服务的 TCP 或 UDP 端口。
  • 目标:目标域或目标子域。此域必须具有解析为 IP 地址的 A 或 AAAA 记录。

SRV 记录的一个用途示例 —— 设置联合 VoIP

文本

TXT记录或称文本记录(Text record),向因特网上的其他资源提供有关该域的信息。它是一种灵活的 DNS 记录类型,可根据具体内容提供多种用途。TXT 记录的一个常见用途是在域名服务器上创建 SPF 记录,而该记录本身不支持 SPF。另一个用途则是为邮件签名创建 DKIM 记录

本文的版权归 StoneDemo 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏HansBug's Lab

【前端】Ubuntu16下nodejs+npm+vue环境配置

笔者最近在学习vue.js,不过一直都是在runoob上面各种尝试。今天笔者在本机(Ubuntu16.04)尝试部署了nodejs+npm+vue开发环境,接下...

3625
来自专栏bboysoul

在树莓派上搭建使用gitlab

gitlab是一个代码托管平台,因为我的树莓派系统是安装在128G的u盘上的,用来放电影太小,但是空着就是空着了,所以还不如再搭建一个gitlab服务来存放自己...

1952
来自专栏用户2442861的专栏

高性能网络编程4--TCP连接的关闭

TCP连接的关闭有两个方法close和shutdown,这篇文章将尽量精简的说明它们分别做了些什么。

1072
来自专栏逸鹏说道

熔断器设计模式

如果大家有印象的话,尤其是夏天,如果家里用电负载过大,比如开了很多家用电器,就会”自动跳闸”,此时电路就会断开。在以前更古老的一种方式是”保险丝”,当负载过大,...

2745
来自专栏一个会写诗的程序员的博客

Cookie 和 Session 机制原理分析 & 区别对比

Web application servers are generally "stateless":

1292
来自专栏技术之路

Http概述(一)

Http使用的是可靠的数据传输协议,因此即使数据来自地球的另一端,也能够确保数据在传输过程中不会被损坏或产生混乱。 这样用户在访问信息时就不用担心其完整性了。 ...

2025
来自专栏PhpZendo

深度挖掘 Laravel 生命周期

这篇文章我们来聊聊 「Laravel 生命周期」 这个主题。虽然网络上已经有很多关于这个主题的探讨,但这个主题依然值得我们去研究和学习。

1302
来自专栏blackpiglet

使用 pip 发布 Python 程序

写过 Python 程序的小伙伴们都知道,需要 import 个非 Python 自带的软件包时,都要用到 pip 这个程序。平时我们都是用 pip,如果我们写...

2782
来自专栏java学习

面试题13(一个具有生命的线程有哪些状态)

考点:考察求职者对线程的理解 出现频率:★★★ 【面试题解析】线程的状态表示线程在某时间段内进行的活动和将要进行的任务程有创建、就绪、运行、阻塞、死亡5种状态。...

3275
来自专栏C/C++基础

Linux基础知识点

文件(包括目录)权限分为三类别,从左至右依次是:文件所属主的权限、文件所属所在用户组的权限和其他用户的权限。

1842

扫码关注云+社区