一键搞定:macOS 清除 DNS 缓存的命令与技巧 – wiki大全

非常抱歉,我无法直接创建文件。不过,我已经为您撰写好了完整的文章内容。您可以直接复制下方的 Markdown 文本并将其保存到您自己的文件中,例如 macOS_DNS_Cache_Guide.md


一键搞定:macOS 清除 DNS 缓存的命令与技巧

在使用 Mac 的过程中,你是否遇到过某些网站无法访问、加载的是旧内容,或者网络连接出现异常的情况?这些问题有时并非网络故障,而是由系统中的 DNS 缓存引起的。本文将详细介绍什么是 DNS 缓存,为什么需要清除它,以及如何在你的 macOS 系统上一键完成清除操作。

什么是 DNS 缓存?为什么需要清除?

DNS(Domain Name System,域名系统)是互联网的一项核心服务,它负责将我们容易记忆的网站域名(如 www.google.com)转换成浏览器能够理解的 IP 地址(如 172.217.160.78)。

为了提高访问速度,macOS 会将近期查询过的域名和对应的 IP 地址存储在一个本地的“缓存”中。这样,当你再次访问同一个网站时,系统就无需再次向公共 DNS 服务器发起请求,而是直接从缓存中读取记录,从而加快网站的加载速度。

然而,这个机制有时也会带来问题:

  • 网站更新或迁移: 当网站更换了服务器(即 IP 地址变更)后,你的 Mac 可能仍然从缓存中读取旧的、已失效的 IP 地址,导致网站无法访问。
  • DNS 缓存中毒: 在极少数情况下,缓存可能被恶意软件篡改,将合法的域名指向恶意网站。
  • 网络故障排查: 清除 DNS 缓存是解决“为什么我访问不了这个网站”这类网络连接问题的首要步骤之一。

清除 DNS 缓存,就是强制系统清空这些旧的记录,让它在下次访问时重新获取最新的 IP 地址。

如何在 macOS 上清除 DNS 缓存?

清除 DNS 缓存需要使用“终端 (Terminal)”应用。你可以通过 Command + Space 快捷键打开 Spotlight 搜索,输入 “Terminal” 并回车来启动它。

操作非常简单,只需根据你的 macOS 版本,复制并粘贴相应的命令即可。

适用于现代 macOS (Sonoma, Ventura, Monterey, Big Sur)

对于目前主流的 macOS 版本,请使用以下命令。这条命令会先刷新 DNS 缓存,然后重置系统的 DNS 响应程序,效果最彻底。

bash
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

适用于较旧的 macOS 版本

如果你的系统版本较旧,请从下面选择对应的命令:

  • macOS Catalina (10.15) / Mojave (10.14) / High Sierra (10.13) / Sierra (10.12)
    bash
    sudo killall -HUP mDNSResponder

  • OS X El Capitan (10.11)
    bash
    sudo killall -HUP mDNSResponder

  • OS X Yosemite (10.10)
    bash
    sudo discoveryutil udnsflushcaches

  • OS X Mavericks (10.9) / Mountain Lion (10.8) / Lion (10.7)
    bash
    sudo killall -HUP mDNSResponder

  • Mac OS X Snow Leopard (10.6)
    bash
    sudo dscacheutil -flushcache

  • Mac OS X Leopard (10.5)
    bash
    sudo lookupd -flushcache

如何执行命令:

  1. 打开“终端”应用。
  2. 复制适合你系统版本的命令并粘贴到终端窗口中。
  3. 按下回车键。
  4. 系统会提示你输入管理员密码。注意: 输入密码时,屏幕上不会显示任何字符,这是正常的安全设置。输入完成后直接按回车即可。
  5. 命令执行成功后,通常不会有任何提示信息,这代表缓存已成功清除。

技巧与提示

1. 如何验证缓存是否已清除?

虽然没有直接的命令可以“查看”缓存内容,但你可以通过 ping 命令来验证。

  • 清除前: 在终端执行 ping example.com (一个你之前访问过的域名)。
  • 清除后: 再次执行 ping example.com。如果 DNS 缓存已清除,你可能会观察到第二次 ping 的响应时间比第一次稍长,因为它需要重新进行 DNS 查询。

2. 创建一个命令别名 (Alias)

如果你需要频繁执行此操作,每次都输入长长的命令会很麻烦。你可以为它创建一个更短的别名,例如 flushdns

  1. 打开终端。
  2. 编辑你的 Shell 配置文件。如果你使用的是默认的 Zsh,则输入 nano ~/.zshrc;如果使用的是 Bash,则输入 nano ~/.bash_profile
  3. 在文件末尾添加以下行:
    bash
    alias flushdns="sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder"
  4. Ctrl + X,然后按 Y 和回车键保存文件。
  5. 执行 source ~/.zshrc (或 source ~/.bash_profile) 使配置生效。

之后,你只需在终端中输入 flushdns 并回车,就可以快速清除 DNS 缓存了。

3. 别忘了浏览器缓存

除了操作系统,Chrome、Safari、Firefox 等浏览器也有自己独立的 DNS 缓存。如果在清除系统缓存后问题依旧,你可能还需要清除浏览器的缓存。通常可以在浏览器的“设置” -> “隐私与安全” -> “清除浏览数据”中找到相关选项。

总结

清除 DNS 缓存是 Mac 用户解决网络连接问题的一个简单而强大的工具。通过本文提供的命令和技巧,你可以轻松应对因 DNS 问题导致的各种网络访问异常,让你的 Mac 始终保持顺畅的网络连接。

滚动至顶部