DNS基本概念

DNS基本概念

  • 概念
    • 域名相关的一些术语
      • Domain Name域名
      • IP 地址
      • TLD(Top-Level Domain)顶级域名
      • Hosts 主机名
      • 子域名
      • FQDN(Full Qualified Domain Name)完全限定域名
      • Name Server名称服务器
      • Zone File地区文件
      • Recods记录
    • DNS是如何工作的
      • 根服务器 Root Server
      • 顶级域名服务器TLD Servers
      • 域级服务器
      • 什么是名称解析服务?
      • 地区文件
    • Record type记录类型
      • SOA记录
      • A和AAAA记录
      • CNAME记录
      • MX记录
      • NS记录
      • PTR记录
      • CAA记录

概念


DNS,全称Domain Name System/域名系统,了解DNS的工作原理可以帮助我们诊断网站的问题,同时也可以帮助我们了解在网络背后发生了什么,下面一些在谈到DNS时常用的到术语

域名相关的一些术语

Domain Name域名

域名系统/Domain Name System,是一种有很好可读性的可以让我们将其与网络联系起来的名称。比如,google.com就是一个域名,有时我们管google这个词叫做它的域名,但是通常来说,应该使用组合形式google.com,才是它的域名。URL google.com 于谷歌公司的服务器联系在一起,域名系统让我可以访问到谷歌的服务器,当我们在浏览器中输入 google.com 的时候。

IP 地址

IP地址就是我们所说的网络可寻址位置。每个IP地址在其网络内必须是唯一的。当我们谈论网站时,该网络就是整个互联网。IPV4目前是最通用的网络地址,它由4部分数字组成,每个部分又由3位数字组成,通常表示为类似 111.222.333.444 这样的形势。通过DNS,我们就可以将可读性较好的域名与IP映射起来,这样你就不必去记住冗长的IP地址了

TLD(Top-Level Domain)顶级域名

顶级域名,是整个域名中最通用的部分,同时也是域名中最右侧的那部分。比如 com, cn, net, org 等等。互联网名称与数字地址分配机构(ICANN)授予某些参与方对顶级域的管理控制权。然后,这些参与方通常可以通过域名注册机构在TLD下分配域名。

Hosts 主机名

域名的所有者可以定义独立的主机名来让其与独立的计算机或者服务产生关联。比如,大部分域名所有者都会通过裸域名(比如example.com)来让他们的主机可以被访问(通过直接将裸域名指向他们主机的IP),同时也可以称为www的主机名来访问www.example.com。也就是说在通用域名之下你还可以拥有主机定义,比如通过api.example.com访问你的api服务,通过fpt访问你的ftp服务。主机名可以任意的,只要在这个域名之下是唯一的。

子域名

与主机名相关的就是子域名了。DNS是以层级结构运作的。在顶级域名之下还有很多域名。比如.com顶级域名下可以有google.com ubuntu.com等等。所谓子域名,就是指更上一级域名的一部分。也就是说,ubuntu.com这个域名中,ubuntu.com就是.com这个域名的子域名。

那么,子域名和主机名有什么区别呢?在通过域名使用远程主机的时候,没有区别,区别主要在于理解的含义上,主机名用于标识一台主机/机器,是给这个机器取得一个名字,指向具体的资源,而子域名仅仅是用来扩展父级域名,用以表示更多的ip

FQDN(Full Qualified Domain Name)完全限定域名

所谓完全限定域名,指的是域名的完全名称。一般是用 主机名(hostname).域名 构成,严格来讲,一个完全限定域名是以.结尾的,用于表示DNS层级的根级,比如,mail.google.com. 。注意最后有个.,但是现在多数软件都不要求这个了,只有ICANN会要求。例如有一部服务器的本地主机名为myhost,而其母域名为example.com,那指向该服务器的完整域名就是myhost.example.com。虽然世界上可能有很多服务器的本地主机名是myhost,但myhost.example.com是唯一的,因此完整域名能识别该特定服务器。

Name Server名称服务器

名称服务是一台用于转换域名和IP的服务。这些服务大多运行在DNS域名服务器上。由于域名域名翻译的数量实在过于庞大,每个服务都有可能会将请求重定向到其他负责该子域名的服务上去。

Zone File地区文件

地区文件是一个简单的文本文件,其中包含了域名和IP地址的映射关系。这就是DNS如何在用户发送一个域名的时候将需要的IP地址返回的地方。地区文件驻留在名称服务器中,通常定义特定域下可用的资源,或者可以获取该信息的位置。

Recods记录

在地区文件中会使用到记录,这个“记录”指的就是描述资源(比如网络上的计算机)和名称之间的映射关系。可以用来将域名映射到IP,定义域名的名称服务器(因为一台机器不可能记录所有的域名与IP的映射关系),定义域名对应的邮箱服务器,等等

DNS是如何工作的

从上层应用来看,很简单,只是域名与ip地址的映射,从底层来看很复杂

根服务器 Root Server

根服务器是由那些由ICANN授权的组织和机构所管控的。有13台根服务器。由于每时每刻都有不计其数的名称需要解析,所以事实上每台根服务器都是很多镜像节点的。当请求特定的根服务器时,请求将会被路由至最近的镜像节点。当低等级名称服务器无法解析的时候,就会像上一级查询。根服务器并不真的知道域名都在哪个位置。但是它可以将请求重定向到处理特定顶级域名的其他根服务上。

