亲,你有多久没有清理过你电脑的 DNS 缓存了?

2022-06-09 13:33:32 浏览数 (1)

最近明月因为工作关系更换了几次使用的电脑,期间就发现明明另一台电脑访问某个网址是正常,换一台电脑后就会出现无法访问的现象,并且用的还是同一个宽带网络,实在是太诡异了!后来还是突然想起来 DNS 缓存这个问题,立马清除了那台电脑的 DNS 缓存后,打不开的网址顺利的呈现出来了。DNS 缓存就这么重要吗?DNS 缓存是什么原理?如何清除 DNS 缓存?今天明月就详细的给大家说到说到。

什么是 DNS 缓存?

DNS 缓存指 DNS 返回了正确的 IP 之后,系统就会将这个结果临时储存起来。并且它会为缓存设定一个失效时间 (例如 N 小时),在这 N 小时之内,当你再次访问这个网站时,系统就会直接从你电脑本地的 DNS 缓存中把结果交还给你,而不必再去询问 DNS 服务器,变相“加速”了网址的解析。

当然,在超过 N 小时之后,系统会自动再次去询问 DNS 服务器获得新的结果。所以,当你修改了 DNS 服务器,并且不希望电脑继续使用之前的 DNS 缓存时,就需要手动去清除本地的缓存了。

本地 DNS 迟迟不生效或者本地 dns 异常等问题,都会导致访问某些网站出现无法访问的情况,这个时候我们就需要手动清除本地 DNS 缓存,而不是等待!

为什么要清理 DNS 缓存?

一般情况下,我们的电脑是不需要手动去清理 DNS 缓存的,不过有些时候,某些网站以及 CDN 服务因域名或者节点 IP、DNS 服务器地址变更,而我们的电脑还停留在历史访问的 DNS 缓存上,这样就会出现访问网站解析出错,需要手动去更新清除电脑 DNS 缓存。这样,当电脑重新访问某个存在 DNS 变更的网站时,能够重新获取到新的可用地址,从而可以正常访问。

如何清除 DNS 缓存?

不同的系统环境下清除 DNS 缓存也是不一样的,明月今天就给大家分享一下 Windows 、Linux、Mac 三个主流桌面操作系统下的具体方法:

1、Windows

在 Windows 系统下清理 DNS 缓存最常见的办法就是命令行式的清理 DNS 缓存,具体操作如下:

Win 键 R 打开“运行”输入“cmd”进入命令行窗口,输入:“ipconfig /flushdns”指令后回车运行即可,如下图:

最后输入“exit”退出命令行即可完成。

2、Linux

在 Linux 上,除非已安装并运行诸如 Systemd-Resolved,DNSMasq 或 Nscd 之类的缓存服务,否则没有操作系统级 DNS 缓存。根据 Linux 发行版和所使用的缓存服务,清除 DNS 缓存的过程有所不同。

大多数现代 Linux 发行版,例如 Ubuntu 18.04,都使用 systemd 解析的服务来缓存 DNS 条目。

要查找服务是否正在运行,请运行:

$ sudo systemctl is-active systemd-resolved.service

如果该服务正在运行,则将打印命令 active,否则将看到 inactive。

要清除系统解析的 DNS 缓存,你需要键入以下命令。

$ sudo systemd-resolve --flush-caches

成功后,该命令不会返回任何消息。

Dnsmasq

Dnsmasq 是轻量级的 DHCP 和 DNS 缓存名称服务器。

如果你的系统使用 DNSMasq 作为缓存服务器,则要清除 DNS 缓存,需要重新启动 Dnsmasq 服务:

$ sudo systemctl restart dnsmasq.service

也可以使用以下命令

$ sudo service dnsmasq restart

NSCD

NSCD 是一个缓存守护程序,它是大多数基于 RedHat 的发行版的首选 DNS 缓存系统。

如果系统使用 NSCD 来清除 DNS 缓存,则需要重新启动 NSCD 服务:

$ sudo systemctl restart nscd.service

或者

$ sudo service nscd restart

3、Mac

根据你所运行的版本,在 MacOS 中刷新缓存的命令略有不同。该命令必须以具有系统管理员特权的用户(sudo 用户)身份运行。

要清除 MacOS 中的 DNS 缓存,请执行以下步骤:

打开查找器。

转到应用程序>实用程序>终端。这将打开终端窗口。

在命令行中,输入以下行,然后按回车:

$ sudo killall -HUP mDNSResponder

输入你的 sudo 密码,然后再次按回车。成功后,系统不会返回任何消息。

对于早期版本的 MacOS,刷新缓存的命令不同。

MacOS 版本 10.11 和 10.9

$ sudo dscacheutil -flushcache

$ sudo killall -HUP mDNSResponder

MacOS 版本 10.10

$ sudo discoveryutil mdnsflushcache

$ sudo discoveryutil udnsflushcaches

MacOS 版本 10.6 和 10.5

$ sudo dscacheutil -flushcache

如果长期不清理 DNS 缓存就一定会出现某些网址无法访问的问题,因为互联网是个动态的,每天都会有变化的,清理 DNS 缓存时间拖的越久,这种类似的问题就会越频繁,再加上国内各地的宽带运营商为了提升本地用户的访问速度都会做各个地区运营商层级的 DNS 缓存,就又加重了自己电脑上 DNS 缓存混乱的严重度(重启路由器后恢复网页访问就是这个原因造成的)。另外,所谓的“DNS 污染”也跟 DNS 缓存是有一定关系的,有些非法应用就会篡改 DNS 缓存来实现 DNS 劫持、污染给你的电脑推送广告、静默安装全家桶什么的。

所以,建议大家养成定期清理一下自己电脑 DNS 缓存的好习惯,特别是作为一个站长,这是基本的技术素养哦,别人的网站打不开就说人家网站有问题的时候往往都是自己电脑有这方面的问题,那就闹笑话了不是吗?另外,让自己的路由器每天定时重启一下也是个好习惯,也会减少 DNS 缓存过度滞后引起的访问故障。

0 人点赞