G2EX

科学利用HOSTS文件

hosts文件是一个用于储存计算机网络中各节点信息的计算机文件。这个文件负责将主机名映射到相应的IP地址。hosts文件通常用于补充或取代网络中DNS的功能。和DNS不同的是,计算机的用户可以直接对hosts文件进行控制。——维基百科

我们在浏览器中输入域名访问网站时,DNS(Domain Name System)会把域名“解释”为网站的IP地址,这个解析的过程如下图所示:

DNS解析过程

在图中可以看到,DNS解析时首先会使用本地DNS缓存,这时会查询本地hosts文件。如果本地没有找到DNS记录,则要去DNS服务器去查询。

如果我们查询的DNS服务器返回给我们的IP地址是其恶意构造出来的,把域名指向了不正确的IP地址,这就是DNS缓存污染(又称为DNS缓存投毒)。

对于DNS缓存污染,我们可以在计算机中指定可信的DNS服务器,比如Google的8.8.8.8和OpenerDNS的42.120.21.30,不过这两个在大陆都已经中枪牺牲了,曾经他们可以解析出Google、Drobox、Twitter等IP。
对付DNS缓存污染的另外一个办法就是修改本地hosts,在hosts中加入被污染的域名和可用的IP地址,因为在上文得知,本地hosts先于DNS服务器解析。

hosts文件中每一行作为一条记录,以#开头的行是注释行。hosts记录的格式为:IP地址 域名,例如127.0.0.1 localhost的意思是把localhost的域名解析为127.0.0.1的IP地址。

XP/7/8/8.1的hosts位于系统盘的Windows\System32\drivers\etc目录下,Mac/Linux/Android的hosts位于/etc/目录下。Windows XP/7中修改方法见《Windows中修改hosts的方法》。

在哪里可以获取现成的hosts文件?

  1. huhamhire-hosts——可以去广告、屏蔽恶意网站、科学上网
  2. smarthosts——主要用于科学上网
  3. projecth.us-hosts

PS:
最近Dropbox又中枪了,在之后的文章中会介绍如何手动获取Dropbox可用hosts中的IP。

参考内容

  1. http://msdn.microsoft.com/zh-cn/library/cc775637(v=ws.10).aspx
  2. http://zh.wikipedia.org/wiki/Hosts文件
  3. http://zh.wikipedia.org/wiki/域名劫持