写在前面
之前配置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命令对我这种命令行小白有点劝退哈哈哈。
印度尼西亚 B1
@ 幻影星尘 其实用nano比vim友好多了,sudo nano /etc/hosts 就能直接改,新手试试
北京市 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屏蔽更彻底,亲测有效。
广东省湛江市 B1
@ 小花园 127.0.0.1和0.0.0.0都试过,后者确实屏蔽得更干净一些。
中国 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
虚拟域名那块,是不是本地开发调试用的?比如本地起个服务,用个假域名访问。
上海市 B1
@ 地平线守护者 就是本地起个服务配个域名访问,不用改hosts也能用localhost
日本 30F
原来hosts文件还能这样用,涨姿势了
印度 31F
问下修改后需要重启电脑吗?
河南省许昌市 B1
@ 墨剑寒 嗯,一般不用重启电脑,但最好刷新下DNS缓存。
广东省广州市海珠区 B1
@ 墨剑寒 不用重启电脑,改完刷新DNS缓存就行,比如Windows下ipconfig /flushdns
福建省厦门市 32F
这个屏蔽网站的方法可以试试,最近广告太多了
印度尼西亚 33F
之前改hosts把GitHub搞崩了,折腾半天才恢复😅
泰国 34F
虚拟域名那块没太明白,能举个具体例子吗?
日本 35F
用0.0.0.0屏蔽网站确实比127.0.0.1更彻底
北京市 36F
改hosts文件感觉还是有点风险,新手要谨慎操作
广东省珠海市 37F
局域网用这个太方便了,不用记一堆IP地址
韩国 38F
文章把hosts的用途讲得挺全面的
浙江省嘉兴市 39F
hosts文件原来是个静态数据库啊,这下明白了
湖北省十堰市 B1
@ 龙吟刀 静态数据库这个说法挺形象的,不过它其实是纯文本映射表,没那么复杂
河北省邢台市 40F
原来hosts文件还有虚拟域名这个用法,本地调试方便多了。
浙江省杭州市 B1
@ 稳重的犀牛 虚拟域名配置确实很方便,本地测试不用改nginx配置了
泰国 41F
刚试了下屏蔽广告网站,浏览器瞬间清爽了。
北京市 42F
修改hosts文件需要管理员权限这点挺烦的,每次都得输密码。
河南省信阳市 43F
有个疑问,如果hosts文件里配置的IP和DNS解析结果不一样,会优先用哪个?
山东省 B1
@ 怀旧小栈 感觉hosts文件优先级讲得不够清楚,实际使用中遇到过冲突
浙江省 44F
之前搞hosts把github给屏蔽了,找半天原因才发现😅
日本 45F
对于经常访问的网站,写进hosts里真能提速吗?感觉现在DNS也不慢啊。
北京市 46F
文章把hosts文件的作用讲得挺清楚的,适合我这种新手看。
河北省张家口市 47F
hosts文件改错了确实可能上不了网,但一般都能改回来,别慌。
中国 48F
虚拟域名那段就是在本地用个假域名访问自己的服务器,搞开发经常用。
湖北省荆州市 49F
总算有人讲清楚hosts为啥要这么改了,之前都是照抄教程。
安徽省芜湖市 50F
虚拟域名调试时用,本地起个服务配个域名就能测,不用改代码。
湖北省武汉市 51F
文章里把屏蔽网站原理讲明白了,以前只知道改不知道为啥。
浙江省 52F
试过用hosts加速GitHub,结果IP一换就抓瞎,得手动更新。
澳大利亚 53F
这个文件权限问题确实烦,特别是Windows动不动就要管理员。
广西 54F
hosts文件改起来其实挺简单,就是别乱动系统默认的那些就行。
福建省福州市 55F
有没有办法让hosts文件自动更新IP啊?手动改太麻烦了。
山东省淄博市 56F
之前改hosts把某个网站屏蔽了,结果连带它家的其他服务也挂了。
福建省泉州市 57F
文章讲得挺细,适合我这种新手照着操作。
广东省广州市 58F
虚拟域名那个例子有点抽象,本地开发具体怎么配能细说不?
台湾省高雄市 59F
hosts文件权限问题在linux下用sudo就搞定了,不算麻烦。
浙江省杭州市 60F
这文章对新手确实友好,一步步跟着做没啥问题。
北京市 61F
用0.0.0.0屏蔽广告网站亲测有效,网页干净多了。
日本 62F
所以hosts的优先级比DNS高对吧?那如果写错了就很麻烦。
辽宁省沈阳市 B1
@ 幽兰 hosts文件优先级确实比DNS高,这点要注意
越南 63F
以前搞爬虫经常改hosts绕过反爬,现在有些网站还会检测这个。
上海市 64F
感觉内容挺基础的,适合完全不懂的人看。
陕西省铜川市 65F
要是能有个工具自动更新hosts里的IP就好了,手动维护太累。
日本 66F
hosts文件原来还能这么玩,学到了新思路。
韩国 67F
文章里说hosts是静态的,那对于用动态IP的网站是不是就没啥用了?
台湾省 68F
之前改hosts加速GitHub,结果IP一换就404,手动维护真的累
北京市 69F
屏蔽广告网站亲测有效,但有些依赖CDN的页面会加载异常,得自己权衡
澳大利亚 70F
局域网开发全靠它了,不然天天记192.168.1.xxx烦死了
福建省厦门市 71F
虚拟域名那段是不是指本地起个web服务,然后配个fake.com指向127.0.0.1?这样就能用域名调试了
湖北省荆州市 72F
Mac用户表示/private/etc/hosts也得sudo才能保存,和linux一样
浙江省 73F
改错一行整个网络都抽风,建议改前先备份原文件😅
黑龙江省哈尔滨市 74F
这玩意对动态IP网站确实不太友好,IP一变就得手动更新,有点鸡肋
辽宁省 75F
改hosts前一定要备份!上次手滑改错直接上不了网😅
日本 76F
这文章把hosts的几个主要用途都列出来了,还行
广东省梅州市 77F
想问下hosts文件修改后需要刷新DNS缓存吗?
北京市 78F
用0.0.0.0屏蔽网站比127.0.0.1效果好,亲测有效
河北省 79F
公司内网全靠这个记服务器地址,不然天天输IP太麻烦了
日本 80F
127.0.0.1那个例子举得挺直观,一下就懂了
日本 81F
对于动态IP网站确实不太友好,得经常手动维护
日本 82F
用hosts屏蔽广告网站确实好用,就是得定期维护
重庆市 83F
虚拟域名那个例子能再具体点吗?本地怎么配?
马来西亚 84F
我之前改hosts把公司内网搞崩过,后来学乖了先备份
广东省 85F
hosts改完要刷新DNS缓存才生效,具体命令是啥?
北京市 86F
这文章把静态映射概念讲清楚了,之前一直没搞懂
北京市 87F
linux下用sudo vim就行,其实没那么复杂
韩国 88F
要是网站换了IP,hosts里的配置就失效了,这点挺麻烦
重庆市 89F
新手建议先用虚拟机练手,别直接改系统文件😅
湖北省武汉市 90F
这文章挺适合入门,但图片一直加载不出来