DNS服务器递归解析详解
1、基本概念
DNS(Domain Name System):域名系统,是互联网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不需要记住能够被机器直接读取的IP数串。
递归DNS服务器:又叫local dns,是一种功能复杂些的resolver,其核心功能一个是缓存、一个是递归查询,收到域名查询请求后其首先看本地缓存是否有记录,如果没有则一级一级的查询根、顶级域、二级域……直到获取到结果然后返回给用户,日常上网中运营商分配的DNS即这里所说的递归DNS。
2、DNS递归解析原理
以本地名称服务器为中心:在DNS递归名称解析中,当所配置的本地名称服务器解析不了时,后面的查询工作是由本地名称服务器替代DNS客户端进行的(以“本地名称服务器”为中心),只需要本地名称服务器向DNS客户端返回最终的查询结果即可。
具体流程
客户端发起请求:客户端向本机配置的本地名称服务器(在此仅以首选DNS服务器为例进行介绍,所配置其它备用DNS服务器的解析流程完全一样)发出DNS域名查询请求。
本地名称服务器查询缓存:本地名称服务器收到请求后,先查询本地的缓存,如果有该域名的记录项,则本地名称服务器就直接把查询的结果返回给客户端。
逐级向上查询:如果本地缓存中没有该域名的记录,则本地名称服务器再以DNS客户端的角色发送与前面一样的DNS域名查询请求发给根名称服务器,根名称服务器收到DNS请求后,把所查询得到的所请求的DNS域名中顶级域名所对应的顶级名称服务器地址返回给本地名称服务器,接着本地名称服务器根据根名称服务器所返回的顶级名称服务器地址,向对应的顶级名称服务器发送与前面一样的DNS域名查询请求,对应的顶级名称服务器在收到DNS查询请求后,也是先查询自己的缓存,如果有所请求的DNS域名的记录项,则相接把对应的记录项返回给本地名称服务器,然后再由本地名称服务器返回给DNS客户端,否则向本地名称服务器返回所请求的DNS域名中的二级域名所对应的二级名称服务器地址,然后本地名称服务器继续按照前面介绍的方法一次次地向三级、四级名称服务器查询,直到最终的对应域名所在区域的权威名称服务器返回到最终的记录给本地名称服务器,然后再由本地名称服务器返回给DNS客户,同时本地名称服务器会缓存本次查询得到的记录项。
3、递归DNS服务器的特点
对用户透明:在整个DNS查询过程中,客户端除了在一开始向本地域名服务器发起请求外,其余时间都是由本地域名服务器代替进行递归查询,用户无需了解背后的复杂查询过程。
缓存功能:递归DNS服务器具有缓存功能,会根据域名的TTL(Time to Live)值,将查询结果在本地保存一段时间,当客户端在TTL值内再次发起查询请求,本地域名服务器会直接将该结果发给客户端,而无需再次发起全球查询,这样可以大大提高查询效率,减少对上级服务器的查询压力。
公共性:公共DNS属于递归DNS,其典型特征为对外一个IP,为所有用户提供公共的递归查询服务,例如谷歌的8.8.8.8和8.8.4.4以及114的114.114.114.114和114.114.115.115都属于这一类DNS。
4、递归DNS服务器与权威DNS服务器的区别
功能不同:权威DNS是特定域名记录(example.com”)在域名注册商处所设置的DNS服务器,用于特定域名本身的管理(增加、删除、修改等),只对自己所拥有的域名进行域名解析,对于不是自己的域名则拒绝访问,而递归DNS负责接受用户对任意域名查询,并返回结果给用户,不负责帮助客户端进行递归查询返回解析记录。
应用场景不同:权威DNS由域名解析服务商建设,提供域名管理服务,维护域名解析记录,递归DNS由网络运营商建设,提供域名查询解析服务。
5、常见的递归DNS服务器软件及配置示例(以Unbound为例)
软件介绍:Unbound是一款开源的DNS解析器,具有高性能、安全性好等特点,常用于搭建递归DNS服务器。
配置步骤
安装Unbound:在Linux系统中,可以使用包管理器进行安装,如在Rocky Linux 8中,可使用相应的命令进行安装。
配置文件设置:主要的配置文件是unbound.conf
,在其中可以进行各种参数的设置,如监听的IP地址、端口号、转发器设置等,若要添加转发器,可在配置文件中指定其他DNS服务器的IP地址,使本地服务器在无法解析时将请求转发给指定的转发器。
启动与测试:配置完成后,启动Unbound服务,并使用工具如dig
或nslookup
进行测试,检查DNS解析是否正常工作。
6、查看DNS递归服务器解析过程的方法
使用dig +trace
命令:例如执行dig +trace baidu.com
,可以详细显示DNS递归解析的过程,包括从根域名服务器开始,逐步向下查询各级域名服务器,直到最终获取到域名对应的IP地址的整个过程。
以下是两个与本文相关的问题及解答:
1、问题:为什么递归DNS服务器需要有可靠的互联网连接?
解答:因为递归DNS服务器的主要功能是接受用户对任意域名的查询请求,并代替用户向各级域名服务器进行递归查询,直到获取到最终的解析结果,在这个过程中,它需要与根域名服务器、顶级域名服务器以及其他各级域名服务器进行通信,如果互联网连接不可靠,可能会导致查询失败或延迟过高,影响用户的正常访问体验,所以递归DNS服务器必须要有可靠的互联网连接方可正常工作。
2、问题:如何判断一个DNS服务器是否是递归DNS服务器?
解答:可以从以下几个方面进行判断,一是查看其是否对用户发出的域名解析请求必须给出一个最终的IP地址结果,如果是,则可能是递归DNS服务器;二是观察其在解析过程中是否是以自身为中心代替用户进行逐级查询,若是则为递归DNS服务器;还可以通过查看其配置文件或相关文档说明来确定其是否具备递归查询的功能以及是否被设置为递归模式运行。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/194378.html