浅聊DNS

2021-05-15  本文已影响0人  丑人林宗己

最近遇到一些用户反馈加载网页(首页加载)很慢,技术支持同事远端支持发现这部分用户大多数都是使用一些比较差(不知名)的运营商网络,而技术支持同事一般的解决方案则是配置本地DNS,所以近期梳理了一些关于DNS的知识以作补充。

本文行文包括如下四点:
1、什么是DNS
2、DNS解析的基本过程
3、DNS的主要问题
4、HttpDNS

什么是DNS

DNS,全称Domain Name Server, 中文译为 域名系统。它的核心服务是提供域名到IP的映射,所以本质上是一个数据库。

工作原理如下:


image.png

域名系统的基本结构:


image.png

DNS解析的基本过程

基本过程如下:


image.png

其中要关注一个问题:
1、递归查询,是指本地DNS服务器向根域名系统发起递归查询,会走跟域名系统,顶级域名系统到权威系统的过程
2、迭代查询,是指本地DNS服务器向其他DNS解析器发起查询,由其他DNS服务器进行解析或者进行递归/迭代查询

DNS的主要问题

1、域名缓存
2、解析转发
3、LocalDNS递归出口NAT

域名缓存

从DNS解析查询流程去看,域名缓存是每个域名服务器都会有的能力。

域名缓存会带来什么问题呢

缓存的域名并不是一个最合适的域名。比如一个深圳的用户由于某些原因缓存到了北京节点的IP。所以域名缓存可能导致全局域名解析失效,进而导致流量调度失效。

为什么需要进行域名缓存?

解析转发

除了域名缓存以外,运营商的LocalDNS还存在解析转发的现象。解析转发是指运营商自身不进行域名递归解析,而是把域名解析请求转发到其它运营商的递归DNS上的行为。

正常的域名解析,是本地域名解析可以直接向权威域名系统发起请求,一般的权威域名系统会根据请求的IP进行解析,并根据请求的IP携带的信息,比如所在区域,从而返回距离用户最近的IP节点。(这样的技术方案称为全局负载均衡,GSLB)

当本地DNS服务器设置了非递归模式,它自己不进行域名解析,而是会把域名解析请求转发给其他运营商(本运营商远端)的递归DNS服务器上,这样的话,这部分流量就可以被合作的运营商所拿下(或者请求带远端的IDC上)

image.png

LocalDNS递归出口NAT

LocalDNS递归出口NAT指的是运营商的LocalDNS按照标准的DNS协议进行递归,但是因为在网络上存在多出口且配置了目标路由NAT,结果导致LocalDNS最终进行递归解析的时候的出口IP就有概率不为本网的IP地址。

image.png

总结

当DNS服务器发起递归查询时的IP地址非常重要,不管解析出别的运营商地址,还是远端地址,都是不可取的,且全局流量调度失效简直就是灾难。

HttpDNS

域名解析既然有这么多坑,那有没有一种更好的解决方案,可以绕过Local DNS 服务器直接由GSLB来进行解析处理呢?

常见的,低成本又高效的解决方案是HttpDNS。通俗的解释,客户端使用Http协议请求自身部署的DNS服务器进行解析。

HttpDNS的优势

参考阿里云HttpDNS:https://help.aliyun.com/document_detail/150646.html?spm=5176.10695662.5694434980.5.faa977686lkw70

上一篇下一篇

猜你喜欢

热点阅读