DNS 术语、组件和概念简介

简介


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

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

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

域名术语


我们应该从定义术语开始。 虽然其中一些主题在其他环境中很熟悉,但在谈论域名和DNS时使用的许多术语在其他计算领域中并不经常使用。

让我们简单地开始吧:

域名系统


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

域名


域名是我们习惯于与互联网资源联系在一起的人类友好的名称。例如,google.com是一个域名。有些人会说Google部分是域名,但我们通常可以将组合形式称为域名。

网址google.com与Google Inc.拥有的服务器相关联。域名系统允许我们在浏览器中键入google.com即可访问Google服务器。

IP地址


IP地址是我们所说的网络可寻址位置。每个IP地址在其网络中必须是唯一的。当我们谈论网站时,这个网络就是整个互联网。

最常见的地址形式是IPv4,它由四组数字组成,每组数字最多三位,每组数字之间用点分隔。例如,111.222.111.222可以是有效的IPv4 IP地址。使用域名系统,我们会将一个名称映射到该地址,这样您就不必记住网络上每个想要访问的地方的一组复杂的数字。

顶级域名


顶级域或TLD是域中最通用的部分。顶级域是右侧最远的部分(用点分隔)。常见的顶级域有comnetorggoveduio

就域名而言,顶级域位于层次结构的顶层。ICANN(互联网名称与数字地址分配公司)授予某些方对顶级域的管理控制权。然后,这些各方可以在TLD下分发域名,通常是通过域名注册商。

托管


在域中,域所有者可以定义单独的主机,这些主机指的是可通过域访问的单独计算机或服务。例如,大多数域名所有者通过裸域(example.com)和)访问他们的Web服务器。

您可以在常规域下有其他主机定义。您可以通过api主机(api.example.com)访问API,也可以通过定义名为ftp或文件的主机(ftp.example.comfiles.example.com)来访问ftp。主机名可以是任意的,只要它们对域是唯一的。

子域


与主机相关的主题是子域。

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

同样,每个域都可以控制位于其下的子域。这通常就是我们所说的子域。例如,您可以在您的学校的历史系拥有一个子域,地址为www.history.School.edu历史部分是一个子域。

主机名和子域之间的区别在于,主机定义计算机或资源,而子域扩展父域。这是一种细分领域本身的方法。

无论是谈论子域还是主机,您都可以开始看到域的最左侧部分是最具体的。这就是域名系统的工作原理:当你从左到右阅读时,从最具体到最不具体。

全限定域名


完全限定域名,通常称为FQDN,是我们所说的绝对域名。DNS系统中的域可以相对于彼此给出,因此可能有些模棱两可。FQDN是指定其相对于域名系统绝对根的位置的绝对名称。

这意味着它指定了包括TLD在内的每个父域。正确的FQDN以点结尾,表示DNS层次结构的根。完全限定域名的一个例子是mail.google.com.。有时,调用FQDN的软件不需要结束点,但要求结尾点符合ICANN标准。

名称服务器♪


名称服务器是指定用于将域名转换为IP地址的计算机。这些服务器完成了DNS系统中的大部分工作。由于域转换的总数对于任何一个服务器来说都太多,所以每个服务器可以将请求重定向到其他名称服务器或委托它们负责的子域的子集的责任。

域名服务器可以是权威的,这意味着它们可以回答有关其控制的域名的查询。否则,它们可能指向其他服务器,或提供其他名称服务器数据的缓存副本。

区域文件


区域文件是一个简单的文本文件,其中包含域名和IP地址之间的映射。这就是当用户请求某个域名时,DNS系统最终确定应该联系哪个IP地址的方式。

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

唱片公司


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

域名系统工作原理


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

该系统在高级概述中非常简单,但在细节中非常复杂。 总的来说,它是一个非常可靠的基础设施,对我们今天所知的互联网的采用至关重要。

根服务器


正如我们上面所说的,域名系统的核心是一个层次化的系统。这个系统的顶层是所谓的)授权。

目前有13个根服务器在运行。然而,由于每分钟要解析的名称数量惊人,这些服务器中的每一个实际上都是镜像的。此设置的有趣之处在于,单个根服务器的每个镜像共享相同的IP地址。当请求某个根服务器时,该请求将被路由到该根服务器最近的镜像。

这些根服务器是做什么的?根服务器处理有关顶级域信息的请求。因此,如果请求较低级别的名称服务器无法解析的内容,则会向该域的根服务器发出查询。

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

