我正在尝试使用 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
没有自己的缓存,除非您在本地运行一些缓存守护程序(如nscd
或dnsmasq
等)。如果您这样做,您只需要重新启动这些守护程序来清除本地缓存,您可以使用它+trace
来准确地查看结果来自哪里。
答案2
如果您nameserver 127.0.0.1
在/etc/hosts
文件中看到,请用另一个名称服务器(例如名称服务器 8.8.4.4)替换该行,然后卸载软件包 resolvconf(对于 Ubuntu:)apt-get remove resolvconf
。这对我有用。