转载

关于HOST你想了解的一切


我们常常在网上听到看到很多人说修改 hosts。那么 hosts 到底是什么东西?怎样修改 hosts?hosts 的路径在哪?改 hosts 又有什么作用?hosts 是什么?

hosts 是什么?

一般来说,当用户在电脑浏览器里输入网址(域名)后,系统需要通过查询网络上的 DNS 服务器,才能将域名 (比如http://chromecj.com) 解析成对应的 IP 地址,浏览器通过 IP 地址才能找到该网站所在的服务器并进行访问。

而操作系统的 hosts 文件则是有着“类似本地 DNS 服务器”的作用,而且比网络上的 DNS 具有更高的优先级。如果你在 hosts 里面配置了某个域名和IP的对应关系 (比如 127.0.0.1 http://iplaysoft.com),那么当你在「本机」访问 http://iplaysoft.com 时,系统首先会从 hosts 里面解析出 127.0.0.1 这个 IP,而不会再去查询网络上的 DNS 服务器。注意:hosts 文件仅对本机生效,对其他电脑和网站本身不造成任何影响。

修改 hosts 有什么作用?

根据上述这样的特点,hosts 文件可以应用在很多场景,比如下面一些例子:

  • 强制指定域名的 IP,加快域名解析 (省略了联网查询 DNS 的步骤),也能绕过 DNS 污染与劫持。
  • 为局域网某些 IP 的机器配置一个“网址别名”,方便自己记忆和访问。比如配置一个 http://nas.com 访问局域网里的 NAS;gongsi 访问公司网站等等。
  • 将域名指向到不可访问的IP地址,达到屏蔽不健康网站、屏蔽垃圾广告网址的效果;同理也能禁止系统、软件、网站访问某些指定的网址;
  • 开发或测试应用时,利用 hosts 将域名临时指向到测试服务器IP,可以方便自己测试,同时又不影响他人和线上的应用。

其实 hosts 还有很多不同的用途,但比较常见的主要是用来屏蔽指定网址,以及程序员在开发、测试阶段用于配置服务器IP。

怎样修改 hosts?

不同的操作系统修改 hosts 文件的方法不一样,它所在的路径也不一样。常见操作系统的 hosts 文件的位置路径为:

  • Windows 系统 Hosts 文件路径:C:\Windows\System32\drivers\etc\hosts
  • Mac 系统 hosts 文件路径:/etc/hosts
  • Linux 系统的 hosts 文件一般也是在:/etc/hosts
  • Android 系统的 hosts 文件路径:/system/etc/hosts (需要Root权限修改)

由于 hosts 属于系统文件,因此需要管理员权限才能对内容进行修改。一般使用任意文本编辑器都能打开它进行修改内容,一行一个IP地址和域名的对应关系,格式是「IP地址+空格+域名」,这里的“域名”不一定要求http://xx.com,也可以是一个单词比如系统预设的“localhost”或者自定义一个“nas”也行。你可以根据自己的需要增加或修改 hosts 的内容。hosts 文件内容的例子如下:

127.0.0.1 http://example.com
14.215.177.38 http://www.baidu.com
192.168.1.100 nas
# 井号开头的则是注释

你可以根据自己的需求进行修改,偶尔只改一两次的同学,手动修改即可。但对于经常需要修改 hosts 的朋友 (比如开发者),每次都要手动不停地来回修改,实在是很累,而且也很容易出错。那么你就要一键快速切换 hosts 的工具了!

怎样快速修改、应用/切换 Hosts?

Hosts 相关的小工具着实不少,大家需求最多的肯定是 hosts 切换工具了。比如Host Switch Plus:快速切换 Domain-IP和SwitchHosts。

修改 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 写错了。

总结:

说了那么多,其实 hosts 并不神秘,简单理解它就是个电脑本机的「IP地址<=>域名」的对应表,系统或任何软件都会优先先检查 hosts 里面有没对应的配置,之后才会去查询网上的 DNS 服务器。因此你可以利用 hosts 做很多有趣、有用的事情。而借助 SwitchHosts! 工具,你可以方便地备份hosts,也能快速切换不同的 hosts 配置,甚至使用远程的 hosts 文件等,甚是方便!

备注说明

文字内容素材部分来自:http://www.iplaysoft.com,如有侵权,联系后删除。

end

关注公众号STATION 001,发现更大的世界。

  • 作者:Lider(联系作者)
  • 发表时间:2023-12-07 14:42
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 公众号转载:请在文末添加作者公众号二维码
  • 评论