我知道在 Windows 上我可以发出ipconfig /displaydns并看到本地 DNS 的缓存内容。
如何在 Linux 中列出 DNS 的缓存内容?
我想获得尽可能多的跨发行版解决方案。
Ser*_*ndt 22
systemd,几乎没有操作系统级别的 DNS 缓存在此之前,systemdLinux(可能还有大多数 Unix)上没有操作系统级别的 DNS 缓存,除非nscd或dnsmasq已安装并运行。
即便如此,nscd至少在 Debian 中默认情况下禁用了的 DNS 缓存功能,仅仅是因为它已损坏。
至于dnsmasq,默认情况下缓存似乎发生在 RAM 中。
nscd是名称服务缓存守护进程。这是 Linux、Solaris 和其他用于缓存名称服务查找的实用程序。本例中的名称服务是一个通用术语,不仅限于主机解析,还包括用户、组等。
我不知道有什么方法可以查看缓存的实际内容,但您可以使用/usr/sbin/nscd -g.
这至少可以向您展示缓存的效率,尽管不完全是它正在解决的问题。
如果您使用备用缓存工具(如 DNSMASQ),您可能还有其他选择。
如果您正在使用nscd,您可以通过显示二进制缓存文件中的 ASCII 字符串来查看内容(可能还有一些其他垃圾)。在 Debian/Ubuntu 中,该文件/var/cache/nscd/hosts用于主机/DNS 缓存,因此您可以运行strings /var/cache/nscd/hosts以查看缓存中的主机。
请注意,这完全是一种黑客攻击,因为在nscd不解码二进制格式的情况下似乎没有正确的方法来检查缓存。