如何刷新Linux/UNIX DNS缓存

时间:2020-01-09 10:43:22  来源:igfitidea点击:

如何使用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服务器。
它旨在向局域网提供耦合的DNS和DHCP服务。

Dnsmasq接受DNS查询,并从小型本地缓存中答复它们,或者将其转发到真实的递归DNS服务器。
该软件还安装了许多廉价路由器来缓存dns查询。
只需重新启动dnsmasq服务即可清除dns缓存:

$ sudo /etc/init.d/dnsmasq restart

或者

# service dnsmasq restart

刷新缓存BIND服务器DNS缓存

缓存的BIND服务器响应主机查询从其他服务器(区域主服务器)获取信息,然后将数据本地保存(缓存)。
您所需要做的就是重新启动绑定以清除其缓存:

# /etc/init.d/named restart

您还可以使用rndc命令,如下所示清除所有缓存:

# rndc restart

或者

# rndc exec

BIND v9.3.0及更高版本将支持使用rndc flushname命令清除追加到特定域名的所有记录。
在此示例中,刷新所有关联到theitroad.local域的记录:

# rndc flushname theitroad.local

也可以清除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.1.50	nfs2.theitroad.com nfs2 
#192.168.1.51	nfs1.theitroad.com nfs1
172.168.232.50  nfs1.theitroad.com nfs1
172.168.232.51  nfs2.theitroad.com nfs2
192.168.1.101	vm01