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

在了解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”进入命令行模式 。
【如何清理dns缓存 一文读懂DNS缓存原理及清理方法】(2)输入ipconfig/? , 可看到有一个名为/flushdns的命令 , 通过执行该命令可以清除DNS缓存信息 。

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

文章插图
(3)执行ipconfig/flushdns命令 , 当出现“已成功刷新DNS缓存”的提示时说明当前计算机的缓存信息已经被成功清除 。
如何清理dns缓存 一文读懂DNS缓存原理及清理方法

文章插图
(4)接下来我们再访问域名时 , 就会请求DNS服务器获取最新的解析地址 , 从而避免解析错误情况的发生 。
DNS缓存清理完毕后 , 再次访问域名 , 就会委托递归解析服务器发起全球递归查询 , 从而获得最新的解析记录 。

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