如何在 macOS (Mac OS X) 上编辑主机文件

在Mac系统中,存在一个名为“hosts”的文本文件,虽然体积不大,却扮演着至关重要的角色。它主要负责将主机名称与特定的IP地址进行关联。

尽管现今互联网主要依赖各种公共和私有的DNS服务器来解析IP地址,但是“hosts”文件依然是一种便捷的替代方案。它允许用户手动指定网站地址对应的IP地址,或者通过将网站指向一个未使用的内部IP地址来阻止对其访问。

下面,我们将简要介绍如何在macOS系统上修改Mac的“hosts”文件。

如何使用文本编辑器修改您的Mac“hosts”文件

在macOS中,修改“hosts”文件主要有两种方法。

第一种方法是使用“文本编辑”应用,因为“hosts”文件本质上是一个纯文本文件。但是,由于该文件位于受保护的系统区域内,我们不能直接打开它。我们需要先将文件复制到诸如桌面等非保护位置,进行修改后,再将其复制回原位。

  • 首先,打开“访达”(Finder)。可以通过点击桌面、屏幕左下角的笑脸图标或者按下cmd + 空格键打开“访达”。
  • 接下来,点击菜单栏中的“前往”下拉菜单。

3. 然后,在菜单中选择“前往文件夹”。

4. 在弹出的输入框中,输入“/private/etc/hosts”,然后按下回车键。

5. 一个新的“访达”窗口将会打开,并且您的Mac的“hosts”文件会被选中。点击并将其拖出“访达”窗口,放置到桌面上。

要打开它,只需双击该文件,它将会在“文本编辑”应用(或者您选择的其他文本编辑器)中显示文件的内容。

屏蔽IP地址

默认情况下,“/etc/hosts”文件的内容相对简单。其中包含多行注释文本,这些文本行以井号(#)开头。

任何以“#”开头的行都被视为注释,不会被“/etc/hosts”文件读取。对于每一行,井号后的所有文本都会被计算机忽略,因此非常适合用于添加注释和说明。该文件还包含了localhost和广播主机的默认IP地址。若要编辑文件,您需要在广播主机信息后添加您自己的映射行。

除了测试新开发的网站和虚拟主机迁移之外,编辑“hosts”文件的一个常见用途是屏蔽对特定网站的访问。

在我们的示例中,假设我们正在使用的计算机是专门用于工作的设备,我们希望避免在工作期间被Facebook等网站分心。

为此,请键入您想要分配的IP地址,然后是两个制表符,最后是主机名。在我们的例子中,我们想要屏蔽Facebook,因此我们将www.facebook.com映射到0.0.0.0,这是一个无效的IP地址,这将导致错误。

现在,每当我们尝试从Mac访问www.facebook.com时,Web浏览器将无法加载该页面,这可以帮助我们专注于工作!

重定向网址

或者,您也可以输入一个有效网站的IP地址,而不是0.0.0.0,这将导致尝试访问Facebook的用户被重定向到您选择的网站。

  • 要确定网站的IP地址,可以使用macOS自带的dig命令。要通过终端使用dig命令,只需打开终端,然后在URL上运行dig命令,系统将返回该网站的IP地址作为输出。
  • 现在,输入“$ dig www.techjunkie.com +short”。(此命令返回的IP 地址示例是 104.25.27.105)。

注意:“+short”选项会将输出简化为我们所需要的IP地址。

3. 记下返回的IP地址,并将其用于您的Mac“hosts”文件映射。例如,《纽约时报》网站返回的IP地址是170.149.172.130。如果我们在“hosts”文件中将其映射到Facebook,那么任何时候有人尝试通过这台Mac访问Facebook时,他们都会看到《纽约时报》的页面。

注意:许多网站不允许您将域名映射到当前映射到该站点的IP地址,因此当您尝试这样做时,可能会出现安全错误。

4. 您可以通过在每一行输入新的映射来向“hosts”文件添加任意数量的条目。在对“hosts”文件进行所需的更改后,将其保存到桌面上的当前位置。

5. 之后,将“hosts”文件从桌面拖回其原始位置“/private/etc”。如果指向该目录的“访达”窗口已关闭,只需使用之前讨论的“访达”>“前往”>“前往文件夹”命令重新打开它。

6. 当您将“hosts”文件放回其原始位置时,macOS会询问您如何处理已经存在的未修改的“hosts”文件。选择“替换”,然后输入您的管理员密码以确认操作。

现在,经过修改的“hosts”文件已经生效,请启动您的Web浏览器以测试更改。

刷新您的DNS缓存

在大多数情况下,新的映射应该会立即生效。但是,如果您没有看到预期的结果,可能需要刷新DNS缓存,强制浏览器从您的“hosts”文件中读取映射。

  • 要刷新Mac上的DNS缓存,请打开终端并使用以下命令(sudo允许您以管理员身份运行此命令):
  • 现在,输入“sudo killall -HUP mDNSResponder”,然后按回车键。注意:您需要输入管理员密码才能执行此命令。
  • 要让您的Mac清除DNS缓存,并用消息确认它已完成此操作,请输入以下两个以分号分隔的命令:“sudo killall -HUP mDNSResponder; say DNS缓存已被刷新”

然后,您的Mac会通过扬声器播放“DNS缓存已被刷新”的消息。

如何在终端中使用Nano编辑器修改Mac的“hosts”文件

上一节中的步骤相对简单,但是如果您想避免复制“hosts”文件,可以直接在终端中使用macOS内置的UNIX Nano文本编辑器进行编辑。

  • 要开始,请打开终端,键入以下命令,然后按回车键。和所有sudo命令一样,您也需要输入管理员密码才能执行此操作:“sudo nano /private/etc/hosts”

2. 你现在会看到 “hosts”文件 在Nano编辑器或者vim或者您选择的其他编辑器中打开。要在Nano中浏览和编辑文件,请使用键盘上的方向键。

3. 就像我们在上面使用文本编辑器的方法一样,我们可以随意添加、编辑或删除主机名映射。由于我们使用sudo启动Nano,任何更改都将通过身份验证并直接保存到原始“hosts”文件中,无需将其复制到其主目录之外。

4. 完成更改后,按Control-X退出编辑器,按Y保存,然后按回车键覆盖现有的“hosts”文件。

如前所述,如果您发现新的映射无法正常工作,请确保刷新您的DNS缓存。

我们的示例提到了在工作环境中屏蔽和重定向分散注意力的网站,但您也可以使用这些步骤手动屏蔽对恶意网站的访问,当然也可以用于其他用途。

如果您犯了错误,并且不确定如何修复它,您可以通过使用上述方法之一输入以下默认信息来恢复默认“hosts”文件内容:

##
# 主机数据库
#
# localhost用于配置loopback接口
# 系统启动时。不要更改此条目。
##
127.0.0.1 本地主机
255.255.255.255 广播主机
::1 本地主机
fe80::1%lo0 本地主机

最后思考

了解如何在macOS上编辑“hosts”文件为您提供了一种便捷的方法来覆盖DNS服务器,并手动将网站地址指向新的IP地址或屏蔽对网站的访问。通过遵循上述步骤,您可以非常迅速地完成此操作。

您编辑Mac的“hosts”文件的原因是什么?效果如何?请在下面的评论中告诉我们!