顶级域名服务器TLD Servers

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

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

同样,请求者将在其区域文件中查找“www.wikipdia.org”。它将无法在其文件中找到此记录。

然而,它会找到一个记录,列出负责“wikipedia.org”的名称服务器的IP地址。这更接近我们想要的答案了。

域级服务器

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

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

什么是名称解析服务?

在上面的场景中,我们提到了“请求者”。在这种情况下,请求者是什么?

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

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

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

解析名称服务器然后检查它的缓存以获得答案。如果没有找到,它将执行上述步骤。

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

地区文件

我们在上面的过程中提到了“区域文件”和“记录”的思想。

区域文件是名称服务器存储关于它们所知道的域的信息的方式。名称服务器知道的每个域都存储在一个区域文件中。大多数到达普通名称服务器的请求都不是服务器有区域文件用于处理的。

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

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

区域文件描述DNS“区域”,它基本上是整个DNS命名系统的子集。它通常用于仅配置单个域。它可以包含许多记录,这些记录定义了有问题的域的资源在哪里。

默认情况下,区域的$ORIGIN是一个与区域的最高权限级别相等的参数。

因此,如果一个区域文件用于配置" example.com. "域,那么$ORIGIN将被设置为example.com…

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

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

Record type记录类型

SOA记录

开始授权(或SOA)记录是所有区域文件中的强制记录。它必须是文件中的第一个真实记录(尽管上面可能出现 O R I G I N 或 ORIGIN或 ORIGINTTL规范)。它也是最复杂的理解之一。

权威记录的开始看起来像这样:

12083 ; serial number
3h ; refresh interval
30m ; retry interval
3w ; expiry period
1h ; negative TTL
)

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

在SOA中:“IN”部分意味着互联网(将出现在许多记录中)。SOA是指示这是一个“开始授权”记录的指示器。

:它定义了该域的主名称服务器。名称服务器可以是主要的,也可以是次要的,如果配置了动态DNS,那么需要有一个服务器是“主要的”,也就是这里。如果您没有配置动态DNS,那么这只是您的一个主要名称服务器。

admin.domain.com.:这是该区域管理员的电子邮件地址。电子邮件地址中的“@”被替换为一个点。如果电子邮件地址的名称部分通常有一个点,这是替换为“”在这一部分([email protected]成为您的\ namee.domain.com)。

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

3h:该分区的刷新间隔。这是次要服务器在轮询主服务器进行区域文件更改之前等待的时间。

30m:该区域的重试间隔。如果在刷新周期启动时次要服务器不能连接到主要服务器,那么它将等待这段时间并重试轮询主要服务器。

这是有效期。如果辅助名称服务器在此时间内无法与主名称服务器联系,则它将不再作为此区域的权威源返回响应。

1h:这是名称服务器缓存一个名称错误的时间,如果它不能在这个文件中找到请求的名称。

A和AAAA记录

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

这些记录的一般格式是:
主机在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。在一个111.222.111.222

在大多数情况下,你可以将你的web服务器定义为“www”:

www IN A 222.222.222.222

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

domain.com。在一个222.222.222.222

我们可以使用“@”来表示基本域:

@在222.222.222.222

我们还可以选择解析该域下没有显式定义给该服务器的任何内容。我们可以使用“*”通配符来做到这一点:

在222.222.222.222

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

CNAME记录

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

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

server1 IN A 111.111.111.111

CNAME server1 . www

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

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

MX记录

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

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

在MX 10 mail.domain.com。

注意,开头没有主机名。

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

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

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

在MX 10 mail1.domain.com。

在MX 50 mail2.domain.com。

mail1 IN A 111.111.111.111

mail2 IN A 222.222.222.222

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

我们也可以这样写:

在MX 10 mail1

在MX 50邮件2

mail1 IN A 111.111.111.111

mail2 IN A 222.222.222.222

NS记录

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

您可能想知道,“如果区域文件驻留在名称服务器上,为什么它需要引用自身?”DNS如此成功的部分原因是它的多层缓存。在区域文件中定义名称服务器的一个原因是,区域文件实际上可能来自另一个名称服务器上的缓存副本。需要名称服务器本身上定义的名称服务器还有其他原因,但我们在这里不详细讨论。

与MX记录一样,这些都是区域范围的参数,因此它们也不包含主机。一般来说,它们是这样的:

在NS ns1.domain.com。

在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记录的例子,显示了谷歌的IPv6 DNS Server 2001:4860:4860::8888的反向啃咬格式。

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。86400在PTR google-public-dns-a.google.com。

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

下面是一个dig命令的示例。添加+是为了减少反向DNS名称的输出。

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记录。例如,你可能会看到纽约或芝加哥路由器的“NYC”或“CHI”。这在运行traceroute或MTR并检查互联网流量所采取的路径时很有帮助。

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

注意:重要的是PTR记录中的FQDN有一个对应的和匹配的转发a记录。例如:111.222.333.444的PTR为server.example.com, server.example.com是指向111.222.333.444的a记录。

CAA记录

你可能感兴趣的:(DNS,dns服务器)