DNS缓存以及它如何使您的Internet更好

DNS缓存(有时称为DNS 解析器缓存)是由计算机的操作系统维护的临时数据库,其中包含所有最近访问的记录以及尝试访问网站和其他Internet网络域的记录。

换句话说,DNS缓存只是最近DNS查询的内存,当您试图找出如何加载网站时,您的计算机可以快速引用它。

大多数人只有在提到刷新/清除DNS缓存以帮助解决互联网连接问题时,才会听到“DNS缓存”这个短语。 这个页面底部还有更多内容。

DNS缓存的目的

互联网依靠域名系统(DNS)来维护所有公共网站及其相应IP地址的索引。 你可以把它想成电话簿。

通过电话簿,我们不必记住每个人的电话号码,这是电话可以通信的唯一方式:使用电话号码。 同样,DNS也被使用,所以我们可以避免记住每个网站的IP地址,这是网络设备与网站进行通信的唯一途径。

当您要求您的网络浏览器加载网站时,幕后会发生什么......

你输入一个URL 并且您的网络浏览器向您的路由器询问IP地址。 路由器有一个DNS服务器地址存储,所以它会向DNS服务器请求该主机名的IP地址。 DNS服务器找到属于的IP地址 然后能够理解你要求的网站,然后你的浏览器可以加载相应的页面。

这发生在你想访问的每个网站上。 每当用户通过其主机名访问网站时,Web浏览器就会向互联网发起请求,但只有在网站名称“转换”为IP地址后才能完成此请求。

问题在于,尽管您的网络可以使用大量的公共DNS服务器来尝试加速转换/解析过程,但仍然可以快速获得“电话簿”的本地副本,这是DNS缓存进入的地方玩。

DNS缓存尝试通过在请求发送到互联网之前处理最近访问过的地址的名称解析来加速该过程。

注意:在“查找”过程的每个层次结构中实际上都有DNS缓存,最终让您的计算机加载该网站。 计算机到达您的路由器,该路由器与您的ISP联系 ,这可能会在另一个ISP出现问题后才会结束所谓的“根DNS服务器”。 出于同样的原因,该流程中的每个点都有一个DNS缓存,这是为了加速名称解析过程。

DNS缓存如何工作

在浏览器向外部网络发出请求之前,计算机会截取每个请求并在DNS缓存数据库中查找域名。 该数据库包含所有最近访问的域名的列表以及第一次发出请求时DNS为其计算的地址。

可以使用命令 ipconfig / displaydns在Windows上查看本地DNS缓存的内容,其结果与此类似:

docs.google.com
-------------------------------------
记录名称。 。 。 。 。 :docs.google.com
记录类型。 。 。 。 。 :1
生存时间。 。 。 。 :21
数据长度。 。 。 。 。 :4
部分 。 。 。 。 。 。 。 :回答
A(主机)记录。 。 。 :172.217.6.174

在DNS中,“A”记录是包含给定主机名的IP地址的DNS条目的一部分。 DNS缓存存储此地址,请求的网站名称以及来自主机DNS条目的其他几个参数。

什么是DNS缓存中毒?

当未经授权的域名或IP地址被插入时,DNS缓存会中毒或被污染

由于技术故障或管理事故,有时缓存可能会损坏,但DNS缓存中毒通常与计算机病毒或将无效DNS条目插入缓存的其他网络攻击相关联。

中毒导致客户端请求被重定向到错误的目的地,通常是恶意网站或广告页面。

例如,如果上面的docs.google.com记录具有不同的“A”记录,那么当您在Web浏览器中输入docs.google.com时,您会被带到其他地方。

这给流行网站带来了巨大的问题。 例如,如果攻击者将您对Gmail.com的请求重定向到一个看起来像Gmail但不是的网站,那么您最终可能会遭受像捕鲸这样的网络钓鱼攻击。

DNS冲洗:做什么以及如何做到这一点

在解决缓存中毒或其他互联网连接问题时,计算机管理员可能希望刷新 (即清除,重置或擦除)DNS缓存。

由于清除DNS缓存会删除所有条目,因此它会删除任何无效记录,并在下次尝试访问这些网站时强制计算机重新填充这些地址。 这些新地址取自您的网络设置使用的DNS服务器。

因此,要使用上述示例,如果Gmail.com记录中毒并将您重定向到一个奇怪的网站,则刷新DNS是让常规Gmail.com重新返回的第一步。

在Microsoft Windows中,可以使用命令提示符中ipconfig / flushdns命令刷新本地DNS缓存。 当您看到Windows IP配置成功刷新DNS解析程序缓存成功刷新DNS解析程序缓存消息时,您会知道它有效。

通过命令终端,macOS用户应该使用dscacheutil -flushcache ,但知道运行后没有“成功”的消息,所以你不会被告知它是否工作。 Linux用户应输入/etc/rc.d/init.d/nscd restart命令。

路由器也可以具有DNS缓存,这就是重新启动路由器通常是故障排除步骤的原因。 出于同样的原因,您可能会刷新计算机上的DNS缓存,您可以重新启动路由器以清除存储在其临时内存中的DNS条目。