hosts 文件:适用于用户和开发人员的强大工具

已发表: 2020-09-23

您之前可能听说过 hosts 文件,但不确定它是什么或它的作用。 在本文中,我们将澄清这一点并准确解释主机文件是什么以及它是如何工作的。 我们还将查看一些您可以使用它实现的目标的示例。 让我们开始吧!

什么是主机文件?

在您的计算机上找到一个 hosts 文件(无论是 Mac 还是 Windows,都会有一个)。 主机文件是所谓的“纯文本”,它们起源于几十年前,最初被用作“名称解析”的早期形式,早期的互联网活动通过这些文件定向到目标服务器。 这种使用被今天仍在使用的域名系统(或 DNS)的发明所取代。

今天的互联网流量依赖于 DNS 系统来“告诉它去哪里”。 当您在浏览器中输入网站地址时,浏览器会使用 DNS 系统“查找”托管该网站的服务器的位置。

该请求从您本地计算机的主机文件开始。 如果在那里找不到所需的详细信息(即所需服务器的位置或 IP 地址),则继续向外部 DNS 服务器请求,直到找到该地址。 然后,这允许浏览器连接到网站并显示您正在寻找的内容。 所有这一切都在几毫秒内发生,这确实是了不起的。

快速浏览一下上图。 如您所见,您的计算机发送的请求首先通过您计算机的主机文件进行路由。 如果 hosts 文件中保存了您请求的网站的 IP 地址,那么它将直接将您的浏览器发送给它。 如果没有,它会将您的浏览器定向到应具有所需信息的 DNS 服务器。

以此为基础,可以合理地得出结论,通过编辑 hosts 文件,我们可以绕过 DNS 并在使用浏览器时将任何域解析为任何 IP 地址。 这样做的能力可以带来许多好处,我们将拭目以待。

注意:在进一步查看主机文件以及如何对其进行编辑之前,值得注意的是主机文件可能成为恶意攻击的目标。 因此,当您完成任何修改后,值得将其属性更改为“只读”。

修改主机文件

在您的计算机上修改主机文件非常容易,并且有时非常有用。 让我们看看如何在 Windows、Linux 和 Mac 上轻松修改 hosts 文件。

如何在 Windows 10 上修改主机文件

该文件可以位于“C:\Windows\System32\drivers\etc”

主机文件位置 - Windows

使用记事本等文本编辑器打开 hosts 文件时,您会看到类似这样的内容(提示时不要忘记“以管理员身份运行”)。

托管文件内容

在现有内容下方(在我们上面的示例中,第 24 行附近)您可以输入您想要访问的目标 IP 地址,然后是空格,然后是域名。 这看起来大概是这样的:

请注意,“#”符号用于注释。 同一行中“#”之后的任何内容都将被忽略。 您可以将其用作标签来标记对主机文件的编辑,例如:

 # my router's alias 192.168.1.1 myrouter.com

如何在 Linux 发行版上修改 hosts 文件

例如,在 Ubuntu 上,hosts 文件的完整路径是 /etc/hosts。 你可以用你的编辑器打开文件(我们在这个例子中使用了 Nano 编辑器)。 出现提示时输入您的 sudo 密码。

主机文件位置 - Linux 发行版

完成后,您可以像我们为 Windows 所做的那样添加行。

如何在 MacOS 上修改 hosts 文件

在 MacOS 上,文件的完整路径是 /etc/hosts。 启动终端窗口后,使用文本编辑器打开主机文件。

  1. 键入 sudo nano /private/etc/hosts 并按回车键。
  2. 输入请求的密码。 您现在将在 Nano 编辑器中打开 hosts 文件。
  3. 在 hosts 文件中的原始内容下方导航,然后按照 Windows 和 Linux 的描述编辑该文件。 > 目标 IP 地址 > 一个空格 > 域名
  4. 按 Control-O 保存文件。
  5. 如果未显示更改,请使用 > dscacheutil -flushcache 刷新缓存

现在我们了解了如何在本地计算机上编辑 hosts 文件,让我们看一下可以用它做的一些有用的事情。

编辑主机文件的主要原因

您可能想要编辑主机文件的原因有很多。 我们将在下面介绍其中的一些。

在测试网站的开发时

假设您是一名 WordPress 开发人员,正在开发您客户网站的新版本,该网站当前位于“mycompany.com”域下。 您正在更改网站的本地版本(已保存在您的计算机上)。

您将遇到的问题是代码中对域“mycompany.com”的任何引用都会看到您的浏览器将您带到该站点的实时版本而不是该站点的本地版本,这意味着几乎不可能测试您所做的更改。 在这种情况下,您有几个选择:

  1. 购买一个临时域名,指向正在开发的版本所在的IP。
  2. 将实时站点部署到登台服务器。
  3. 使用 hosts 文件临时将“mycompany.com”指向本地不同的 IP 地址/服务器。

因此,除非您喜欢在临时域上浪费金钱,否则解决此问题的一个很好的方法是使用 hosts 文件并使域解析到您正在进行或将要进行的工作。

为此,您所要做的就是输入您正在使用的服务器的域名和 IP(如前所述)。 例如,如果 IP 地址是 138.201.141.25,您将编辑 hosts 文件以读取:

如果要添加 www 域,同样适用。 你可以通过像这样添加第二行来做到这一点:

或者将两者结合在同一行中,如下所示:

另请注意,使用 hosts 文件指向您的本地文件也将略微提高您的浏览速度,因为您的计算机可以直接“请求”本地文件并跳过从 DNS 服务器请求 IP 地址和等待接收它的回应。

像这样编辑 hosts 文件对于开发人员测试他们正在开发的网站或进行其他类型的工作非常有用,这些工​​作有助于覆盖 DNS 服务器并控制对网站和网络流量的访问。

阻止网站

那里有很多网站,其中许多并不是特别令人愉快。 因此,您可能希望阻止对这些的访问(例如,如果您有孩子使用您的计算机)。 这可以通过将特定网站的请求路由到您的本地主机 IP 地址(通常为 127.0.0.1)来完成。

我们应该指出:

  • 除非您在其地址中包含 www,否则 HTTPS 站点不会被阻止。
  • 在这些修改期间,请记住,您需要清除浏览器缓存才能看到这些更改生效。

例如,假设您想阻止访问名为 www.badwebsite.com 的网站。 为此,您将在主机文件中输入以下内容:

 127.0.0.1 badwebsite.com www.badwebsite.com

这样做的结果是您的计算机将无法访问该网站。

您还可以使用 hosts 文件来阻止间谍软件/广告网络。 为此,请列出您要阻止的所有间谍软件站点和广告网络域名,并将它们添加到您的主机文件中,将它们映射到 IP 地址 127.0.0.1,该地址将始终指向您的计算机。 这样您的浏览器将无法访问这些域。

这样做的一个好处是,在阻止此类不需要的站点后,您的浏览将更加安全,因为您将无法访问已知的恶意站点。 它还可以加快您的浏览速度,因为您在从广告网络站点下载广告时不再需要等待。

结论

总之,编辑 hosts 文件可以让您完全控制在您的机器上本地解析到哪个 IP 地址的域。 这有许多可能的用途和好处。 拥有控制权总是很好的,并且了解您的计算机主机文件的方式为您提供了……控制权。 确实是一个强大的工具!