新闻详情

DNS云学堂 | 递归、迭代查询如何在具体场景下灵活使用?

56
发表时间:2021-11-17 16:59

在互联网蓬勃发展的今天,你刷的每条短视频,下的每个订单,看的每篇新闻,背后都有DNS系统默默支撑。但你知道我们每天都离不开的DNS系统,到底做了哪些工作吗?今天我们就回归基础,介绍一下DNS的两种查询方式:递归查询和迭代查询以及如何在具体场景下灵活使用。enjoy


一、关键定义


1)递归查询

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


2)迭代查询

DNS服务器另外一种查询方式为迭代查询,DNS服务器会向客户机提供其他能够解析查询请求的DNS服务器地址,当客户机发送查询请求时,DNS服务器并不直接回复查询结果,而是告诉客户机另一台DNS服务器地址,客户机再向这台DNS服务器提交请求,依次循环直到返回查询的结果为止。


二、DNS查询流量分解


在公网上,一台终端需要访问域名:www.zdns.cn时,会向本地配置的LocalDNS发起域名查询,遵循公网域名解析逻辑,总体流程如下:


  1. 客户端向LocalDNS发起域名www.zdns.cn查询;

  2. Local DNS先向已知的公网13个根服务器发起域名www.zdns.cn查询;

  3. 根服务器不会回应www.zdns.cn的域名结果,而是告知.cn的权威DNS地址;

  4. Local DNS.cn的权威DNS地址发起域名www.zdns.cn查询;

  5. .cn的权威DNS依旧没有www.zdns.cn的结果,而是告知.zdns.cn的权威DNS地址;

  6. LocalDNS.zdns.cn的权威DNS地址发起域名www.zdns.cn查询;

  7. 这时权威域名记录结果由.zdns.cn的权威DNS进行响应,返回域名对接的查询结果;

  8. Local DNS查询到www.zdns.cn的结果以后,将结果告知客户端;


根据上述的流量图可以发现,客户端到LocalDNS之间,只有一问一答的关系,根据前面介绍我们可以得知,客户端到LocalDNS之间是递归查询;


我们再看LocalDNS向后端的三台权威DNS的解析流量,三次会话的前两次都没有查询到想要的结果,符合第二种查询方式,所以LocalDNS到其他权威DNS之间是迭代查询;



三、场景拓展


上文中讲述的是比较理想化状态下的DNS解析场景,那有没有可能让终端发起迭代请求,或者说让LocalDNS发起递归请求呢?其实都是可以实现的。


场景一:终端发起迭代查询


普通终端可以依靠DNS查询软件,例如:dig工具,在查询域名时,加上+trace参数,即可完成迭代查询的全部动作,该功能常用于验证公网域名发布后的解析逻辑是否正常。



场景二:LocalDNS发起递归查询


在网速日益提升的今天,大部分企业都会依靠CDN或者智能选路来实现公网应用的访问提速,优先返回最近的镜像站点或者同运营商的公网IP,就近访问实现网络提速。


当企业具备多条运营商的出口链路时,只是简单的通过流量负载设备就行分流,就可能出现访问目是电信的地址,却从移动的链路出网访问,这时候就会出现我们常说的跨网访问的情况。如何更好的解决流量负载问题,就需要自建一套本地的LocalDNS了,通过对访问域名的多种调度手段,并与出口的流量负载设备配合实现精细化转发,基本上就可以避免跨网访问的情况出现,实现出口链路的高效利用。


在这种场景下,LocalDNS发起的就是递归查询,被转发的设备可以是其他LocalDNS,也可以是一台权威DNS,这一点区别于迭代查询。

四、案例分享


由上面的场景我们可以得知,发起何种查询并不是一成不变的,可以根据实际需要发起递归查询或者迭代查询。那我们再来思考另外一个问题,假如我发起了迭代的查询,但查询设备并不是一台权威DNS,而是一台LocalDNS,这时会发生什么现象呢?


下面我们来看这样一个案例,某企业公司总部在北京,分公司在深圳,企业内部自建了一套DNS体系,顶级域名为.abc,权威服务器在北京,深圳分公司有个子域名为sz.abc,也在本地建立了权威服务器,北京的.abc权威DNS需要提供abc后缀所有域名的查询服务,包括深圳域名的查询服务

.abc的权威DNS上,与公网迭代查询需要的配置一样,只配置了sz.abc域名的子域授权,但子域授权的地址却是深圳分公司的一台LocalDNS,这台LocalDNS做了一条sz.abc域名的转发策略,指向了sz.abc的权威DNS:逻辑图如下:



该案例的部署结构并不满足上面讲述的任何一种场景,访问也出现了问题。用户找到abc的权威DNS,需要查询www.sz.abc的域名,abc权威发现本地有sz.abc的子域委派配置,会发起迭代查询,请求流量到达深圳分公司的LocalDNS时,LocalDNS却不会响应,这是因为LocalDNS只会响应递归查询,对迭代查询直接进行了丢弃。


那有没有可能在保留深圳LocalDNS的情况下,实现北京总部对深圳域名的访问呢?其实很简单,如下图方案一种所示,在现有配置不变的情况下,abc权威DNS上再添加一条sz.abc的转发策略,让迭代查询变成递归查询即可正常解析;


如果是需要保持子域委派的查询逻辑,需要如何调整呢?如下图方案二中所示,就需要调整abc权威上对sz.abc域名的子域委派策略,直接指向sz.abc权威DNS的地址。




DNS的查询看似简单,实际包含了很多使用条件,不管是递归查询还是迭代查询,都有自己独特的使用场景,如果对其理解不够,在DNS系统的建设上,就会出现问题。


_______________
_______________
_______________
_______________
友情互联:
________________________________________________________________________________________________________
邮箱:web@zdns.cn
7*24小时客户服务
咨询电话:400-6688-876
标签:
请输入要描述的内容进行内容补充 请输入要描述的内容
01
03
请输入要描述的内容进行内容补充 请输入要描述的内容
_______________________________________________________________________________________________________
京ICP备15027496号-3 | 京公网安备11010802021115号 | All rights reserved
官方微信
DNS 云解析
新顶级域直通车