因此,如果向根服务器发出www.wikipedia.org的请求,根服务器将无法在其记录中找到结果。 它将检查其区域文件中是否有匹配``www.wikipedia.org`"的列表。 它不会找到一个。

相反,它将查找orgTLD的记录,并向请求实体提供负责org地址的名称服务器的地址。

TLD服务器


然后,请求者向负责该请求的顶级域的IP地址(由根服务器分配给它)发送一个新请求。

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

同样,请求者将在其区域文件中查找www.wikipedia.org。它不会在它的文件中找到这条记录。

但是,它会找到一条记录,列出负责wikipedia.org的名称服务器的IP地址。这离我们想要的答案越来越近了。

域名服务器


此时,请求者拥有负责知道资源的实际IP地址的名称服务器的IP地址。它向域名服务器发送一个新的请求,再次询问它是否可以解析www.wikipedia.org

名称服务器检查它的区域文件,发现它有一个与``wikipedia.org"关联的区域文件。 在这个文件中,有一个www`主机的记录。 此记录告诉此主机所在的IP地址。 名称服务器向请求者返回最终答案。

什么是解析域名服务器?


在上面的场景中,我们指的是请求者。在这种情况下,请求者是什么?

在几乎所有情况下,请求者都是我们所说的解析名称服务器。解析名称服务器是配置为向其他服务器提出问题的服务器。它基本上是用户的中介,它缓存以前的查询结果以提高速度,并知道根服务器的地址以便能够解析对其未知的请求。

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

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

然后,解析名称服务器检查其高速缓存中的答案。如果它没有找到它,它会执行上面概述的步骤。

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

区域文件


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

区域文件是名称服务器存储有关它们知道的域的信息的方式。名称服务器知道的每个域都存储在区域文件中。到达普通域名服务器的大多数请求都不是服务器将具有区域文件的内容。

如果它被配置为处理递归查询,就像解析名称服务器一样,它将找到答案并返回。否则,它将告诉请求方下一步在哪里查找。

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

区域文件描述了一个dns区域,它基本上是整个dns命名系统的子集。它通常仅用于配置单个域。它可以包含多个记录,这些记录定义了相关域的资源所在的位置。

默认情况下,该区域的$ORIGIN参数等于该区域的最高权限。

因此,如果使用区域文件配置example.com.域,则$ORIGIN将被设置为example.com.

这可以在区域文件的顶部配置,也可以在引用区域文件的DNS服务器配置文件中定义。 无论哪种方式,此参数都描述了区域将具有哪些权限。

同样,$TTL配置它提供的信息的生存时间。它基本上是一个定时器。缓存名称服务器可以使用先前查询的结果来回答问题,直到TTL值用完。

记录类型


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

SOA记录


开始授权或SOA记录是所有区域文件中的强制记录。它必须是文件中的第一条真实记录(尽管上面可能会出现$ORIGIN$TTL规范)。这也是最难理解的问题之一。

权威记录的开始如下所示:

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

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

  • domain.com. :这是区域的根。这指定区域文件用于domain.com.域。通常,您会看到它被替换为@,这只是一个占位符,替换了我们在上面了解到的$ORIGIN变量的内容。
  • IN SOA :)。SOA是这是权威记录开始的指示器。
  • ns1.domain.com. :定义该域名的主域名服务器。名称服务器既可以是主服务器,也可以是备用服务器,如果配置了动态DNS,则需要有一个服务器作为主服务器,此处是这样的。如果您尚未配置动态DNS,则这只是您的主名称服务器之一。
  • admin.domain.com. :这是该区域管理员的邮箱地址。电子邮件地址中的)。
  • 12083 :区域文件的序列号。每次编辑区域文件时,必须增加此数字,区域文件才能正确传播。辅助服务器将检查区域的主服务器序列号是否大于其系统上的序列号。如果是,则请求新的区域文件,如果不是,则继续提供原始文件。
  • 3h :这是区域的刷新间隔。这是辅助服务器在轮询主服务器以查看区域文件更改之前将等待的时间量。
  • 30M :该区域的重试间隔。如果在刷新周期结束时辅助服务器无法连接到主服务器,它将等待该时间段并重新尝试轮询主服务器。
  • 3w :这是到期时间。如果辅助名称服务器在此时间量内无法联系主要名称服务器,它将不再作为该区域的权威来源返回响应。
  • 1h :这是名称服务器在该文件中找不到请求的名称时缓存名称错误的时间。

A和AAAA记录


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

这些记录的一般格式如下:

1host IN A IPv4_address
2host IN AAAA IPv6_address

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

记录可能如下所示:

1ns1 IN A 111.222.111.222

请注意,我们不必给出全名。我们可以只给主机,而不是FQDN,而DNS服务器将用$ORIGIN值填充其余的部分。然而,如果我们觉得是语义的,那么我们可以同样轻松地使用整个FQDN:

