如何在OSX中查看DNS缓存?

34

想要在 OSX 10.11.6 中列出 DNS 缓存的条目,我尝试了 dscacheutil -statistics 命令,但是它没有起作用。

$ sudo dscacheutil -statistics
Unable to get details from the cache node

如何在不清空DNS缓存的情况下仅打印其中所存储的内容?

2个回答

23

mDNSResponder (多播 DNS 守护进程)可以通过 SIGINFO 信号将内部状态的快照摘要转储到/var/log/system.log中,包括缓存详细信息。为此,请执行以下操作:

在一个终端中打开系统日志:

tail -f /private/var/log/system.log

从另一个终端发送 SIGINFO 信号给 mDNSResponder:

sudo killall -INFO mDNSResponder

然后检查第一个终端中的日志,您将能够看到缓存转储:

mDNSResponder[98]: ------------ Cache -------------
mDNSResponder[98]: Slt Q     TTL if     U Type rdlen
mDNSResponder[98]:  52      1827 -U-      CNAME   17 www.sublimetext.com. CNAME sublimetext.com.
...
...
mDNSResponder[98]: Cache currently contains 154 entities; 3 referenced by active questions

(更多信息请查看:man mDNSResponder


12
我在Mac OS X Sierra 10.12.2上尝试了这个操作,但似乎没有任何效果! - Olivier
16
要在Sierra系统中检查sudo killall -INFO mDNSResponder的日志,请打开控制台应用程序,选择左侧边栏上的设备,然后应用搜索过滤器_mdnsresponder_,可以在那里看到DNS缓存日志。 - Praseetha KR
7
在较新的 macOS 版本中,日志已移至新的日志系统。您可以使用控制台应用程序(如 @PraseethaKR 所提到的)查看它们,或者您可以使用以下命令从您的 shell 中获取它们:log stream --predicate 'process == "mDNSResponder"' --info - kjagiello
7
在我的MacOS 10.14系统上,它显示了一堆私人信息,而不是实际的信息。 - Neal
1
我正在尝试在 macOS Big Sur 上运行。这个计划不会起作用。 - Bob Du
显示剩余5条评论

21

正如@PrasseethaKR和@kjagiello所指出的,在 High Sierra 中,mDNSResponder已从syslog移动到log。此外,您的DNS查找消息现在被视为私有,并且默认情况下将在控制台和log stream中显示为<private>

要在High Sierra上查看您的DNS查找,请打开终端并运行:

sudo log config --mode "private_data:on"
log stream --predicate 'process == "mDNSResponder"' --info

要恢复使用私有模式,请运行以下命令。

sudo log config --mode "private_data:off"

干杯!


3
不再适用于Big Sur。 - James Hudson
15
日志:无效模式“private_data:on”。 - theonlygusti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接