如何使用 discoveryutil 在 OS X Yosemite 中刷新 DNS 缓存
目录:
- 清除 OS X Yosemite 10.10.4 和 OS X 10.10.5 中的 DNS 缓存
- 在OS X Yosemite(10.10、10.10.1、10.10.2、10.10.3)中清除DNS缓存
一些 Mac 用户可能会遇到这样的情况,他们需要刷新 OS X 中的 DNS 缓存以便名称服务器正确解析,或者某些 DNS 地址更改会被他们的个人计算机注意到。这与系统管理员、网络管理员和 Web 开发人员尤其相关,但在某些情况下,其他用户也可能需要转储和重置 DNS 缓存,例如用户修改了 /etc/hosts 文件并且他们需要更改无需重启 Mac 即可生效。
长期使用 Mac 的用户会知道,重置 DNS 缓存在几乎每个版本的 Mac OS X 中都发生了变化,OS X Yosemite 也不例外,可能是由于发现替换了 mDNSResponder,然后切换回 mDNSResponder再次。无论如何,在 Yosemite 中刷新 DNS 缓存仍然是一个终端命令,但它会根据您使用的操作系统的确切版本而略有不同,它实际上允许您清除多播 DNS 或单播 DNS,或同时清除两者。如果您尝试重置 Mac 上的所有 DNS 缓存,您可能需要清除这两个缓存。
清除 OS X Yosemite 10.10.4 和 OS X 10.10.5 中的 DNS 缓存
从 OS X 10.10.4 向前移动到 10.10.5,包括 10.11,Apple 已经放弃了 discoveryd 并替换了它(或者更确切地说,恢复到)mDNSResponder。因此,要清除 OS X Yosemite 10.10.4 和 10.11 El Capitan 中的 DNS 缓存,并且可能是更高版本,命令字符串如下:
sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder;说缓存已刷新
该命令会刷新 OS X 10.10.4+ 的所有 DNS 缓存。
Longtime Mac 用户可能还记得,命令字符串基本上是 Yosemite 之前版本中有效的命令字符串。话虽如此,10.10.4 之前的早期版本的 OS X Yosemite 将使用下面讨论的不同命令字符串。
在OS X Yosemite(10.10、10.10.1、10.10.2、10.10.3)中清除DNS缓存
您需要使用终端来重置缓存,您可以在 /Applications/Utilities/ 中找到终端应用程序或使用 Spotlight 启动它。要在最新版本的 OS X 中完全清除所有 DNS 缓存,请使用两个不同的命令同时针对 MDNS(多播 DNS)和 UDNS(单播 DNS)。
清除MDNS缓存
sudo discoveryutil mdnsflushcache
按要求返回并输入管理员密码。
清除UDNS缓存
sudo discoveryutil udnsflushcaches
再次,按回车键并在要求时输入管理员密码。请注意,后一个命令的缓存是复数,这是一个微妙但重要的语法差异。
刷新并重置OS X Yosemite中的所有DNS缓存
你也可以把上面两个命令串起来,下面还会口头通知缓存被清空:
sudo discoveryutil mdnsflushcache;sudo discoveryutil udnsflushcaches;说刷新
的确,MDNS 和 UDNS 缓存是不同的,但我发现要在 OS X Yosemite 中实际清除功能性 DNS 缓存,这两个命令都是必需的。完全有可能你只需要根据自己的需要清除一个或另一个。
对于那些想知道的人,OS X Yosemite 已经取消了 mDNSResponder,因此无需像以前版本的 Mac OS X 那样终止 mDNSResponder 进程来刷新 DNS 缓存。
在OS X Yosemite中检查DNS缓存详细信息
如果您正在更改或将要更改DNS,并且想查看有关当前缓存内容的一些详细信息,您可以使用以下命令:
获取UDNS缓存统计:
sudo discoveryutil udnscachestats
您还可以通过以下方式检索有关多播DNS缓存的详细信息:
sudo discoveryutil mdnscachestats
这两个都将提供有关缓存的DNS条目数量的详细信息,并提供应如下所示的报告:
UDNS缓存统计:缓存962 of 1750
如果您在运行flushcache 变体之前和之后运行这些命令,您会发现它们应该被重置为0 个条目缓存,如下所示:
MDNS 缓存统计:lo0:缓存 0 of 2000
你怎么知道它是否改变了?
刷新缓存后,如果您想确定名称服务器或IP 是否实际更改,您可以使用带有URL 的'dig' 命令,如下所示:
dig osxdaily.com
dig 类似于nslookup,除了它有更好的输出和更多的详细信息,包括查询时间、用于访问域的设置DNS 服务器和时间戳,所有这些都可以在解决名称服务器问题时很有价值。顺便说一句,如果这个查询时间显示缓慢,你应该使用像namebench这样的工具为你找到一个更快的DNS服务器,通常是Google DNS或OpenDNS。
知道最新版本OS X 的另一个DNS 缓存技巧吗?让我们在评论中知道。