系统 hosts 文件的作用&使用
最近更新时间:2017-05-11 14:13:04
hosts文件对于普通互联网用户可能非常陌生,但是对于开发者而言或多或少总能遇见,特别是IT&运维人员更是常年接触。那么它到底是什么呢?对上网有什么作用呢?
一个简略的上网过程:
输入域名 ——> DNS(Domain Name Server)服务器解析 ——> 找到对应的IP ——> 返回请求的内容
其实在这个简略的过程中还有一些细微且重要的步骤,就与系统hosts文件有关。
在我们输入域名到电脑去请求资源时,系统会优先去hosts文件里面溜一圈,去看看我们输入的这个域名是否在此文件中有对应关系。
如果存在,那么你输入的域名将直接映射到此IP上,然后去请求此IP访问你所想得到的资源,且不会再经过漫长的DNS服务器解析啦(有时DNS服务解析可能经过几层)。
试想如果不存在映射关系,那我们的域名就会发送到DNS服务器去解析对应的IP啦。在这个过程中其实是非常糟糕的体验,有些还会出现一些小问题或者解析不正确 | 超时等等(GFW还利用了DNS做了很多文章)。
总结: hosts文件请求级别比DNS服务器要高,可以利用它直接域名绑定IP。
hosts是一个纯文本文件,使用基本的编辑器都可以编辑,例如记事本,笔记本等。我们可以先看一下windows下面的hosts文件初始内容是什么?
hosts文件
注意可以看到,前面极端话就是微软介绍他的hosts文件是干什么用的。那么 # 号就是注释了。
有两个列子,可以看到书写规范 IP(102.54.94.97) 主机名(rhino.acme.com) 别名(source server)
当然,我们一般可以不用写别名。在书写的过程中,一定要注意,IP 与 域名之间要有空格,才能正确的映射。
指定访问
如果一个服务有多个服务器IP的话,那么可以把该网址指定到访问某台服务器上。
153.35.175.112 www.163.com
127.0.0.1www.ly.com
ping 同程的网址结果
因为我把同程旅游的网址绑定到我本地了,所以访问的其实就是我本地,这样就永远访问不了亲爱的同程网啦!
加速域名解析
加速域名解析,那肯定是我输入一个网址,立刻就能够返回对应的IP地址,然后返回请求内容,这样的话就是不经过DNS服务器,这样就会很快速的得到你想到得地方,就好比,你得目的地就在你的家门口一样简单。
绕过DNS污染,我们都知道国内如果不搭“梯子”是不可以浏览 Facebook,twitter,youtube等。这其中有一部分原因就是因为DNS服务器被污染了,通过一些技术手段让服务器记录域名对应解析指向一个错误的IP地址,这样你就永远找不到对的服务器了,以前的时候,如果我们知道一些屏蔽的网站的IP地址,就可以通过hosts文件直接访问了,你的DNS服务器不管再怎么污染或者说劫持都不管我的事啦,不叼你,但是现在GFW升级了啊。这种方法对于一些热门屏蔽网站也不见得有效了。
还有一种就是劫持了,我们一般普通网民的DNS服务器ISP(Internet Service Provider)提供商都是电信,联通(网通),移动(铁通)这三家提供,那么有趣的一个现象就是,我有时输入一个网址,得到的却是说到不到网站,然后跳出一个114网页,里面一大堆的垃圾广告(谋取钱财),恶心的要死,关键是有些网站明明能够访问,却被半道劫持了,给我们返回一个我们所不期望的IP,以前有段时间如果你输入www.google.com,神奇的是它会给你返回www.baidu.com的网址。所有hosts文件对于访问一些特定的网站非常有用。
屏蔽不健康网站
嘿嘿,这个就是hosts文件使用的一点小技巧了,前面有张图片显示我把www.ly.com(它可是非常健康的网站)绑定到127.0.0.1这样我就永远不用访问到了,那如果我把某些不健康的域名,或者垃圾域名绑定到本地,这样下次访问就会自动屏蔽这些网页了。但是有些我们也要注意一下,我们的hosts文件也会被恶意病毒所利用,把你的很多域名绑定到它的IP地址上,所以hosts文件的读写权限一般也是病毒的常驻之地。当然我们也可以利用一些杀毒软件隔离一些恶意网站和控制hosts的读写权限,这些都是利用了hosts文件的特殊性!
方便局域网用户
有时局域网中因为机群比较少,所以没有单独搭建DNS服务器,那么这个时候想到相互访问需要输入一大串IP地址就显得非常不方便,那么就可以通过维护hosts文件来维护你想要到的地方。既方便又快捷。但是当机器多了,维护成本也将变得较高。
虽然hosts文件有这么多好处,但是如果当绑定的量较大的时候手动维护成本就会非常的高了,而且要随时注意你所绑定的IP是否能够随时访问,因为,一旦不能访问,你就需要手动去修改它,所以市面上有一些软件可以自动管理hosts文件的,有时我们还要观察一下我们的hosts文件是否正常。如果发现你的权限不能写入或者发现有大量你不清楚情况的网址出现在了上面,那么你应该考虑考虑杀杀毒了。
说了这么多,那么我们的hosts文件到底在什么地方呢?怎么修改呢?怎么生效呢?
windows :
位置: C:\windows\system32\drivers\etc(在系统盘下)
修改:一层一层进去用记事本打开,直接可以修改,保存,保存的时候有可能提醒你 unable save,这是就要注意你的系统当前用户是否具有此文件的写入权限,如果没有百度方法切换用户,如果有那么就看是否在杀毒软件那里启用了hosts文件保护,如果也没有,那就要注意是否有病毒把权限修改了。
生效:有些人会遇到,我绑定成功了,保存也OK,为什么没有达到我预期的效果的,因为window系统为了加快访问,对你经常访问的网址是做了缓存的,所以我们这里要清一下DNS的服务本地缓存。步骤是先关掉浏览器(在打开浏览器那一刻,一般浏览器就读取了你当前本地缓存)。然后点开运行 输入 ipconfig /flushdns (注意有两词之间有一个空格)。回车一下,下次再打开游览器就会得到你想要的结果啦。或者你打开docs ping 一下你绑定的网址,也会看到变化
Linux:
位置: /etc/hosts
修改: vim /etc/hosts
生效: 一般立即生效,如果没有生效,重启一下即ok。