如何在 Linux(和 FreeBSD)上刷新 DNS 解析器缓存

Bod*_*ydo 8 domain-name-system linux freebsd cache

我是几个 Linux 和 FreeBSD 服务器的管理员,这是我遇到的一个问题:

服务器运行一个工具,每分钟对整个网络进行大量 DNS 查询。当它进行查询时,结果会在系统范围内缓存。如果 DNS 条目发生更改,则更改会在很晚之后被发现。

刷新 DNS 缓存的方法是什么?我的老板几乎要我把软件转移到有ipconfig /flushdns通话功能的Windows 上。我告诉我的老板我会在周末解决这个问题,周一所有的 Linux 和 FreeBSD 都会刷新缓存。如果我不这样做,他将强迫我制作 Windows 服务器并在其上运行软件。

如何在 Linux 和 FreeBSD 上刷新 DNS 缓存?

小智 10

我不明白你的问题,因为你说了一些废话。

如果您使用的 Linux/Unix 系统不运行 DNS 服务器“named/bind/other”,则系统不会缓存任何 DNS 查询。应用程序(DNS 客户端)每次只查询 DNS 服务器,无需缓存,它们每次都查询 DNS 服务器。如果您使用 DNS 服务器 'named/bind' 并想清除缓存,只需重新启动此服务 (Freebsd:)/etc/rc.d/named restart但这没有意义。

如果 DNS 条目发生更改,则更改会在很晚之后被接收。

这怎么可能?您是否运行 DNS 服务器?如果您运行辅助 DNS 服务器,您只需从主服务器获取该区域的副本,而无需刷新缓存。您可以通过删除区域文件并重新启动 DNS 服务来从主服务器推送服务器更新区域。如果您运行主 DNS 并希望更新区域信息,请更改区域中的序列并重新启动服务:

# /etc/rc.d/named restart (for named)
# rndc (for bind9)
Run Code Online (Sandbox Code Playgroud)

更新区域信息。要检查您是否得到正确的 dns 答案,请使用:

# dig @dns_server example.com
Run Code Online (Sandbox Code Playgroud)

促使我将软件移至具有 ipconfig /flushdns 的 Windows

为了什么?