10分钟

课程背景

实验预计耗时:60分钟

1. 课程背景

1.1 课程目的

域名系统(Domain Name System)在现今的网络服务中被广泛应用。例如,使用浏览器进行网页访问时通常会使用域名,在这个过程中,域名首先需要被解析为IP地址,客户端才能访问到相应的服务。因此,掌握DNS服务的概念、域名空间以及解析过程对我们理解网络访问具有重大意义。

本实验将通过在Windows Server上部署DNS服务实现域名解析,来介绍DNS相关的理论知识及配置方法,让学员能够掌握在本地数据中心,乃至在云上部署DNS服务的能力。

1.2 课前知识准备

1.相关概念

1)环境准备相关

  • 私有网络:私有网络是腾讯云提供的逻辑隔离网络空间,与传统数据中心运行的内网环境类似。在私有网络内可以托管腾讯云上的服务资源。
  • NAT网关:腾讯云提供的一种网络云服务,可以实现网络地址的转换,让私有网络内的资源访问Internet。

2)域名系统相关

  • DNS:全称Domain Name System,域名系统,存储着域名和IP地址的映射关系,可以帮助用户更方便的访问互联网。
  • 域名空间:域名系统是单根树状的层次结构,如下图所示,这个树状结构就称为DNS域名空间。位于树状结构最上层的是DNS域名空间的,一般用句点(.)来表示。在根之下,会有用于组织分类的顶级域,例如顶级域(.com)常用于商业机构。而在顶级域之下是二级域,可供企业或组织申请与使用,例如(tencent.com)是由腾讯公司申请的域名。在二级域之下,可以再细分三级域,也可以部署主机。cloud就是tencent.com下的一台主机,它的完整名称就是cloud.tencent.com。这个名称也被称为FQDN(Fully Qualified Domain Name)。
1-2-1 域名空间
  • DNS区域:DNS区域是域名空间树状结构的一部分,通过划分DNS区域可以将域名空间分割为便于管理的小区域。DNS区域以区域文件的形式保存在DNS服务器中。一个DNS区域涵盖的范围必须是域名空间中连续的区域。例如,tencent.com和test.com就不是连续的名称空间,不能包含在一个区域内。
1-2-2 DNS区域

3)域名解析相关

  • DNS服务器:为客户端提供域名解析服务的服务器就称为DNS服务器,或名称服务器。DNS服务器内一般存储着域名空间的一个或多个区域记录。这时,该DNS服务器就被称为这些区域的授权服务器
  • 唯缓存服务器:唯缓存服务器是一台不存储任何区域记录的DNS服务器。当接收到客户端的解析请求时,它会向其他DNS服务器进行查询,并将查询的结果提供给客户端,同时存储到缓存区。如果客户端再次请求解析该域名,唯缓存服务器的缓存区有所需记录的话,将会把解析结果直接返回给客户端。为了加快域名解析的速度,唯缓存服务器在网络中被大量部署。客户端可以通过多级缓存快速得到结果,而无需访问至该DNS区域的授权服务器中进行解析。
  • 公共DNS服务器:公共DNS服务器是由各组织维护的DNS服务器,可以为大众提供免费的DNS服务。例如,常用的DNS服务器地址8.8.8.8就是由谷歌公司维护的公共DNS服务器的地址。公共DNS服务器通常都是唯缓存服务器,存储着大量的缓存记录,可以帮助客户端快速实现域名解析。
  • 主机记录/A或AAAA记录:一条主机记录就是主机域名和IP地址的对应关系。其中,A记录代表的是主机域名和IPv4地址的对应关系,而AAAA记录是主机域名和IPv6地址的对应关系。
  • 别名记录/CNAME记录:当一台主机需要使用多个主机名的时候就可以通过新建别名(CNAME)记录来实现。例如:一台主机是FTP服务器,域名为ftp.test.com;它同时又是一个网站服务器,希望另外分配一个主机名为www,让用户能够通过www.test.com来进行访问。这个时候就可以为ftp.test.com创建别名www.test.com来实现。
  • hosts文件:存储在路径C:\Windows\System32\drivers\etc下,名称为“hosts”的文件,可以使用记事本工具打开。在该文件中可以写入域名和IP地址的对应关系。当客户端需要解析域名时,首先将查询本地hosts文件中是否记录了该域名对应的IP地址,这是域名解析的第一步。但用户一般不会修改本地hosts文件中内容,因此,客户端通常在这一步中无法解析出IP地址。
  • 条件转发器:DNS服务器可以配置条件转发器,设置某一区域相关的域名都转发给另一台DNS服务器进行解析。条件转发器常用于为DNS服务器指向授权服务器。例如,管理员已知test.com的授权服务器IP地址为192.168.10.10,那他就可以在本地DNS服务器上设置条件转发器,将所有test.com区域相关的域名解析请求都转发至192.168.10.10。通过条件转发器的配置,可以加快相应区域域名的解析。
  • 转发器:DNS服务器可以配置转发器,将所有不能解析的域名都转发给另一台DNS服务器进行解析,常用于为DNS服务器指向唯缓存服务器。
  • “根提示”服务器:“根提示”服务器就是域名空间中“根”的DNS服务器,共有13台,每一台都是通过集群部署的。这13台“根提示”服务器的IP地址会存储在所有DNS服务器上。当DNS服务器无法通过其他方式实现域名解析时,将根据“根提示”服务器的指向发起解析请求。当“根提示”服务器接收到请求后,它将判断需解析的域名属于哪个顶级域,然后把相应顶级域服务器的IP地址返回给DNS服务器。例如,需解析www.test.com时,“根提示”服务器就会返回(.com)顶级域服务器地址。DNS服务器会根据返回的IP地址向(.com)顶级域服务器发起请求;(.com)顶级域服务器接收到请求后,将判断需解析的域名属于(test.com)二级域,就会把(test.com)二级域的授权服务器IP地址返回给DNS服务器。DNS服务器将再次根据返回的IP地址访问至(test.com)二级域的授权服务器,并最终获得结果。
