DNS术语、组件和概念简介

介绍


DNS,即域名系统,通常是学习如何配置网站和服务器的一个非常困难的部分。了解DNS的工作原理将帮助您诊断配置访问您网站的问题,并允许您扩展对幕后发生情况的理解。

在本指南中,我们将讨论一些基本的DNS概念,这将帮助您快速了解DNS配置。解决了这个指南后,您应该准备好使用DigitalOcean设置您的域名设置您自己的DNS服务器

在我们开始设置自己的服务器来解析您的域或在控制面板中设置我们的域之前,让我们先了解一些关于所有这些实际上如何工作的基本概念。

域术语


我们应该从定义术语开始。虽然这些话题中的一些在其他上下文中很常见,但在谈论域名和DNS时使用的许多术语在计算的其他领域并不经常使用。

让我们从简单的开始:

域名系统


域名系统,更常被称为“DNS”,是一个网络系统,允许我们将人类友好的名称解析为唯一的IP地址。

域名


A domain name is the human-friendly name that we are used to associating with an internet resource. For instance, “google.com” is a domain name. Some people will say that the “google” portion is the domain, but we can generally refer to the combined form as the domain name.

URL“google.com”与谷歌公司拥有的服务器相关联。域名系统允许我们在浏览器中键入“google.com”时访问谷歌服务器。

IP地址


IP地址是我们称之为网络可寻址位置的东西。每个IP地址在其网络内必须是唯一的。当我们谈论网站时,该网络是整个互联网。

IPv4是最常见的地址形式,写成四组数字,每组最多三位数,每组由点分隔。例如,“111.222.111.222”可能是一个有效的IPv4 IP地址。通过DNS,我们将一个名称映射到该地址,这样您就不必为您希望在网络上访问的每个位置记住一组复杂的数字。

顶级域名


A top-level domain, or TLD, is the most general part of the domain. The top-level domain is the furthest portion to the right (as separated by a dot). Common top-level domains are “com”, “net”, “org”, “gov”, “edu”, and “io”.

顶级域名位于域名层级的顶部。ICANN(互联网名称与数字地址分配机构)授予某些方管理顶级域名的控制权。然后,这些方可以通过域名注册商分配顶级域名下的域名。

主机


在一个域名中,域名所有者可以定义单独的主机,这些主机指的是通过域名访问的不同计算机或服务。例如,大多数域名所有者使其网络服务器通过裸域名(example.com)以及通过“主机”定义的“www”(www.example.com)可访问。

您可以在通用域名下定义其他主机。您可以通过“api”主机获得API访问(api.example.com),或者您可以通过定义名为“ftp”或“files”的主机来获得ftp访问(ftp.example.comfiles.example.com)。只要对于域名而言是唯一的,主机名可以是任意的。

子域名


A subject related to hosts are subdomains.

DNS工作在一个层次结构中。TLD可以有很多域名在其下面。例如,“com” TLD下有“google.com”和“ubuntu.com”。 “子域”指的是任何作为更大域的一部分的域。在这种情况下,“ubuntu.com”可以被称为“com”的一个子域。这通常被称为域或“ubuntu”部分被称为SLD,意思是二级域。

同样,每个域可以控制位于其下的“子域”。这通常是我们所说的子域。例如,你可以在你学校的历史系建立一个子域“www.history.school.edu”。 “history”部分是一个子域。

主机名和子域之间的区别在于主机定义了一个计算机或资源,而子域则扩展了父域。这是一种对域进行细分的方法。

无论是谈论子域还是主机,你可以开始看到域的最左侧部分是最具体的。这就是DNS的工作方式:从左到右阅读时,从最具体到最不具体。

完全合格的域名


A fully qualified domain name, often called FQDN, is what we call an absolute domain name. Domains in the DNS system can be given relative to one another, and as such, can be somewhat ambiguous. A FQDN is an absolute name that specifies its location in relation to the absolute root of the domain name system.

这意味着它指定了每个父域,包括顶级域。正确的FQDN以点结尾,表示DNS层次结构的根。一个FQDN的示例是“mail.google.com.”。有时,要求FQDN的软件不需要结尾的点,但为了符合ICANN标准,尾随的点是必需的。

