转自:http://www.cnblogs.com/joshua317/articles/4180191.html

HOSTS对于需要设置的人应该都知道为何用,主要就是在本地建立一个域名--ip映射,而不需要再去找上层的DNS服务器去进行解析。直接就能建立链接操作,进行相关信息的发送。而某些情况下我们可能设置了HOSTS后不能生效,这里总结一下工作中遇到问题和解决的方法:

1、双系统的机器:

设置hosts后不生效的原因主要是:设置的hosts不是当前操作系统的hosts,比如当前系统装在D盘,而修改hosts修改在了C盘的。查看当前系统安装在哪个盘的最简单方法就是开一个cmd命令行,其初始的提示符路径的磁盘就是当前系统盘:如C:\Documents and Settings\sina>, 那么C盘就是当前系统盘。或者用set命令查看系统的环境变量。

 

2、由于本地DNS的缓冲:

因为hosts是一个本地的dns解析服务,所以在本地有一个专门的dns client服务在后台运行,而这个服务会有一个缓存机制,所以有时可能不能及时生效。这是可以通过刷新dns缓存或手动重启dns client服务来解决。刷新命令为:ipconfig /flushdns。  手动重启dns client 服务器的方法为:cmd--》services.msc--》找到dns cilent 服务-》停止--》重启

 

3、由于文本格式原因导致格式不正确:

hosts文件中是有一定格式的,即单行一个dns的ip地址映射,可以一个ip对应多个域名,每行的ip和域名之间至少有一个空格或TAB键。通常我们直接输入都是正确的,而当我们复制粘贴进来的文本时,有时会不生效。这就是因为换行符的问题导致的,因为你从其它终端复制过来的内容换行格式可能与windows的换行符不一样,那这样就不会生效了。

解决办法:自己手动填写,或通过文本编辑器进行自动转换。如:editplus

 

 

1. hosts文件必须是ascii编码方式, 如果保存为unicode格式将不会被正确读取,所以,打开host,选择“另存为”确认保存格式是否是ascii。

2. 打开了程序后修改hosts,大部分程序不会实时更新hosts,重启程序即可更新,例如启动浏览器,系统将hosts拷贝了一份到内存中,浏览器使用内存中的hosts,这时候不会读取修改过的硬盘上的hosts,这种情况我们只需关闭浏览器使系统释放内存中的hosts,然后再重启浏览器重新读取即可。

3. hosts文件没有扩展名,hosts文件本身是没有文件扩展名的,如果不小心被加上了如txt等的文件扩展名,就会失效。

4. 确认hosts设置:打开本地连接的 Internet(TCP/IP)协议的属性页,点击常规选项卡中的高级按钮,选择WINS选项卡,勾选“启用 LMHOSTS 查询”,接着按下“导入 LMHOSTS”按钮,导入C:/WINDOWS/system32/drivers/etc下的hosts文件,hosts文件生效。

5. 使用ipconfig /flushdns命令刷新dns缓存。