在互联网蓬勃发展的今天,你刷的每条短视频,下的每个订单,看的每篇新闻,背后都有 DNS 系统默默支撑。但你知道我们每天都离不开的 DNS 系统,到底做了哪些工作吗?今天我们就回归基础,介绍一下 DNS 的两种查询方式:递归查询和迭代查询以及如何在具体场景下灵活使用。 enjoy :
1 关键定义
( 1 )递归查询
递归查询是一种 DNS 服务器的查询模式,在该模式下 DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果 DNS 服务器本地没有存储查询 DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
( 2 )迭代查询
DNS 服务器另外一种查询方式为迭代查询, DNS 服务器会向客户机提供其他能够解析查询请求的 DNS 服务器地址,当客户机发送查询请求时, DNS 服务器并不直接回复查询结果,而是告诉客户机另一台 DNS 服务器地址,客户机再向这台 DNS 服务器提交请求,依次循环直到返回查询的结果为止。
2 DNS查询流量分解
在公网上,一台终端需要访问域名: www.zdns.cn 时,会向本地配置的 LocalDNS 发起域名查询,遵循公网域名解析逻辑,总体流程如下:
根据上述的流量图可以发现,客户端到 LocalDNS 之间,只有一问一答的关系,根据前面介绍我们可以得知,客户端到 LocalDNS 之间是递归查询;
我们再看 LocalDNS 向后端的三台权威 DNS 的解析流量,三次会话的前两次都没有查询到想要的结果,符合第二种查询方式,所以 LocalDNS 到其他权威 DNS 之间是迭代查询;
3 场景拓展
上文中讲述的是比较理想化状态下的 DNS 解析场景,那有没有可能让终端发起迭代请求,或者说让 LocalDNS 发起递归请求呢?其实都是可以实现的。
场景一:终端发起迭代查询
普通终端可以依靠 DNS 查询软件,例如: dig 工具,在查询域名时,加上 +trace 参数,即可完成迭代查询的全部动作,该功能常用于验证公网域名发布后的解析逻辑是否正常。
场景二: LocalDNS 发起递归查询
在网速日益提升的今天,大部分企业都会依靠 CDN 或者智能选路来实现公网应用的访问提速,优先返回最近的镜像站点或者同运营商的公网 IP ,就近访问实现网络提速。
当企业具备多条运营商的出口链路时,只是简单的通过流量负载设备就行分流,就可能出现访问目是电信的地址,却从移动的链路出网访问,这时候就会出现我们常说的跨网访问的情况。如何更好的解决流量负载问题,就需要自建一套本地的 LocalDNS 了,通过对访问域名的多种调度手段,并与出口的流量负载设备配合实现精细化转发,基本上就可以避免跨网访问的情况出现,实现出口链路的高效利用。
在这种场景下, LocalDNS 发起的就是递归查询,被转发的设备可以是其他 LocalDNS ,也可以是一台权威 DNS ,这一点区别于迭代查询。
4 案例分享
由上面的场景我们可以得知,发起何种查询并不是一成不变的,可以根据实际需要发起递归查询或者迭代查询。那我们再来思考另外一个问题,假如我发起了迭代的查询,但查询设备并不是一台权威 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 系统的建设上,就会出现问题。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞0
添加新评论0 条评论