如何在 CentOS 中刷新本地 DNS 缓存

如何在 CentOS 中刷新本地 DNS 缓存

我正在寻找一种方法来刷新 CentOS 6 上的本地 DNS 缓存。

系统没有运行任何 DNS 服务器或任何东西,我希望让每个 DNS 查询都发送到配置的名称服务器,即使是重复的查询。

我在网上找到的大部分内容都告诉我要做什么service nscd restart,重新加载或做什么nscd -i hosts。然而,似乎没有人刷新缓存。

所以我想知道是否有人知道我该如何做到这一点。我需要翻转内核中的某种开关吗?任何一种解决办法都可以。

答案1

它不是缓存 DNS 请求的本地机器,而是您在/etc/resolv.conf缓存中使用的 DNS 解析器。

为了防止获得这些缓存的查询回复:

  1. 更换解析器。

    $ dig @<resolve-ip> www.google.com

  2. 如果可以访问 DNS 服务器,请刷新解析器上的 DNS 缓存。

    $ sudo /etc/init.d/bind restart

答案2

即使刷新或刷新客户端计算机上的 DNS 缓存后,如果它不起作用,请查看您的服务器或客户端计算机是否绑定到任何 NIS 服务器(如果是),然后将“hosts: files nis dns”更改为“hosts: files dns nis” /etc/nsswitch.conf 文件中的条目,还需要更改 NIS 主服务器主机列表中的 IP 地址。

答案3

我几乎可以肯定这不是系统缓存响应 - 该部分(系统缓存)仅由nscd守护进程处理。重新启动(或完全停止)该守护程序会重置或消除操作系统对名称服务请求响应的缓存。

我将提供两种可能性,尽管您在端口 53 上设置的自定义侦听器使情况变得相当混乱:

  • A) 您的系统正在向上游发出查询,但直接上游名称解析器正在根据其设置或记录的 TTL 缓存响应。
  • B) 您的自定义侦听器在内部缓存响应,并在缓存时间到期之前再次询问时将该响应直接返回给系统。

答案4

对于任何使用 CentOS 7 的人:

systemctl restart NetworkManager

相关内容