DNS服务器配置与管理(1)——DNS原理

3 篇文章 0 订阅

Internet中使用IP地址来标识计算机的身份,当访问远程主机时,是通过IP地址来寻址的,而数字化的IP地址难以记忆,于是人们发明了域名,域名可将一个IP地址关联到一组有意义的字符上去,以便人们记忆。

一、DNS概述

1.1 域名

域名(Domain Name),是由一些用点分隔的字符串组成的符号化的地址,每一个符号化的地址都与特定的IP地址对应,用于标识Internet上某一台计算机或一组计算机的名称。

互联网名称与数字地址分配机构(ICANN)负责管理和协调国际互联网络域名系统。根据ICANN的定义,一个完整的域名至少有两个部分,各部分之间用“.”来分隔。

1.2 域名的空间结构

为了便于管理,域名空间采用了一种层次化的树形结构,最顶层为根域,用“.”表示。

在根域空间内继续分割若干个子空间,这些子空间仅次于根域,被称为顶级域,顶级域的完整域名是由自己的域名加上根域的名称组合而成,如"com."、"net."等。

在顶级域空间下继续分割成若干个子空间,被称为二级域,如在顶级域com下分割了“example”和“test”子域,此时,二级域的完整域名由自己的域名和上一级域的域名组合而成,用"."隔开。因此,这两个二级域的完整域名为“example.com."和"test.com."。不过通常情况下,完整域名的最右侧的根域"."一般省略。

以此类推,二级域下再可以划分三级域......,如“masut.edu.cn.”,每一级的域名控制它下一级域名的分配。

在域名空间中的计算机通常需配置主机名,如“www”、“mail”,把计算机的主机名与其所在的域的完整域名组合在一起,就可以确定这台计算机的完整名称,称为完全限定域名(Full Qualified Domain Name,FQDN),如“www.example.com"、”mail.test.net“等。如下图所示:

1.3 域名系统

域名系统(Domain Name System,DNS),是一种TCP/IP的标准服务,负责IP地址和域名之间的转换。从域名到IP地址的转换过程称为正向解析,从IP地址到域名的转换称为反向解析。

DNS服务使用TCP和UDP的53端口,TCP的53端口用于连接DNS服务器,UDP的53端口用于解析域名。

二、DNS服务器

DNS的核心是DNS服务器,它可以提供域名查询服务,用来维护DNS名称数据,并处理DNS客户端主机名的查询。DNS服务器保存了包含主机名和相应IP地址的数据库。

通常在一个域中可能有多个DNS服务器,DNS服务器有以下几种类型:

2.1 主DNS服务器

负责维护这个区域的所有域名信息,是特定域所有信息的权威性信息源。它从域管理员构造的本地磁盘文件中加载域信息,该文件(区域文件)包含着该服务器具有管理权的一部分域结构的最精确信息。

主DNS服务器是一种权威性服务器,一个域有且只有一个主DNS服务器。

2.2 辅助DNS服务器

当主DNS服务器出现故障、关闭或负载过重时,辅助DNS服务器作为备份服务器提供域名解析服务。辅助DNS服务器从主DNS服务器获得授权,并定期向主服务器询问是否有新数据,如果有则更新域名解析数据,以保持和主服务器同步。在辅助DNS服务器中有一个所有域信息的完整拷贝,可以权威地回答对该域的查询,因此,辅助DNS服务器也是权威性服务器。

2.3 惟缓存DNS服务器

只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但没有域名数据库。它从某个远程服务器取得每次DNS服务器查询的结果,并将它放在高速缓存中,以后查询相同的信息时用它予以响应。

缓存DNS服务器不是权威性服务器,因为提供的所有信息都是间接信息。

构建缓存DNS服务器时,必须设置根域或指定其他DNS服务器作为解析来源。

2.4 转发DNS服务器

负责所有非本地域名的本地查询。转发DNS服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的DNS服务器,直到查找到结果为止,否则返回无法映射的结果。

三、区域和DNS资源记录类型

3.1 DNS区域

DNS区域是域名空间树状结构的一部分,通过它将域名空间分割为若干较小的部分以便管理。DNS区域内的数据默认保存在DNS服务器上的区域文件中。一个DNS服务器可以管理一个区域,也可以管理多个区域,反之,一个区域的数据也可以被存储在多台DNS服务器上。

3.2 DNS资源记录

在DNS区域中,资源记录(Resource Record,RR)可以指定资源类型和IP地址,方便客户端找到资源。资源记录还有助于找到在特定域的资源,例如,要查询特定域的邮件服务器时,就可以使用邮件交换器记录,这个记录指向了一台邮件服务器的主机记录。

最常见的资源记录有以下几种。

1、起始授权( Start of Authority,SOA)记录:在每个DNS区域有且仅有一个SOA资源记录,用来标识一个DNS区域内的主DNS服务器。SOA记录处于所有记录的第一条位置,对整个区进行管理设置,定义了区的全局参数,存储相关的重要信息。

