写在前面
之前配置hosts文件的时候,只知道那么做就可以了,但并不知道其中的原因。今天我就来研究一下。
一、什么是hosts文件
hosts文件是一个没有扩展名的系统文件,可以用记事本等工具打开。它的作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再去本地的dns缓存、自己家的路由器、上级的网络运营商(像联通,电信,移动)DNS域名解析服务器中寻找对应的IP地址,进行IP地址的解析。
需要注意的一点是,hosts文件配置的映射是静态的,如果网络上的计算机更改了需要及时手动更新hosts文件中的IP地址,否则将不能访问。
二、hosts文件的作用
2.1.加快域名解析
当我们要访问某一个域名的时候,就需要先解析出IP才能访问,而电脑会首先自动从hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页。对于我们要经常访问的网站,可以通过在hosts中配置域名和IP的静态映射关系,这样当输入域名的时候,我们的电脑就能很快解析出IP,而不用请求网络上的DNS服务器。
2.2.屏蔽某些网站
现在有很多网站不经过用户同意就将各种各样的插件安装到计算机中,有些说不定就是木马或病毒,删来删去还很麻烦。反正只要是你不想要访问一些网站,这时候对于这些网站可以利用hosts文件把该网站的域名映射到错误的IP或自己计算机的IP,这样就不用访问了。是不是很棒~
具体操作:
在Windows系统中,约定 127.0.0.1 为本地计算机的IP地址, 0.0.0.0是错误的IP地址。
如果我们在hosts文件中,写入以下内容:
127.0.0.1 要屏蔽的网站 A 0.0.0.0 要屏蔽的网站 B
这样,计算机解析域名A和 B时,就解析到本机IP或错误的IP,达到了屏蔽网站A和B的目的。
2.3.方便局域网用户
在很多单位中,都会有自己的局域网,而且还会有不同的服务器提供给公司的成员使用。但由于局域网中一般很少架设 DNS 服务器,因此在访问这些服务器时,就需要输入难记的 IP 地址,这对我们来说相当麻烦。因此,我们可以分别给这些服务器取个容易记住的名字,然后在hosts文件中建立 IP 映射关系,这样在以后访问的时候,只要输入这个服务器的名字就可以了。
2.4.创建虚拟域名
很多时候,网站建设者需要把”软环境“搭建好,再进行上传调试。但类似于邮件服务,则需要使用域名来辅助调试,这时就可以在hosts文件中将本地 IP 地址与一个”虚拟域名“做地址指向,就可以达到要求的效果。如:
10.1.1.1 网站域名
之后在浏览器地址栏中输入对应的网站域名即可。
三、修改hosts文件的方法
由于hosts文件是一个系统文件,因此需要管理员权限才能对其进行修改。
第一种方法:先将权限修改成管理员权限,然后在对其进行修改。
第二种方法:先将
hosts文件复制到桌面,这时修改不需要管理员权限了,因此可以对其进行修改。等修改完之后,在将其拖回原目录,替换原文件。
在Windows系统中,hosts文件位于C:/Windows/System32/drivers/etc下
在linux系统中,hosts文件位于/etc下,使用编辑器打开的命令是:vim /etc/hosts。打开后,可以使用vim编辑器添加需要的内容,不过需要root权限,这里就不赘述了。
hosts文件修改示例:
13.250.177.223 github.com
如上所示,我们在本地的hosts文件中,将Github的 IP 地址与Github的域名建立了映射关系,也就起到了“加快域名解析”的作用,因为这里不需要再去请求 DNS 域名解析服务器了。此外,如果我们想要对其进行注释的话,直接在前面加#符号就可以,例如:
#13.250.177.223 github.com
3.1.注意
hosts文件必须要在原目录下才有效,所以不要乱移动。
示例:
1.这时是在原目录下
2.我们在其中写入了这条
3.这时输入该域名,可以正常访问
4.这时我将其拖到桌面

5.这时输入该域名,变得不可访问了

山东省济南市 1F
hosts文件改起来还挺方便的,以前都不知道能这么用。
泰国 2F
原来还能用来屏蔽网站,这个功能挺实用啊。
贵州省六盘水市 3F
想问下Mac系统下hosts文件位置也是一样的吗?
北京市 4F
之前改hosts总提示没权限,后来发现得用管理员身份运行记事本。
香港 B1
@ 水乡墨客 直接拖文件回去有时候会被系统拦住,还是用管理员记事本稳点。
重庆市 5F
这解释得挺清楚的,比那些直接给步骤不说原理的好多了。
广东省 6F
127.0.0.1那个例子举得好,一下就明白了。
日本 7F
感觉对于新手来说,直接复制到桌面改再拖回去更安全一点。
北京市 8F
虚拟域名那块没太看懂,有更具体的例子吗?🤔
上海市松江区 9F
linux那个vim命令对我这种命令行小白有点劝退哈哈哈。
北京市 10F
写的还行,就是图片好像加载不出来。
日本 11F
改完hosts记得flushdns,不然可能不生效啊。
辽宁省盘锦市 12F
Mac在/private/etc/hosts,和linux一样,不过也得sudo才能改。
安徽省合肥市 13F
屏蔽广告网站我试过,效果拔群,就是得定期更新IP。
江苏省 14F
新手问下:改错了会导致上不了网吗?有点怕搞崩了😅
山东省潍坊市 15F
局域网那块深有体会,以前公司内网全靠hosts记服务器名。
新疆伊犁州奎屯市 16F
0.0.0.0比127.0.0.1屏蔽更彻底,亲测有效。
中国 17F
虚拟域名那段其实就是在本地模拟线上环境吧?做前端经常这么干。
山东省济南市 18F
这文章比我之前看的那些只甩命令的强多了,至少讲清逻辑了。
重庆市 19F
图片加载不出来就算了,文字已经够清楚了。
越南 20F
改完hosts要重启浏览器才生效,有人遇到过这种情况吗?
北京市 21F
之前用hosts屏蔽广告,结果有些网页样式都崩了,有点得不偿失。
山东省潍坊市 22F
127.0.0.1那个屏蔽原理讲得挺透,不过现在好多网站都有CDN,IP经常变。
上海市南汇区 23F
👍 讲得挺全的,适合小白入门看。
浙江省杭州市 24F
想问下,如果我把一个经常访问的网站IP写进hosts,但那个网站的IP变了,是不是就访问不了了?
河南省安阳市 25F
哈哈,想起以前用hosts改过一些游戏的登录地址,为了连私服。
山东省威海市 26F
这文章把hosts的几个主要用途都列出来了,还行。
福建省 27F
公司内网开发用这个是真的方便,不用记一堆IP。
韩国 28F
感觉用hosts加速访问,效果其实没那么明显吧,现在DNS解析都很快了。
广东省河源市 29F
虚拟域名那块,是不是本地开发调试用的?比如本地起个服务,用个假域名访问。
日本 30F
原来hosts文件还能这样用,涨姿势了
印度 31F
问下修改后需要重启电脑吗?
福建省厦门市 32F
这个屏蔽网站的方法可以试试,最近广告太多了
印度尼西亚 33F
之前改hosts把GitHub搞崩了,折腾半天才恢复😅
泰国 34F
虚拟域名那块没太明白,能举个具体例子吗?
日本 35F
用0.0.0.0屏蔽网站确实比127.0.0.1更彻底
北京市 36F
改hosts文件感觉还是有点风险,新手要谨慎操作
广东省珠海市 37F
局域网用这个太方便了,不用记一堆IP地址
韩国 38F
文章把hosts的用途讲得挺全面的