名称服务器


A name server is a computer designated to translate domain names into IP addresses. These servers do most of the work in the DNS system. Since the total number of domain translations is too much for any one server, each server may redirect request to other name servers or delegate responsibility for a subset of subdomains they are responsible for.

名称服务器可以是“授权的”,这意味着它们对其控制下的域的查询给出答案。否则,它们可能指向其他服务器,或者提供其他名称服务器数据的缓存副本。

区域文件


A zone file is a simple text file that contains the mappings between domain names and IP addresses. This is how the DNS system finally finds out which IP address should be contacted when a user requests a certain domain name.

区域文件驻留在名称服务器中,通常定义了特定域下可用的资源,或者可以获取该信息的位置。

记录


在区域文件中,记录被保留。在其最简单的形式中,记录基本上是一个资源与名称之间的单个映射。这些可以将域名映射到IP地址,为域定义名称服务器,为域定义邮件服务器等。

DNS的工作原理


现在您已经熟悉了一些与DNS相关的术语,那么这个系统实际是如何工作的呢?

从高层次来看,这个系统非常简单,但是当您深入了解细节时,它就变得非常复杂。不过总的来说,这是一个非常可靠的基础设施,对于我们今天所知的互联网的普及起到了至关重要的作用。

根服务器


正如我们之前所说,DNS在其核心是一个分层系统。在这个系统的顶部是被称为“根服务器”的东西。这些服务器由各种组织控制,并由ICANN(互联网名称与数字地址分配机构)委托管理权限。

目前有13个根服务器在运行。然而,由于每分钟需要解析的名称数量令人难以置信,因此每个根服务器的镜像实际上是成对存在的。这种设置的有趣之处在于,单个根服务器的每个镜像共享相同的IP地址。当请求某个特定的根服务器时,该请求将被路由到该根服务器的最近的镜像。

这些根服务器做什么?根服务器处理关于顶级域的信息请求。因此,如果一个请求到达一个低级别的名称服务器无法解析,那么就会向根服务器查询该域名。

根服务器实际上不知道该域名托管在哪里。然而,它们可以将请求者指向处理特定请求的顶级域的名称服务器。

因此,如果对“www.wikipedia.org”的请求发送到根服务器,则根服务器将无法在其记录中找到结果。它将检查其区域文件,以查找与“www.wikipedia.org”匹配的列表。它找不到。

相反,它将找到一个关于“org”顶级域的记录,并将请求实体的地址给予“org”地址的名称服务器。

顶级域服务器


然后,请求者将向根服务器提供的负责请求顶级域的IP地址发送一个新的请求。

因此,继续我们的例子,它将向负责了解“org”域名的名称服务器发送一个请求,以查看它是否知道“www.wikipedia.org”的位置。

再次,请求者将在其区域文件中查找“www.wikipedia.org”。它在文件中找不到此记录。

然而,它将找到一个记录列表,其中包含负责“wikipedia.org”的名称服务器的IP地址。 这越来越接近我们想要的答案。

域级别的名称服务器


在这一点上,请求者已经获得了负责知道资源实际IP地址的名称服务器的IP地址。 它向名称服务器发送一个新请求,再次询问是否可以解析“www.wikipedia.org”。

名称服务器检查其区域文件,并发现它有一个与“wikipedia.org”相关联的区域文件。 在这个文件中,有一个记录指向“www”主机的IP地址。 名称服务器将最终答案返回给请求者。

什么是解析名称服务器?


在上述情况中,我们提到了一个“请求者”。 在这种情况下,请求者是什么?

在几乎所有情况下,请求者都将是我们所谓的“解析名字服务器”。 解析名字服务器是配置为向其他服务器发出查询的服务器。 它基本上是用户的一个中间人,它会缓存先前的查询结果以提高速度,并知道根服务器的地址,以便能够“解析”对其尚不了解的内容的请求。

基本上,用户通常会在其计算机系统上配置几个解析名字服务器。 这些解析名字服务器通常由ISP或其他组织提供。 例如,谷歌提供可供查询的解析DNS服务器。 这些可以自动或手动配置在您的计算机上。

