如何查看OSX中的DNS缓存?

How to view DNS cache in OSX?

要在 OSX 10.11.6 中列出 DNS 缓存的条目,我尝试了 dscacheutil -statistics 但没有成功。

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

如何只打印 DNS 缓存中的内容而不刷新它?

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

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

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

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

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

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

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

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

要返回使用 private 只需 运行 以下命令。

sudo log config --mode "private_data:off"

干杯!