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

fy_*_*rld 22 cache dns proxy centos

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

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

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

所以我想知道是否有人对我如何做到这一点有想法。我需要翻转内核中的某种开关吗?任何类型的工作都很好。

pra*_*tri 13

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

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

  1. 更换解析器。

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

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

    $ sudo /etc/init.d/bind restart

  • “bash: /etc/init.d/bind: No such file or directory” 并且 OP 的方法得到“无法重新启动 nscd.service:单元 nscd.service 加载失败:没有这样的文件或目录。” 我想这些已经被移动/改变了。为什么他们不能只保留有效的东西,或者至少保持别名?糟糕到必须成为操作系统专家才能简单地使用 Linux-box。更糟糕的是,您必须在每次发布时重新学习操作系统。 (4认同)

Joh*_*ohn 3

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

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

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