当您在浏览器的地址栏中键入URL时,您的计算机首先会查看是否可以在本地找到资源的位置。 它会检查计算机上的“hosts”文件和其他几个位置。 然后,它将请求发送到解析名字服务器,并等待接收资源的IP地址。

然后,解析名字服务器会检查其缓存以获取答案。 如果找不到,则执行上述步骤。

解析名字服务器基本上压缩了最终用户的请求过程。 客户端只需知道向解析名字服务器询问资源的位置,并确信它们将调查并返回最终答案。

区域文件


在上述过程中我们提到了“区域文件”和“记录”的概念。

区域文件是域名服务器存储其了解的域名信息的方式。每个域名服务器了解的每个域名都存储在一个区域文件中。大多数发送到普通域名服务器的请求并不是服务器会有区域文件的内容。

如果配置为处理递归查询,如解析域名服务器,它将找到答案并返回它。否则,它会告诉请求方下一步应该去哪里查找。

域名服务器拥有的区域文件越多,它将能够有权地回答更多的请求。

A zone file describes a DNS “zone”, which is basically a subset of the entire DNS naming system. It generally is used to configure just a single domain. It can contain a number of records which define where resources are for the domain in question.

区域的$ORIGIN默认是等于区域的最高权威级别的参数。

因此,如果一个区域文件用于配置“example.com.”域,$ORIGIN将设置为example.com.

这可以在区域文件的顶部配置,或者可以在引用区域文件的DNS服务器配置文件中定义。无论哪种方式,该参数描述了该区域将具有权威地为何提供服务。

类似地,$TTL配置了其提供信息的“存活时间”。它基本上是一个计时器。缓存域名服务器可以使用先前查询的结果来回答问题,直到TTL值耗尽。

记录类型


在区域文件中,我们可以有许多不同的记录类型。我们将在这里介绍一些较常见(或强制性的类型)。

SOA记录


起始权限记录,或SOA记录,是所有区域文件中的强制记录。它必须是文件中的第一个真实记录(尽管$ORIGIN$TTL规范可能出现在其上方)。它也是最复杂的之一。

起始权限记录看起来像这样:

domain.com.  IN SOA   ns1.domain.com. admin.domain.com. (
                          12083           ; serial number
                          3h              ; refresh interval
                          30m             ; retry interval
                          3w              ; expiry period
                          1h              ; negative TTL
                          )

让我们解释一下每个部分的作用:

  • domain.com.:这是区域的根。它指定区域文件是为domain.com.域而设计的。通常,你会看到这被替换为@,这只是一个占位符,用于替换我们在上面学到的$ORIGIN变量的内容。

  • 在SOA: “IN”部分表示互联网(在许多记录中都会出现)。 SOA表示这是一个权威记录的指示符。

  • ns1.domain.com。:这定义了该域的主要名称服务器。 名称服务器可以是主要或次要的,如果配置了动态DNS,则一个服务器需要是“主要”的,它在这里。 如果您尚未配置动态DNS,则这只是您的主要名称服务器之一。

  • admin.domain.com。:这是该区域管理员的电子邮件地址。 电子邮件地址中的“@”将在此处替换为点。 如果电子邮件地址的名称部分通常有一个点,那么此部分将替换为“”([email protected]变为your\name.domain.com)。

  • 12083:这是区域文件的序列号。每次编辑区域文件时,都必须递增此数字,以便区域文件正确传播。辅助服务器将检查主服务器对区域的序列号是否大于其系统上的序列号。如果是,则请求新的区域文件;如果不是,则继续提供原始文件。

  • 3小时:这是区域的刷新间隔。这是辅助服务器在轮询主服务器以获取区域文件更改之前等待的时间。

  • 30m:这是该区域的重试间隔。如果从属服务器在刷新期结束时无法连接到主服务器,则会等待这段时间并重试轮询主服务器。

  • 3w:这是过期时间。如果从属域名服务器在此期间无法联系主服务器,则不再将其作为此区域的权威源返回响应。

  • 1h:这是域名服务器在无法在此文件中找到请求的名称时缓存名称错误的时间。

A and AAAA Records


这两个记录将主机映射到IP地址。“A”记录用于将主机映射到IPv4 IP地址,而“AAAA”记录用于将主机映射到IPv6地址。

