如何在 Ubuntu 上清除 dig 的 DNS 缓存?

如何在 Ubuntu 上清除 dig 的 DNS 缓存?

我正在尝试使用 dig 来验证一些 DNS 信息,但我只看到旧的结果。据我所知,Ubuntu 默认不会在操作系统级别缓存 DNS。如果是这样,那么 dig 命令有自己的 DNS 缓存。据推测,安装通用 DNS 缓存nscd不会阻止 dig 使用自己的缓存,所以我的问题是如何清除 dig 命令使用的缓存?

我意识到 DNS 信息可能不会立即传播,但如果我dig @8.8.8.8例如,我会得到更新的结果。但是,在同一域上多次正常使用 dig 会发现除第一个结果之外的所有结果都花费 0ms,因此显然某种程度上存在缓存。

dig superuser.com编辑:这是第一次尝试的总结:

;; Query time: 233 msec
;; SERVER: 208.109.188.1#53(208.109.188.1)
;; WHEN: Tue Apr 24 10:09:19 2012
;; MSG SIZE  rcvd: 113

第二次尝试:

;; Query time: 0 msec
;; SERVER: 208.109.188.1#53(208.109.188.1)
;; WHEN: Tue Apr 24 10:09:58 2012
;; MSG SIZE  rcvd: 113

答案1

dig没有自己的缓存,除非您在本地运行一些缓存守护程序(如nscddnsmasq等)。如果您这样做,您只需要重新启动这些守护程序来清除本地缓存,您可以使用它+trace来准确地查看结果来自哪里。

答案2

如果您nameserver 127.0.0.1/etc/hosts文件中看到,请用另一个名称服务器(例如名称服务器 8.8.4.4)替换该行,然后卸载软件包 resolvconf(对于 Ubuntu:)apt-get remove resolvconf。这对我有用。

相关内容