1ns1.domain.com. IN A 111.222.111.222

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

1www IN A 222.222.222.222

我们还应该知道基域解析到哪里。我们可以这样做:

1domain.com. IN A 222.222.222.222

我们可以使用@来指代基域:

1@       IN A 222.222.222.222

我们还可以选择解析此域下未明确定义给此服务器的任何内容。我们可以使用* 通配符:

1*       IN A 222.222.222.222

所有这些都可以很好地使用IPv6地址的AAAA记录。

CNAME记录


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

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

1server1 IN A 111.111.111.111
2www IN CNAME server1

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

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

MX唱片


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

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

1IN MX 10 mail.domain.com.

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

还要注意的是,这里还有一个额外的数字。如果定义了多个邮件服务器,这是帮助计算机决定将邮件发送到哪个服务器的首选项号。数字越小,优先级越高。

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

假设我们有两个邮件服务器。 必须有这样的记录:

1IN MX 10 mail1.domain.com.
2        IN MX 50 mail2.domain.com.
3mail1 IN A 111.111.111.111
4mail2 IN A 222.222.222.222

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

我们也可以这样写:

1IN MX 10 mail1
2        IN MX 50 mail2
3mail1 IN A 111.111.111.111
4mail2 IN A 222.222.222.222

NS唱片


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

您可能想知道,如果区域文件驻留在名称服务器上,为什么它需要引用自身?使dns如此成功的部分原因是它的多级缓存。在区域文件内定义名称服务器的一个原因是,区域文件实际上可能是从另一个名称服务器上的缓存副本提供的。还有其他原因需要在名称服务器本身上定义名称服务器,但我们在这里不会深入讨论。

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

1IN NS ns1.domain.com.
2        IN NS ns2.domain.com.

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

与往常一样,包括主机与A或AAAA记录的映射:

1IN NS ns1.domain.com.
2        IN NS ns2.domain.com.
3ns1 IN A 111.222.111.111
4ns2 IN A 123.211.111.233

还有很多其他的记录类型可以使用,但这些可能是你会遇到的最常见的类型。

PTR记录


PTR记录用于定义与IP地址相关联的名称。PTR记录与A或AAAA记录相反。PTR记录是唯一的,因为它们从.arpa根开始,并委托给IP地址的所有者。区域互联网注册中心(RIR)管理组织和服务提供商的IP地址委派。地区互联网注册机构包括APNIC、ARIN、RIPE NCC、LACNIC和AFRINIC。

以下是111.222.333.444的PTR记录示例:

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

此IPv6地址的PTR记录示例显示了与Google的IPv6 DNS服务器2001:4860:4860::8888相反的_nibble_格式。

18.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.

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

下面是一个Dig命令的示例。附加+Short以将输出减少为反向的dns名称。

1dig -x 8.8.4.4 +short

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

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

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

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

通常,Internet上的网络路由器会获得与其物理位置相对应的PTR记录。例如,您可能会看到对纽约市或芝加哥路由器的‘NYC’或‘CHI’的引用。这在运行Traceroute或MTR并查看互联网流量所采用的路径时很有帮助。

大多数提供专用服务器或VPS服务的提供商将允许客户为其IP地址设置PTR记录。DigitalOcean会在使用域名命名任何水滴时自动分配该水滴的PTR记录。 水滴名称是在创建过程中分配的,稍后可以使用水滴控制面板的设置页面进行编辑。

<$>[备注] 注意: PTR记录中的FQDN具有对应且匹配的Forward A记录,这一点很重要。示例:111.222.333.444的PTR为server.example.comserver.example.com是指向111.222.333.444的A记录。 <$>

CAA记录


CAA记录用于指定允许哪些证书颁发机构(CA)为您的域颁发SSL/TLS证书。自2017年9月8日起,所有CA都需要检查这些记录,然后才能颁发证书。如果没有记录,任何CA都可以颁发证书。否则,只有指定的CA才能颁发证书。CAA记录可以应用于单个主机,也可以应用于整个域。

CAA记录示例如下:

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

主机IN和记录类型CAA是常用的域名解析字段。上面的CAA特定信息是0 Issue)、标签(Issue)、值()。

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

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

1dig example.com type257

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

结论


现在,您应该已经很好地掌握了DNS的工作原理。虽然一旦您熟悉了该策略,总体思路就比较容易掌握,但对于经验不足的管理员来说,这仍然很难付诸实践。

有关概述,请查看如何在DigitalOcean Control Panel.内设置域

Published At
Categories with 技术
comments powered by Disqus