Linux修改host没有生效

起因

由于测试需要在开发环境将域名绑定至内网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.
    原文作者:whisshe
    原文地址: https://www.jianshu.com/p/8e7be644e374
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