如何强制更新dns缓存

如何强制更新dns缓存

我正在使用动态 dns 服务,通过命令行更新该服务。现在我的问题是,更新IP后,Linux在尝试访问dyndns-Adress时仍然使用旧IP。

当我在动态 DNS 地址上使用 ping 或 Nmap 时,如何强制 Debian 请求更新的 DNS 信息?

答案1

这取决于您本地 DNS 解析器的工作方式。在 Debian 11 中,您可以尝试(始终以 root 身份):
/lib/systemd/systemd-resolved --flush-caches

resolvectl flush-caches也应该这样做。另一种使 systemd 的 NS 缓存失效的方法是:
pkill -USR2 systemd-resolved

如果您使用名称服务缓存守护程序 (nscd),则必须使用以下命令:
nscd --invalidate=hosts

答案2

这就是XY问题。

您在这里提出的问题(如何强制客户端重新获取 DNS 记录)并不能解决问题(确保客户端拥有当前的 DNS 记录),除非您使用权威的动态 DNS 服务器作为您的 DNS 提供商;如果您刷新本地计算机上的缓存,而不会刷新您可能正在使用的其他 DNS 服务器上的缓存。

如果您的本地计算机是唯一需要 DNS 记录来反映即时更改的主机,并且您无法控制 TTL,为什么不使用主机文件(或覆盖,如果您的解析器支持它)。

如果您需要更新所有客户端的 DNS 记录,并且无法更改 TTL,则 DNS 服务不适合您的用途。使用不同的或设置您自己的。

相关内容