如何清除 Linux / UNIX DNS 缓存
我在 Linux 下使用拨号上网,经常出现拨号断开连接导致 DNS 问题。如何使用 shell 提示符刷新 UNIX/Linux 发行版下的 DNS 缓存?
在 MS-Windows 下,您可以使用ipconfig 命令刷新 DNS 缓存。但是,Linux 和 UNIX 提供了各种刷新缓存的方法。Linux 可以运行 nscd 或 BIND 或 dnsmasq 作为名称服务缓存守护程序。大型和工作组服务器可以使用 BIND 或 dnsmasq 作为专用缓存服务器来加快查询速度。
如何:刷新 nscd dns 缓存
Nscd 缓存 libc 发出的名称服务请求。如果检索 NSS 数据的成本相当高,nscd 能够显著加快对相同数据的连续访问速度,从而提高整体系统性能。只需重新启动 nscd:
$ sudo /etc/init.d/nscd restart
或
# service nscd restart
或
# service nscd reload
此守护进程为最常见的名称服务请求提供缓存。默认配置文件 /etc/nscd.conf 决定了缓存守护进程的行为。
刷新 dnsmasq dns 缓存
dnsmasq 是一个轻量级 DNS、TFTP 和 DHCP 服务器。它旨在为 LAN 提供耦合的 DNS 和 DHCP 服务。Dnsmasq 接受 DNS 查询,并从小型本地缓存中应答它们,或将它们转发到真实的递归 DNS 服务器。许多廉价路由器也安装了此软件来缓存 DNS 查询。只需重新启动 dnsmasq 服务即可清除 DNS 缓存:
$ sudo /etc/init.d/dnsmasq restart
或
# service dnsmasq restart
刷新缓存 BIND 服务器 DNS 缓存
缓存 BIND 服务器响应主机查询从另一台服务器(区域主服务器)获取信息,然后在本地保存(缓存)数据。您只需重新启动 bind 即可清除其缓存:
# /etc/init.d/named restart
您也可以使用 rndc 命令,如下所示:清除所有缓存:
# rndc restart
或者
# rndc exec
BIND v9.3.0 及更高版本支持使用 rndc flushname 命令清除与特定域名相关的所有记录。在此示例中,清除与 example.com 域相关的所有记录:
# rndc flushname example.com
也可以清除 BIND 视图。例如,可以使用以下命令清除 lan 和 wan 视图:
# rndc flush lan
# rndc flush wan
关于 Mac OS X Unix 用户的说明
以 root 用户身份输入以下命令:
# dscacheutil -flushcache
或者
$ sudo dscacheutil -flushcache
如果您使用的是 OS X 10.5 或更早版本,请尝试以下命令:
lookupd -flushcache
关于 /etc/hosts 文件的说明
/etc/hosts 充当主机名的静态表查找。您需要根据 Unix 类操作系统下的需求删除和/或更新记录:
# vi /etc/hosts
示例输出:
127.0.0.1 localhost 127.0.1.1 wks01.WAG160N wks01 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 10.37.34.2 build 192.168.1.10 nas01 192.168.1.11 nas02 192.168.1.12 nas03 #192.168.2.50 nfs2.example.net.in nfs2 #192.168.2.51 nfs1.example.net.in nfs1 172.168.232.50 nfs1.example.net.in nfs1 172.168.232.51 nfs2.example.net.in nfs2 192.168.1.101 vm01
参见:
相关:Windows Vista / XP使用 ipconfig 命令刷新 DNS 缓存