我正在寻找一种方法来刷新 CentOS 6 上的本地 DNS 缓存。
系统没有运行任何 DNS 服务器或任何东西,我希望让每个 DNS 查询都发送到配置的名称服务器,即使是重复的查询。
我在网上找到的大部分内容都告诉我要做什么service nscd restart
,重新加载或做什么nscd -i hosts
。然而,似乎没有人刷新缓存。
所以我想知道是否有人知道我该如何做到这一点。我需要翻转内核中的某种开关吗?任何一种解决办法都可以。
答案1
它不是缓存 DNS 请求的本地机器,而是您在/etc/resolv.conf
缓存中使用的 DNS 解析器。
为了防止获得这些缓存的查询回复:
更换解析器。
$ dig @<resolve-ip> www.google.com
如果可以访问 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