起因
由于测试需要在开发环境将域名绑定至内网IP上,这时候解析是正常的,按照/etc/hosts的配置解析到了对应的IP。测试完成之后,将该配置删除,发现域名依然解析到刚才配置的IP上去了。于是上网搜索了半天,终于找到了原因。
原因
原来为了提高DNS 解析的记录,很多操作系统都会提供缓存DNS 记录的功能,但是,这可能会为测试DNS 服务或域名设定带来麻烦。为了测试出准确的结果,我们需要强制刷新本地 DNS 缓存记录。
常见的DNS缓存服务
在常见的Linux发行版中主要使用的DNS缓存服务如下:
nscd DNS cache
dnsmasq dns cache
BIND server dns cache
nscd DNS cache
nscd 是 name service cache daemon的缩写,Nscd是一个守护进程,提供最普通的域名请求的缓存服务。
默认的配置文件位于/etc/nscd.conf。
- 可以使用以下命令来清除nscd的DNS缓存
1. $ /etc/init.d/nscd restart
2. $ service nscd restart
3. $ service nscd reload
4. $ nscd -i hosts
dnsmasq dns cache
Dnsmasq是一个轻量的,小巧的,易于配置的DNS转发器和DHCP服务器。 它旨在向小型网络提供DNS和可选的DHCP,适用于资源受限的路由器和防火墙。 它可以服务于不在全局DNS中的本地计算机的名称。 它专为个人计算机使用和小型网络而设计,而不是大型网络。
- 可以使用以下命令来清除dnsmasq的DNS缓存
1. $ /etc/init.d/dnsmasq restart
BIND server dns cache
BIND是Berkeley Internet Name Domain 的缩写,是使用最为广泛的域名服务软件。BIND是实现互联网域名系统(DNS)协议的开源软件。 BIND是迄今为止在互联网上使用最广泛的DNS软件,提供强大而稳定的平台。
- 可以使用以下命令来清除BIND的DNS缓存
1. $ /etc/init.d/named restart
Stopping named: . [ OK ]
Starting named: [ OK ]
2. $ service named restart
Stopping named: . [ OK ]
Starting named: [ OK ]
windows可以使用如下命令刷新DNS缓存
# 在cmd里面输入
1. ipconfig /flushdns
2. Windows IP Configuration
3. Successfully flushed the DNS Resolver Cache.