这些记录的一般格式是这样的:

host     IN      A       IPv4_address
host     IN      AAAA    IPv6_address

因此,由于我们的 SOA 记录指定了位于 “ns1.domain.com” 的主服务器,我们必须将其映射到 IP 地址,因为 “ns1.domain.com” 在此文件定义的 “domain.com” 区域内。

记录可能如下所示:

ns1     IN  A       111.222.111.222

注意,我们不必提供完整的名称。我们只需提供主机,而不包括 FQDN,DNS 服务器将使用 $ORIGIN 值填充其余部分。但是,如果我们觉得语义化,我们也可以使用整个 FQDN:

ns1.domain.com.     IN  A       111.222.111.222

在大多数情况下,这是您将定义 Web 服务器的地方,如“www”:

www     IN  A       222.222.222.222

我们还应该告诉基本域名解析到哪里。我们可以这样做:

domain.com.     IN  A       222.222.222.222

我们也可以使用 “@” 来引用基本域名:

@       IN  A       222.222.222.222

我们还有一个选项,即将未明确定义为该服务器的此域名下的任何内容解析为该服务器。我们可以使用 “*” 通配符来实现:

*       IN  A       222.222.222.222

所有这些方法对 IPv6 地址的 AAAA 记录同样有效。

CNAME 记录


CNAME 记录为服务器定义别名或规范名称(由 A 或 AAAA 记录定义)。

例如,我们可以有一个 A 名称记录来定义 “server1” 主机,然后使用 “www” 作为此主机的别名:

server1     IN  A       111.111.111.111
www         IN  CNAME   server1

请注意,这些别名会导致一些性能损失,因为它们需要向服务器发出额外的查询。大多数情况下,可以通过使用额外的 A 或 AAAA 记录来达到相同的结果。

一个推荐使用 CNAME 的情况是为当前区域外的资源提供别名。

MX 记录


MX 记录用于定义用于该域的邮件交换。这有助于电子邮件消息正确到达您的邮件服务器。

与许多其他记录类型不同,邮件记录通常不会将主机映射到某个内容,因为它们适用于整个区域。因此,它们通常是这样的:

        IN  MX  10   mail.domain.com.

请注意,开头没有主机名。

还请注意,其中有一个额外的数字。这是偏好数字,有助于计算机决定如果有多个邮件服务器定义,则向哪个服务器发送邮件。数字越低,优先级越高。

MX 记录通常应指向由 A 或 AAAA 记录定义的主机,而不是由 CNAME 定义的主机。

因此,假设我们有两个邮件服务器。就必须有类似以下的记录:

        IN  MX  10  mail1.domain.com.
        IN  MX  50  mail2.domain.com.
mail1   IN  A       111.111.111.111
mail2   IN  A       222.222.222.222

在此示例中,“mail1” 主机是首选的电子邮件交换服务器。

我们也可以这样写:

        IN  MX  10  mail1
        IN  MX  50  mail2
mail1   IN  A       111.111.111.111
mail2   IN  A       222.222.222.222

NS 记录


此记录类型定义用于此区域的名称服务器。

您可能会想,“如果区域文件存储在名称服务器上,为什么需要引用自身?” DNS 成功的一部分在于其多级缓存。定义区域文件中的名称服务器的一个原因是,区域文件实际上可能是从另一个名称服务器上的缓存副本提供的。需要在名称服务器本身上定义名称服务器的其他原因,但我们在这里不会讨论。

与 MX 记录类似,这些是区域范围的参数,因此它们不接受主机。一般来说,它们看起来像这样:

        IN  NS     ns1.domain.com.
        IN  NS     ns2.domain.com.

每个区域文件中至少应定义两个名称服务器,以便在一个服务器出现问题时正常运行。大多数 DNS 服务器软件认为如果只有一个名称服务器,则区域文件无效。

与 A 或 AAAA 记录一样,始终包含主机的映射:

        IN  NS     ns1.domain.com.
        IN  NS     ns2.domain.com.
ns1     IN  A      111.222.111.111
ns2     IN  A      123.211.111.233

您可以使用其他许多记录类型,但这些可能是您遇到的最常见的类型。

PTR 记录


