如何读取本地DNS缓存内容?


31

我知道在Windows上我可以发布,ipconfig /displaydns并且可以看到本地DNS的缓存内容。

如何在Linux中列出DNS的缓存内容?

我想获得尽可能多的跨发行版解决方案。


4
据我所知,除非系统在客户端上仅使用本地缓存dns服务,否则在Linux(解析器)中的客户端上没有维护DNS缓存。
Nikhil Mulley,2012年

您始终拥有/etc/hosts可能包含由DNS黑名单服务生成的条目的文件。

Answers:


15

在此之前systemd,几乎没有操作系统级DNS缓存

此前systemd有在Linux(和可能大多数Unix)没有操作系统级别的DNS缓存,除非nscddnsmasq安装和运行。

即使这样,nscd至少在Debian中也默认禁用了DNS缓存功能,这仅仅是因为它已损坏

至于默认情况下dnsmasq缓存似乎发生在RAM中


2
如今,许多系统dnsmasq默认情况下都在使用,因此unix.stackexchange.com/q/162973/79839可能会有用。
小鸡

1
这些天,用什么systemd将有可能systemd-resolved在默认情况下它不会根据TTL缓存DNS结果运行
德鲁

9

nscd是名称服务缓存守护程序。这是Linux,Solaris和其他服务器用来缓存名称服务查找的实用程序。在这种情况下,名称服务是一个通用术语,不严格限于主机解析,还包括用户,组等。

虽然您可以使用显示统计信息,但我不知道查看缓存实际内容的方法/usr/sbin/nscd -g

这至少可以告诉您缓存的效率如何,尽管不完全是解析的结果。

如果您使用的是备用缓存工具,例如DNSMASQ,则可能还有其他选择。


3

如果使用nscd,则可以通过显示二进制缓存文件中的ASCII字符串来查看内容(可能还有一些其他垃圾)。在Debian / Ubuntu中,该文件/var/cache/nscd/hosts用于主机/ DNS缓存,因此您可以运行strings /var/cache/nscd/hosts以查看缓存中的主机。

请注意,这完全是骇客,因为似乎没有nscd不解码二进制格式就无法检查缓存的适当方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.