一文读懂DNS缓存原理及清理方法

发布时间:2022-02-21 14:37:57

在了解DNS缓存之前,首先需要了解DNS查询过程。当客户端发起访问时,并不是每一次都求助于DNS系统,而是会先查询本地DNS缓存中是否有相关记录,如果有记录就会直接访问对应IP地址。如果没有记录才会委托递归服务器进行全球查询。当请求到权威解析服务器后,会返回一个权威解析记录,这个记录会在系统中临时储存起来,以方便下次访问时直接使用,而这个被系统存储起来的临时记录就是DNS缓存。

DNS缓存有哪些作用?

DNS 域名系统给应用访问带来了额外的时延,另外由于 DNS 域名解析采用不可靠的 UDP 协议通讯,受内外部网络环境的影响较大,特别是在有丢包的情况下,导致的时延可能达到数秒。为缓解此问题,DNS 解析采用了缓存机制。

在客户第一次访问之后,递归服务器和客户端都会缓存到该域名的解析记录,并设置相应的缓存生存时间(TTL),在TTL有效期内,客户再次对同域名发起访问时,直接通过客户端缓存和本地DNS服务器高速缓存解析,不再需要经过迭代查询过程。DNS缓存可极大提升DNS域名解析的效率,一定程度上减少了服务器到用户之间环境对DNS域名解析的影响。

DNS缓存使用中的问题

DNS缓存省去了冗长的全球递归查询阶段,极大提升了解析和访问速度,可以让用户获得更快更好的访问体验。但如果DNS缓存设置使用不当,也会给用用户访问体验带来负面影响,甚至影响到正常业务的使用。

(1)缓存刷新不受控

当企业的域名发生变更时,并没有办法刷新全球各地的递归服务器缓存以及客户端上的DNS缓存,因此在每个缓存TTL值超时之前,客户发起请求仍然会按照缓存记录的原有映射关系发起请求,这就可能会出现站点不可达或者访问到错误的网站。只有等递归服务器和客户端上的DNS缓存失效后,才能重新发起请求,得到最新的映射关系。

(2)解析权和缓存值被修改

一些小运营商出于规模、节约成本的考虑,将域名转发到较大运营商进行解析,并把收到的域名缓存值更改为较长的值,这会带来两个方面的问题:

一是,权威DNS接收到的请求IP地址不是客户所在运营商IP地址,客户的请求可能会被引导至错误的线路,导致客户访问慢;

二是,企业域名发生改变后将等待更长的超时时间才能正常访问业务,同样会给客户带来较差的体验。

基于以上这两个问题,为了保证DNS解析安全性和准确性,我们需要定期对DNS缓存进行清理。

如何清理DNS缓存?

(1)通过“开始—运行—CMD”进入命令行模式。

(2)输入ipconfig/?,可看到有一个名为/flushdns的命令,通过执行该命令可以清除DNS缓存信息。

(3)执行ipconfig/flushdns命令,当出现“已成功刷新DNS缓存”的提示时说明当前计算机的缓存信息已经被成功清除。

(4)接下来我们再访问域名时,就会请求DNS服务器获取最新的解析地址,从而避免解析错误情况的发生。

DNS缓存清理完毕后,再次访问域名,就会委托递归解析服务器发起全球递归查询,从而获得最新的解析记录。

从DNS缓存的原理和作用中我们可以看出,DNS缓存虽然可以在一定程度省去了全球递归查询的时间,提高了解析和访问速度,但是也存在DNS劫持、解析不生效等安全隐患,所以我们需要定期对DNS缓存进行清理,才能保证解析的准确性和安全性。

上一篇:一文读懂所有HTTP状态码含义 下一篇:技术分享 | DNS解析不生效的原因及解决方法