DNS 缓存是一份记录了设备在特定时间范围内访问过的所有网站的列表。简单来说,它是存储在您设备上,已经连接过的网络服务记录。
网络连接要解析域名就会利用这份缓存来加快连接的速度,因此它是我们日常上网体验的重要组成部分。 DNS 缓存会影响到浏览体验、安全性,甚至是隐私。因此,了解如何刷新 DNS 缓存(删除 DNS 现有记录)有时是很关键的。
什么是 DNS 服务器
互联网上的计算机使用 IP 地址相互通信。每台连入互联网的设备都有一个独一无二的 IP 地址,用于识别和连接。比如,当访问 dun.im 时,设备实际上是通过该网站服务器的 IP 地址与之建立连接的。
最常见的 IP 地址格式是四组用点分隔的数字(如 1.1.1.1)。尽管 IP 地址对设备来说很友好,但对人类而言难以记忆这些通常是随机的数字。因此,互联网采用了 DNS 系统,让每个 IP 地址与一个更容易记住的名称(域名)相关联。
你可以将 DNS 看作是互联网上的”电话簿”。有了电话簿,你不需要记住每个人的电话号码,只需记住他们的名字,然后查阅电话簿就能找到对应的号码。同理,DNS 的作用就是将纯数字的 IP 地址与便于记忆的域名相关联。
什么是 DNS 缓存
每当你在浏览器地址栏输入一个域名(如 DUN.IM)时,浏览器需要通过 DNS 查找该域名对应的 IP 地址(因为计算机只识别 IP 地址)。这个查询过程相当复杂,需要经过路由器、互联网服务提供商、根域名服务器等多个环节。可以想象,这个 DNS 解析过程对于计算机来说是低效的,对于用户而言也会造成可感知的延迟。
DNS 缓存便是解决这个问题的一种简单有效方式。DNS 缓存本质上是一份自动存储在你设备上,最近访问过网站解析后的记录,有域名解析后对应的 IP 地址。当你再次访问记录中的域名时,设备就可以直接从缓存中读取 IP 地址,而无需经历整个 DNS 查询流程,从而加快了网站访问速度。
除了域名和 IP 地址的对应关系,DNS 缓存还存储了每个条目的存活时间(TTL)等信息。当一个条目的 TTL 期满时,设备就会自动将它从缓存中移除,以防止缓存中留存太久过时的记录。
除了依赖 TTL 机制自动清理,我们也可以手动”刷新”DNS 缓存,删除其中所有记录。乍一看这么做没什么必要,但实际上有很多场景通过 DNS 缓存刷新,可以排除网络故障。
为什么需要刷新 DNS 缓存
尽管 DNS 缓存的设计初衷是提高访问速度,但在某些情况下它也可能带来一些问题,甚至成为攻击媒介。下面是你可能需要刷新 DNS 缓存的四个主要场景:
- 如果网络服务更新了 IP 地址或域名,而设备的缓存中保留的是旧信息,就可能导致无法正常访问该网站,出现 404 错误等。
这种情况下,等待旧记录的 TTL 过期也可以自动修复,但手动刷新缓存记录就可以更迅速解决问题。 - 同理,如果网络服务修改了 DNS 设置,在 DNS 全网范围内更新这个变更需要一定时间。在此期间,即使你本地 DNS 缓存是最新的,依然可能被导向更改前的连接。
- DNS 缓存也容易受 DNS 缓存投毒攻击。攻击者会试图用伪造的恶意记录替换 DNS 缓存中的正常记录,从而将你的访问流量导向钓鱼网站等恶意服务。
虽然现在这种攻击已不常见,但一旦中招后果会非常严重,比如曾有黑客通过这种手段从加密货币钱包窃取了 15 万美元。因此对于重视网络安全的用户,及时刷新 DNS 缓存就很有必要。 - DNS 缓存记录很像浏览器的历史记录,只是由设备系统而不是单一浏览器进行管理。因此,即使你使用了浏览器的无痕模式,相关记录在 DNS 缓存中依然会被保留。一旦系统受到入侵或取证,就能通过查阅 DNS 缓存了解你的上网足迹。
DUN.IM 如何保护 DNS 隐私
DNS 缓存的设计目的是让浏览器可以在本地查询 IP 地址,从而加快网站访问速度。但当缓存中没有你要访问的网络服务记录时,设备就只能通过互联网发送 DNS 查询请求。任何能够获取这些请求的人(比如你的 ISP 或网络管理员)都能够看到你连接过的网络服务记录。
当连接 DUN.IM 匿名服务时,DUN.IM 会强制将所有的网络流量(包括 DNS 查询请求)都经由 VPN 隧道节点进行转发。对于 DNS 服务器来说,这些查询请求似乎是来自某个 VPN 服务器而不是你的设备,从而切断了你的上网活动与设备之间的关联,保护了你的隐私。
如何刷新操作系统的 DNS 缓存
正如上面所说,刷新 DNS 缓存是指手动删除其中所有记录,而不管各条目的 TTL 时间。由于 DNS 缓存是存储在设备上并由操作系统管理的,刷新方法因设备平台而异。 通用的刷新步骤是:
- 打开终端窗口
- 运行特定于该平台的命令来刷新 DNS 缓存
- 根据需要输入密码
打开终端的方式和刷新命令因操作系统而不同,具体如下。
windows 系统
有几种打开命令提示符终端的方式,最通用的是:
- 按下快捷键 Windows+R 打开运行对话框
- 输入 cmd 并按回车
你也可以在开始菜单中直接找到命令提示符程序。
打开终端后,输入命令 ipconfig /flushdns
并按回车即可刷新 DNS 缓存。
macos 系统
在 mac 上,终端程序在应用程序文件夹的实用工具中。 具体的刷新命令因 macOS 版本而有所不同:
版本 | 命令 |
---|---|
Tiger (10.4) | lookupd -flushcache |
Leopard (10.5) | sudo lookupd -flushcache |
Snow Leopard (10.6) | sudo dscacheutil -flushcache |
Lion (10.7)、Mountain Lion (10.8)、Mavericks (10.9) | sudo killall -HUP mDNSResponder |
Yosemite (10.10) | sudo discoveryutil mdnsflushcache |
El Capitan (10.11)、Sierra (10.12)、High Sierra (10.13)、Mojave (10.14)、Catalina (10.15) | sudo killall -HUP mDNSResponder |
Big Sur (11)、Monterey (12)、Ventura (13)、Sonoma (14) | sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder |
Linux 系统
Linux 生态系统分化很大,有些发行版本身就不使用 DNS 缓存。
你可以在终端运行 systemctl is-active systemd-resolved
命令检查是否在缓存 DNS 查询。
如果结果为”active”,说明正在缓存,可使用如下命令刷新:
- Ubuntu:
sudo systemd-resolve --flush-caches
- NCSD:
sudo /etc/init.d/nscd restart
- Dnsmasq:
sudo /etc/init.d/dnsmasq restart
- BIND:
sudo /etc/init.d/named restart
如何刷新浏览器的 DNS 缓存
除了操作系统级别的 DNS 缓存,大部分浏览器也会内置一份自己的 DNS 缓存副本。出于同样的原因,你也应当了解如何刷新浏览器缓存。
chrome/Brave/Opera/Edge
这些基于 Chromium 的浏览器的刷新方式相同,只需在地址栏输入如下命令,然后点击”Clear host cache”即可:
浏览器 | 命令 |
---|---|
Chrome | chrome://net-internals/#dns |
Brave | brave://net-internals/#dns |
Opera | opera://net-internals/#dns |
Edge | edge://net-internals/#dns |
firefox
在 Firefox 中,输入 about:networking#dns
并点击”Clear DNS cache”。
Safari
要清空 Safari 的 DNS 缓存稍微复杂一些,需要先启用”开发”菜单:
- 打开 Safari 菜单中的”设置”
- 切换到”高级”标签页
- 勾选”在菜单栏中显示开发菜单”选项
- 在菜单栏中打开”开发”菜单,选择”清空缓存”
如何刷新路由器的 DNS 缓存
一些高级路由器设备也会缓存 DNS 记录。如果你的路由器支持这项功能,通常只需根据路由器平台,利用上面 Linux 系统的命令,或者部分支持重启路由器自动清理缓存,就可以刷新设备内部的 DNS 缓存了。
常见问题
刷新 DNS 缓存有什么结果?
它会清除缓存中所有之前的 DNS 查询记录。之后访问任何网站都需要再次经历完整的 DNS 解析过程,直到缓存重新填充。
刷新 DNS 缓存安全吗?
是的,刷新缓存并不会对系统造成任何破坏。相反,对于一些重视网络安全的用户而言,主动刷新 DNS 缓存反而可以避免 DNS 缓存投毒攻击的风险。
刷新 DNS 缓存能提高网速吗?
不一定。刷新后首次访问网站会略微减慢速度,因为需要重新解析 DNS。但从用户体验来看,如果之前的 DNS 记录已经过期或被污染,或者解析到错误的线路节点,刷新后确实能解决部分网站访问缓慢的问题,给人以网速提升的体验。
刷新 DNS 缓存需要多长时间?
刷新 DNS 缓存是一个非常快速的操作,通常只需 2 秒钟。
应该多久刷新一次 DNS 缓存?
这没有固定标准,主要取决于每个人的具体需求和上网习惯。一般来说,如果你遇到特定网站访问异常的情况,或者在发生 DNS 缓存投毒攻击后,都应当考虑刷新 DNS 缓存。