1-2-3 根提示
  • 递归查询:递归查询是域名解析的一种查询方式。客户端发出请求后,如果DNS服务器没有所需记录,那么DNS服务器将代替客户端向其他DNS服务器发起解析请求,这个过程就称为递归查询。
  • 迭代查询:迭代查询是域名解析的另一种查询方式。当第一台DNS服务器向第二台DNS服务器提出解析请求后,如果第二台DNS服务器没有所需记录,那么它会将第三台DNS服务器的IP地址返回给第一台DNS服务器,让第一台DNS服务器自行向第三台服务器进行查询。使用“根提示”进行域名解析就是一种典型的迭代查询。
  • 权威应答:客户端的DNS服务器作为授权服务器为客户端实现域名解析时,所返回的结果就称为权威应答。权威应答有两种:第一种是区域文件中有需解析域名的主机记录,DNS将返回IP地址;第二种情况是区域文件中没有需解析域名的主机记录,在这种情况下,DNS服务器将认为该DNS区域下不存在目标主机,并返回客户端“找不到目标主机“的结果,这称为权威的“否”。如果客户端的DNS服务器不是作为授权服务器为客户端实现域名解析,所返回的结果则称为非权威应答。

2.相关原理

1-2-4 实验原理

本实验将模拟在拥有两个二级域的企业内网环境中部署DNS服务实现域名解析的场景。

在该场景中,使用work.com和test.com两个二级域。其中,work.com用于企业的业务平台,而test.com是企业技术部门用于开发和实验的测试平台。因此,DNS服务需要帮助客户端解析以上两个DNS区域的域名以及Internet中其他DNS区域的域名,让客户端能够正常访问内网业务平台、测试平台以及互联网上的服务。

首先,新建一个私有网络VPC、一个NAT网关以及一台云服务器实例,模拟企业内网环境以及内网环境中需要进行域名解析的客户端。

为实现业务平台work.com区域的解析,在DNS-a服务器上部署DNS服务,并新建work.com区域。那么DNS-a将成为work.com的授权服务器,可以对该区域的域名实现解析。

为实现测试平台test.com区域的解析,在DNS-b服务器上部署DNS服务,并新建test.com区域。那么DNS-b将成为test.com的授权服务器,可以对该区域的域名实现解析。

可以在一台DNS服务器上同时部署以上两个DNS区域,本实验为体现条件转发器的配置以及模拟实际环境中分担负载的部署,因此将两个DNS区域分别部署在两台DNS服务器上。

通过以上的部署,两个DNS区域的授权服务器都已经搭建好了。但对于客户端来说,通常只按照首选DNS服务器的配置请求解析,备用DNS服务器用于实现灾备效果。若为客户端设置DNS-a作为首选DNS服务器,客户端将可以通过DNS服务器解析work.com区域的域名,但无法解析test.com区域的域名。若为客户端设置DNS-b作为首选DNS服务器,效果则相反。在这里,可以通过配置条件转发器解决这个问题。我们将客户端的首选DNS服务器配置为DNS-a,然后在DNS-a上配置条件转发器,将所有test.com区域的域名都转发给DNS-b进行解析。通过这样的配置,客户端无论解析work.com区域,还是test.com区域的域名都将可以获得结果。