2、名称资源(Name Service,NS)记录:用来指定该DNS区域由哪些DNS服务器来进行解析,每个区域在区根处至少包含一个NS记录。

3、主机(Address,A)记录:用来将一个主机的FQDN名映射到一个IP地址,因为有此记录,所以DNS服务器能解析FQDN域名对应的IP地址。如果是IPv6,就用AAAA资源记录。

4、指针(Pointer,PTR)记录:用来将一个IP地址映射到对应主机的FQDN名,这些记录保存在in-addr.arpa域中。用于反向查询,即通过IP地址查找域名。

5、别名(Canonical Name,CNAME)记录:用于创建特定FQDN名的别名,用户可以使用CNAME记录来隐藏用户网络的实现细节,使连接的客户机无法知道真正的域名。

6、邮件交换器(Mail eXchange,MX)记录:它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。MX记录可以有多个,一个MX记录对应一个邮件服务器,每个记录的VALUE之前应该有一个数字,用于表示其优先级,数字越小,优先级越高。每个MX记录应该有一个对应的A记录。

四、DNS查询方式

4.1 递归查询

在递归查询模式下,DNS服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS服务器本地没有存储查询到客户的请求信息,那么该服务器会询问其他服务器,并将查询结果返回给客户端。

主机向本地DNS服务器的查询一般都是采用递归查询。

4.2 迭代查询

当客户端发送查询请求时,如果在DNS服务器中没有查到客户的请求信息,则该DNS服务器会告诉客户端另一台DNS服务器地址,客户端再向这台DNS服务器提交请求,依次循环直到返回查询的结果为止。

本地DNS服务器向根域DNS服务器的查询一般都是采用迭代查询。

下图示意了DNS客户端访问www.example.com主机时的域名解析过程。

①DNS客户端向本地DNS服务器发送查询请求,请求解析www.example.com的IP地址

②本地DNS服务器自身无法解析这个FQDN名,则会向根域DNS服务器查询com域的DNS服务器地址

③根域DNS服务器收到请求后,向本地DNS服务器返回com域的DNS服务器地址

④本地DNS服务器得到com域的DNS服务器地址后,向其请求example.com域的DNS服务器地址

⑤com域DNS服务器收到请求后,向本地DNS服务器返回example.com域的DNS服务器地址

⑥本地DNS服务器得到example.com域的DNS服务器地址后,向其请求FQDN为www.example.com的IP地址

⑦example.com域的DNS服务器将其维护的主机www.example.com的IP地址返回给本地DNS服务器

⑧本地DNS服务器将主机www.example.com的IP地址返回给DNS客户端,完成查询。

4.3 DNS域名解析过程

为了提高解析效率,减少查询开销,每个DNS服务器都有一个高速缓存,存放最近解析过的域名和对应的P地址。这样,当有用户查找相同的域名记录时,便可以跳过某些查找过程,由DNS服务器直接从缓存中查找到该记录的地址,从而大大缩短了查找时间,加快了查询速度。

DNS域名解析的详细过程如下图所示,当客户端发起域名查询请求时,分为三个阶段:

第一个阶段是DNS客户端使用自己的DNS缓存和主机文件解析。若解析成功,则结束,若查询不到,进入第二个阶段;

第二个阶段是DNS客户端向本地DNS服务器发起查询请求。DNS服务器从自己管理的区域文件、DNS服务器缓存查询,若查询成功,则返回给客户端,若查询失败,进入第三个阶段;

第三个阶段是本地DNS服务器以代理的身份,向Internet上其他DNS服务器发起的查询请求,并将最终的查询结果(成功或失败)由本地DNS服务器返回给DNS客户端。

五、Linux上部署DNS服务器

在Linux上配置DNS的常用软件是BIND(Berkeley Internet Name Domain Service),它是一款实现DNS服务器的开放源码软件。BIND已经成为世界上使用最为广泛的DNS服务器软件,目前Internet上半数以上的DNS服务器都是用BIND来架设的,已经成为DNS中事实上的标准。有关在Linux上使用Bind部署DNS服务器的介绍,请参考博文《配置与管理DNS服务器》。

除了BIND外,还有其他一些知名的DNS软件,如PowerDNS、NSD等。这些软件都有各自的特点和优势:

1、PowerDNS:PowerDNS是一款功能强大的开源DNS软件,具有高性能、可扩展性和灵活性等特点。它支持多种存储后端(如MySQL、PostgreSQL等),并提供了API接口以便与其他应用程序集成。PowerDNS还支持虚拟域、负载均衡、区域复制等功能。

2、NSD:NSD(Name Server Daemon)是一款轻量级的DNS服务器软件,专注于简单、高效和安全。它支持正向和反向解析、区域委派等特性,并具有良好的可移植性。NSD通常用于小型网络环境或作为备份DNS服务器使用。

3、商业化产品:除了开源软件外,还有许多商业化的DNS产品,如Dyn、DNS Made Easy等。这些产品通常提供更高级的功能和更全面的支持服务,适用于大型企业和需要高可用性、高可靠性的场景。

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hongmayi3753

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值