电脑系统Hosts文件原理和应用分享

Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。Hosts 的请求级别比 DNS 高。

修改hosts文件

接下来关键问题就是如何修改hosts文件,hosts文件存放目录:

  • Window目录 C:\Windows\System32\drivers\etc\hosts
  • Linux及其他类Unix操作系统:/etc
  • Android目录/system/etc/

常用的各平台 hosts 文件位置

hosts文件在不同操作系统中的位置如下表所示:

Windows:%SystemRoot%\System32\drivers\etc\hosts

Android:/etc/hosts(指向/system/etc/hosts的符号链接)

iOS:/etc/hosts(指向/private/etc/hosts的符号链接)

Mac OS X 10.0–10.1.5:通过NetInfo或niload设置

Mac OS X 10.2和更新版本:/etc/hosts(指向/private/etc/hosts的符号链接)

Unix、类Unix系统(例如Linux等):/etc/hosts

Windows Mobile、Windows Phone:注册表项HKEY_LOCAL_MACHINE\Comm\Tcpip\Hosts

Symbian OS 6.1–9.0:C:\system\data\hosts

Symbian OS 9.1+:C:\private\10000882\hosts

上面是比较常见的系统了,如果你用其他的系统,我相信你能查到它的位置…

编辑修改以上目录下的hosts文件。目前实现方式有许多形式,最直接的就是使用文件管理器将获取的hosts文件覆盖系统的hosts文件。

Hosts文件格式

127.0.0.1  localhost
127.0.0.1  www.baidu.com
192.168.1.1 test.com

域名解析流程

图片[1]-电脑系统Hosts文件原理和应用分享-QQ沐编程

Hosts具体作用

1、虚拟域名

很多时候,网站建设者需要把”软环境“搭建好,再进行上传调试。但类似于邮件服务,则需要使用域名来辅助调试,这时就可以将本地 IP 地址与一个”虚拟域名“做地址指向,就可以达到要求的效果,且无需花费。

如:
127.0.0.1 www.qqmu.com 之后在浏览器地址栏中输入对应的网站域名即可。

2、加快域名解析

对于要经常访问的网站,我们可以通过在Hosts中配置域名和IP的映射关系,提高域名解析速度,当我们输入域名计算机就能很快解析出IP,而不用请求网络上的DNS服务器。

3、屏蔽网站(域名重定向)

有很多网站不经过用户同意就将各种各样的插件安装到你的计算机中,其中有些说不定就是木马或病毒。对于这些网站我们可以利用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

如:

127.0.0.1  www.hao123.com
127.0.0.1  www.baidu.com

这样,计算机解析域名A和 B时,就解析到本机IP或错误的IP,达到了屏蔽网站A 和B的目的。

4、方便局域网用户

在很多单位的局域网中,会有服务器提供给用户使用。但由于局域网中一般很少架设DNS服务器,访问这些服务器时,要输入难记的IP地址。这对不少人来说相当麻烦。可以分别给这些服务器取个容易记住的名字,然后在Hosts中建立IP映射,这样以后访问的时候,只要输入这个服务器的名字就行了。

5、顺利连接系统

对于Lotus的服务器和一些数据库服务器,在访问时如果直接输入IP地址那是不能访问的,只能输入服务器名才能访问。那么我们配置好Hosts文件,这样输入服务器名就能顺利连接了。

6、强制域名解析指定IP

比如一些网站有很多的服务器ip,有些ip可能被和谐了,那么我们可以在hosts文件里添加我们想要的ip跟域名。

如:

# Periscope Start
13.124.246.138	pscp.tv
13.124.203.13  	www.pscp.tv
52.39.74.21 	        channels.pscp.tv
54.200.114.148	proxsee.pscp.tv
54.192.73.58	        assets.pscp.tv
54.192.73.58    	prod-profile.pscp.tv
54.192.73.58            prod-thumbnail.pscp.tv
151.101.2.164  	prod-video-ap-northeast-1.pscp.tv
151.101.2.164  	prod-video-ap-southeast-1.pscp.tv
151.101.66.164	prod-video-ap-southeast-2.pscp.tv
151.101.66.164	prod-video-eu-central-1.pscp.tv
151.101.130.164	prod-video-us-east-1.pscp.tv
151.101.194.164	prod-video-sa-east-1.pscp.tv
151.101.194.164	prod-video-us-west-2.pscp.tv
151.101.78.164	prod-video-us-west-1.pscp.tv
151.101.78.164	prod-video-eu-west-1.pscp.tv
18.194.108.2    	prod-chatman-ancillary-eu-central-1.pscp.tv
34.233.63.45    	prod-chatman-ancillary-us-east-1.pscp.tv
35.160.28.174   	prod-chatman-ancillary-us-west-2.pscp.tv
# Periscope End

修改 hosts 后不生效怎么解决?

无论是手工修改 hosts 还是使用软件来修改,很多人都会遇到修改 hosts 后不生效的情况。其实,这一般是由于 DNS 缓存的原因导致的。

因为系统为了加快用户打开网站的速度,在首次访问网站成功之后,会把 DNS 解析的结果暂时性地保存在本地缓存 (称为 DNS 缓存) 里一小段时间,如果浏览器在“这段时间里”再次打开同一个网址,则会自动从 DNS 缓存里取出结果,而不会请求远程的 DNS 服务器,也不会查询 hosts 文件,从而节省时间提高打开速度。因此用户会遇到有时修改了 hosts 文件但并不生效的情况,一般这时候我们想办法清空 (刷新) 一下系统的 DNS 缓存即可。

怎样清空 DNS 缓存?

  • 在 Windows 下命令行执行:ipconfig /flushdns
  • 在 macOS 下执行命令:sudo killall -HUP mDNSResponder
  • 如果你使用 Chrome 浏览器,那么可以访问:chrome://net-internals/#dns,然后点击「Clear host cache」按钮来清空浏览器里的 DNS 缓存。

如果这样还不生效,那么只能再试试重启电脑了,一般都OK了。要这样还是不行,可能就是你的 hosts 写错了。

© 版权声明
THE END
喜欢就支持一下吧
点赞8赞赏 分享