有人的地方,就有江湖,有DNS的DNS缓存

日期: 栏目:文章分享 浏览:940 评论:0

有人的地方,就有江湖,有DNS的地方,就有缓存。

为了提升域名查询效率谷歌浏览器清除DNS缓存的方法,设计了域名缓存机制,当访问过某个网站并得到其IP后,会将其域名和IP缓存下来,下一次访问的时候,就不需要再请求域名服务器获取IP,直接使用缓存中的IP,提高了响应的速度。当然缓存是有有效时间(即TTL值)的,当过了有效时间后,再次请求网站,还是需要先请求域名解析。

目前,除了传统的递归DNS服务器(如运营商的Local DNS, , DNS等)外,计算机中DNS记录在本地也有两种缓存方式:浏览器缓存和操作系统(OS)缓存。在浏览器中访问的时候,会优先访问浏览器缓存,如果未命中则访问OS缓存,最后再访问递归DNS服务器,然后递归DNS服务器会递归式的查找域名记录,然后返回结果。那么浏览器DNS缓存和操作系统DNS缓存又是怎样的呢?

浏览器DNS缓存:首先,浏览器DNS缓存的时间跟DNS服务器返回的TTL值无关。浏览器在获取网站域名的实际IP地址后会对其IP进行缓存,减少网络请求的损耗。每种浏览器都有一个固定的DNS缓存时间,如的过期时间是1分钟,在这个期限内不会重新请求DNS。常用的浏览器的DNS缓存时间如下::为了加快访问速度谷歌浏览器清除DNS缓存的方法, 浏览器采用了预提DNS记录,在本地建立DNS缓存的方法,加快网站的连接速度。在地址栏中输入://net-/#dns 就可以看各域名的DNS 缓存时间。默认,对每个域名会默认缓存60s:

:也有dns缓存功能,但是默认缓存时间只有1分钟,可以通过修改该默认值加快DNS解析速度,方法如下:打开一个新的窗口,地址栏输 入 about:,回车,进入设置界面。然后搜索 .,把原来的60改成 6000(表示缓存6000秒),再搜索. 把默认的20改成1000(表示缓存1000条)。如果没 有上面两个项目,新建它们即可,新建条目类型为整数型。 当然也可以按照需要设置成其它的值。但是dns缓存太久了也会出问题,比如有的网站ip换了,就无法访问了。针对这样的问题,还可以安装一个 插件来开启或者 关闭dns cache功能,。

以下是第三方之前测试的不同浏览器的DNS缓存时间情况

(来源链接:)

操作系统DNS缓存:OS缓存会参考DNS服务器响应的TTL值,但是不完全等于TTL值。

系统默认开启DNS缓存服务,叫做,可以缓存一些常用的域名。

/ – 这个命令可以展示现在你电脑已经缓存的域名

/ –这条记录可以帮你马上清空已经缓存的记录

Linux:

Linux系统的nscd服务可以实现DNS缓存的功能。nscd会缓存三种服务,group,hosts,所以它会记录三个库,分别对应源/etc/, /etc/hosts 和/etc/.conf每个库保存两份缓存,一份是找到记录的,一份是没有找到记录的。每一种缓存都保存有生存时间(TTL)。其作用就是增加cache ,加快如DNS的解析等的速度。配置文件为/etc/nscd.conf 默认该服务在或下是关闭的,可以通过 nscd start开启。缓存DB文件在/var/db/nscd下。可以通过nscd -g查看统计的信息,这里列出部分:

也可以通过 /var/db/nscd/hosts命令查看缓存文件

清除缓存

1. nscd -i

2. nscd -i group

3. nscd -i hosts

除了上面的方法,重启nscd服务同样可以达到清理cache的目的。

了解了DNS缓存机制也有助于你判断DNS解析不生效的排查。

标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。发布前请先查看评论规则:点我查看