将客户端的首选DNS服务器配置为DNS-b,然后在DNS-b上配置指向DNS-a的条件转发器,也可以实现同样的效果。但在一般情况下,业务流量会高于测试流量,因此,本实验使用DNS-a作为客户端的首选DNS服务器。这样业务流量的名称解析将无需进行转发,从而提高解析速度。

对于DNS-a服务器,它是work.com区域的授权服务器,同时配置了test.com的条件转发器,可以对这两个区域的域名解析请求返回结果,但无法解析其他DNS区域的域名。若不做其余配置,它将执行“根提示”过程。但DNS-a是企业内重要的DNS服务器,出于安全考虑,一般无法访问Internet,因此会导致无法访问“根提示”服务器,最终解析超时。而另一方面,“根提示”服务器全部部署在国外,解析速度会比较慢。为了实现优质且安全的DNS服务,可以设置一台DNS-c唯缓存服务器。它将作为DNS-a和Internet中的公共DNS服务器之间的“跳板”。当DNS-a接收到无法解析的请求时,将转发给DNS-c,若DNS-c的缓存区记录了该域名的解析结果,将直接返回给DNS-a;若没有相应的缓存记录,将把请求转发至公共DNS服务器。在公共DNS服务器上存储着大量的缓存记录,一般在这里就能够解析出域名对应的IP地址。本实验使用DNSPod维护的公共DNS服务器,其IP地址为119.29.29.29。

通过这样的部署,企业内网的DNS服务就搭建完成了。

  • 以解析www.work.com为例,客户端首先查看本地的hosts文件,若没有相应记录,则查看本地缓存。如果在本地无法解析出IP地址,将根据DNS指向,向DNS-a发起域名解析请求。DNS-a是work.com区域的授权服务器,它将查看区域文件中是否存在主机名为www的记录,如果有,将返回对应的IP地址,这是DNS的权威应答;如果没有,将返回“找不到www.work.com”的结果,代表该DNS区域中不存在该域名,这称为权威的“否”。
  • 若是解析www.test.com,客户端首先还是查看本地的hosts文件,若没有相应记录,则查看本地缓存。如果在本地无法解析出IP地址,将根据DNS指向,向DNS-a发起域名解析请求。DNS-a不是test.com区域的授权服务器,没有相应的区域文件,所以它将查看缓存记录。如果没有相应的缓存记录,DNS-a将根据条件转发器的配置,把请求转发给DNS-b进行解析,并最终把结果返回给客户端,同时把该域名和IP地址的对应关系记录到缓存区。
  • 而要解析其他DNS区域的域名时,例如cloud.tencent.com,客户端首先还是查看本地的hosts文件,若没有相应记录,则查看本地缓存。如果在本地无法解析出IP地址,将根据DNS指向,向DNS-a发起域名解析请求。DNS-a不是tencent.com区域的授权服务器,没有相应的区域文件,它将查看缓存记录。如果没有相应的缓存记录,DNS-a下一步会查看条件转发器的配置。在DNS-a上,没有配置tencent.com的条件转发器,因此不会进行条件转发。接下来,客户端将查看转发器的配置,并根据转发器的配置转发至DNS-c。DNS-c是一台唯缓存服务器,它也不是tencent.com区域的授权服务器,因此将重复DNS-a上的查询过程,并将请求转发至公共DNS服务器。公共DNS服务器上存储了非常多缓存记录,一般在这一步解析中就可以得到结果。极少数在这一步还没有成功解析的域名,将由公共DNS服务器执行“根提示“的迭代查询过程,得到解析结果并返回。

完整的DNS解析流程请参照下图:

1-2-5 DNS解析流程

以上便是在企业内网中常见的DNS服务部署。如果您在腾讯云上新建一台云服务器,那么腾讯云将自动为它分配DNS服务器地址。该DNS服务器是由腾讯云维护的DNS服务器,无需用户自行构建,方便您轻松实现云上业务部署。无论是在企业内网,还是在腾讯云上,DNS的解析过程都是一样的,掌握DNS解析的过程及原理,将帮助您实现在本地数据中心,以及在云上部署DNS服务。