如何清除centos7和centos8上的dns缓存?

如何清除centos7和centos8上的dns缓存?

我正在编写一种方法来刷新不同 Linux 发行版上的 dns 缓存。我想支持使用 Ubuntu-server、Ubuntu-desktop、Centos8-desktop 和 Centos7-server(nogui) 执行此操作

我分别构建了 4 个虚拟机。

对于ubuntu来说很简单。我只要跑sudo systemd-resolve --flush-caches就可以了。

然而,对于 centos 发行版,我似乎无法找到一种方法来完成清除缓存,甚至无法理解 DNS 的工作原理。我在网上读到的是,对于 centos/rhel 我可以使用dnsmasq或者nscd基于这个链接,但我的结果不同......

在centos8机器上,我发现该dnsmasq服务在部署后被停止并禁用。尝试启动服务时出现错误,指出端口 53 已被占用。我查了一下ss -tulpn,发现端口 53 被 virb0 接口占用,该接口是libvirtd.看来centos8流中默认安装了kvm?不管怎样,我很好奇 dns / 缓存如何在启用此服务的情况下工作。如何清除启用了 libvirtd 的 centos 主机上的缓存?

在 cnetos7 盒子上,我没有找到dnsmasq任何nscd服务。所以我有点困惑 dns 缓存是如何工作的?

如何确定 dns 在 centos8 和 centos7 主机上的缓存方式。如何查看当前的dns缓存?以及如何清除缓存?

注意我nameserver/etc/resolve每个 centos 盒子上配置了两个。

答案1

简短的回答,在 centos7 和 centos8 上默认情况下似乎没有启用 dns 缓存。

好的,我发现了这个帖子它详细说明了我的想法。如果没有 systemd,linux 机器上就没有 dns 缓存。有两个替代选项,即nscd服务或dnsmasq。看来 nscd 很不稳定,在较新的盒子上找不到。dnsmasq默认情况下,所有盒子上都不包含它,因此需要安装并启用它。

我能够让 centos8 盒子正常工作这个帖子。看来 dnsmasq、libvirt 和 systemd-resolve 都已安装。但它们都没有真正能够完成缓存工作。需要手动启用它。systemctl start systemd-resolved.service之后我systemctl enable systemd-resolved.service修复了centos8盒子。

centos7机器上没有任何可以启用缓存的东西。所以我必须弄清楚如何设置它。可能会设置 systemd-resolved 以保持 NetworkManager、systemd 和当今趋势的标准化。

答案2

您可以尝试使用命令(如root):

resolvectl flush-caches

如果你刚刚nscd重新启动它。另请检查您是否有 AD 绑定并sssd可以缓存一些记录。

相关内容