PTR记录用于定义与IP地址关联的名称。PTR记录是A或AAAA记录的反向。PTR记录独特之处在于它们从.arpa根开始,并被委派给IP地址的所有者。区域互联网注册机构(RIRs)负责管理IP地址委派给组织和服务提供商。区域互联网注册机构包括APNIC、ARIN、RIPE NCC、LACNIC和AFRINIC。

以下是111.222.333.444的PTR记录示例:

444.333.222.111.in-addr.arpa.	33692	IN	PTR	host.example.com.

这个IPv6地址的PTR记录示例显示了Google的IPv6 DNS服务器2001:4860:4860::8888的nibble格式的反向。

8.8.8.8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.6.8.4.0.6.8.4.1.0.0.2.ip6.arpa. 86400IN PTR google-public-dns-a.google.com.

命令行工具dig可以使用-x标志来查找IP地址的反向DNS名称。

以下是dig命令的示例。添加+short以将输出减少为反向DNS名称。

  1. dig -x 8.8.4.4 +short

上述dig命令的输出将是IP地址的PTR记录中的域名:

google-public-dns-b.google.com.

互联网上的服务器使用PTR记录将域名放置在日志条目中,做出明智的垃圾邮件处理决策,并显示其他设备的易于阅读的详细信息。

大多数常用的电子邮件服务器将查找收到电子邮件的IP地址的PTR记录。如果源IP地址没有与之关联的PTR记录,则发送的邮件可能会被视为垃圾邮件并被拒绝。重要的不是PTR中的FQDN与发送的电子邮件的域名匹配,而是存在一个有效的PTR记录与相应且匹配的正向A记录。

通常,互联网上的网络路由器被赋予与其物理位置相对应的PTR记录。例如,您可能会看到关于纽约市或芝加哥的路由器的引用。这在运行traceroute或MTR并查看互联网流量路径时非常有帮助。提供专用服务器或VPS服务的大多数供应商将允许客户为其IP地址设置PTR记录。

当Droplet以域名命名时,DigitalOcean会自动分配任何Droplet的PTR记录。 Droplet名称在创建时分配,并且可以稍后使用Droplet控制面板的设置页面进行编辑。

注意:重要的是PTR记录中的FQDN具有相应且匹配的正向A记录。例如:111.222.333.444具有server.example.com的PTR,而server.example.com是指向111.222.333.444的A记录。

CAA记录


CAA记录用于指定允许哪些证书颁发机构(CAs)为您的域发放SSL/TLS证书。从2017年9月8日起,所有CAs都必须在颁发证书之前检查这些记录。如果没有记录,则任何CA都可以颁发证书。否则,只有指定的CAs可以颁发证书。CAA记录可以应用于单个主机或整个域。

以下是一个示例CAA记录:

example.com.	IN	CAA	0 issue "letsencrypt.org"

主机,IN和记录类型(CAA)是常见的DNS字段。上述CAA特定信息是0 issue "letsencrypt.org"部分。它由三个部分组成:标志(0),标签(issue)和值("letsencrypt.org")。

  • 标志是一个整数,指示CA如何处理它不理解的标签。如果标志是0,则记录将被忽略。如果是1,则CA必须拒绝颁发证书。
  • 标签是表示CAA记录目的的字符串。目前它们可以是issue,用于授权CA为特定主机名创建证书,issuewild,用于授权通配符证书,或iodef,用于定义CA可以报告策略违规的URL。
  • 是与记录的标签关联的字符串。对于issueissuewild,这通常是您授予权限的 CA 的域名。对于iodef,这可能是联系表单的 URL,或者是电子邮件反馈的mailto:链接。

您可以使用以下选项使用dig获取 CAA 记录:

  1. dig example.com type257

有关 CAA 记录的更详细信息,您可以阅读RFC 6844,或者我们的教程如何使用 DigitalOcean DNS 创建和管理 CAA 记录

结论


现在您应该对 DNS 的工作原理有了相当好的了解。虽然一般的想法一旦您熟悉了策略就相对容易理解,但对于经验不足的管理员来说,这仍然可能是难以付诸实践的事情。

要了解概述,请查看如何在 DigitalOcean 控制面板中设置域名

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-dns-terminology-components-and-concepts