Mac 的主机文件是一个小而重要的文本文档,它能够将主机名映射到指定的 IP 地址。
虽然现代 Internet 使用各种公共和私有 DNS 服务器来映射 IP 地址,但 hosts 文件是覆盖这些 DNS 服务器的便捷方式,允许您手动将网站地址指向所需的 IP 地址,或阻止访问指向一个未使用的或内部 IP 地址。
让我们快速看一下如何在 macOS 上编辑 Mac 主机文件。
目录
如何使用文本编辑编辑您的 Mac 主机文件
在 Mac OS X 中编辑 hosts 文件有两种主要方法。
第一种是使用 TextEdit,因为 hosts 文件是纯文本文档。 但是,您不能直接打开该文件,因为它位于文件系统的受保护区域中。 相反,我们需要将文件复制到不受保护的位置,例如桌面,对其进行编辑,然后将其复制回来。
- 要查找主机文件,请打开 Finder,您可以通过单击桌面、屏幕左下方的笑脸查找器或按 cmd + Spacebar + Finder 来访问它。
- 现在,选择 Go 下拉菜单。
3. 然后,从菜单中选择转到文件夹。
4. 在框中,输入“/private/etc/hosts”并按回车键。
5. 一个新的 Finder 窗口将打开,您的 Mac 的 hosts 文件将被选中。 单击并将其拖出 Finder 窗口并将其拖放到桌面上。
要打开它,只需双击它,它将在 TextEdit(或您选择的文本编辑器)中显示文件的内容。
阻止 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 命令。 要通过终端挖掘站点,我们只需打开终端,然后在 URL 上运行 dig 命令,然后将 IP 地址作为输出返回。
- 现在,输入“$ dig www.techjunkie.com + short 104.25.27.105”
注意:+ 短选项将输出保留为我们需要的信息,即 IP 地址。
3. 记下返回的 IP 地址并将其用于您的 Mac 主机文件映射。 例如,纽约时报网站返回的 IP 地址为 170.149.172.130。 如果我们在 hosts 文件中将其映射到 Facebook,那么任何时候使用 Mac 的人尝试访问 Facebook,他们都会看到加载纽约时报。
注意:许多网站不允许您将域名映射到当前映射到该站点的 IP 地址,因此当您尝试时会出现安全错误。
4. 您可以通过在每一行输入新的映射向主机文件添加任意数量的条目。 对主机文件进行所需的更改后,将其保存在桌面上的当前位置。
5. 然后,将主机文件从桌面拖放回其原始位置 /private/etc。 如果您关闭了指向该目录的 Finder 窗口,只需使用上面讨论的 Finder > Go > Go to Folder 命令重新打开它。
6. 当您将 hosts 文件放回其原始位置时,macOS 会询问您如何处理已经存在的未修改的 hosts 文件。 选择替换,然后输入您的管理用户密码以验证转移。
现在修改后的 hosts 文件就位,启动您的 Web 浏览器以测试更改。
刷新您的 DNS 缓存
在大多数情况下,新映射应该立即生效,但如果您没有看到正确的行为,您可能需要刷新 DNS 缓存,强制浏览器从您的 hosts 文件中读取以确定映射。
- 要刷新 Mac 上的 DNS 缓存,请打开终端并使用以下命令(sudo 允许您以机器管理员身份运行此命令):
- 现在,输入“sudo killall -HUP mDNSResponder”并按回车键。 注意:您需要输入管理员密码才能执行此命令。
- 要让您的 Mac 清除您的 DNS 缓存,然后通过回显确认来确认它已清除您的缓存,请输入这两个用分号分隔的命令,如下所示:“sudo killall -HUP mDNSResponder;说 DNS 缓存已被刷新”
然后,您的 Mac 将通过扬声器说“DNS 缓存已被刷新”。
如何使用 Nano 在终端中编辑 Mac 主机文件
上一节中的步骤很简单,但如果您想避免复制主机文件,您可以使用 macOS 内置的 UNIX Nano 文本编辑器直接在终端中编辑它。
- 要开始,请启动终端,键入以下命令,然后按 Return。 与所有 sudo 命令一样,您还需要输入管理员密码才能执行它:“sudo nano /private/etc/hosts”
2. 你现在会看到 主机文件 在 Nano 编辑器或 vim 或您选择的其他编辑器中打开。 要在 Nano 中导航和编辑文件,请使用键盘上的箭头键。
3. 就像我们使用上面的 TextEdit 方法一样,我们可以随意添加、编辑或删除主机名映射。 因为我们使用 sudo 启动 Nano,所以任何更改都将通过身份验证并直接保存到原始 hosts 文件中,而无需将其复制到其主目录之外。
4. 完成更改后,按 Control-X 退出编辑器,按 Y 保存,然后按 Return 覆盖现有的 hosts 文件。
正如我们前面提到的,如果您发现新映射无法正常工作,请确保刷新您的 DNS 缓存。
我们的示例提到了在工作环境中阻止和重定向分散注意力的网站,但您也可以使用这些步骤手动阻止对恶意网站的访问,当然也可以阻止其他用途。
如果您犯了错误并且不确定如何修复它,您始终可以通过使用上述方法之一输入以下默认信息来恢复默认主机文件内容:
##
# 主机数据库
#
# localhost用于配置loopback接口
# 系统启动时。 不要更改此条目。
##
127.0.0.1 本地主机
255.255.255.255 广播主机::1 本地主机
fe80::1%lo0 本地主机
最后的想法
了解如何在 macOS 上编辑 hosts 文件提供了一种方便的方法来覆盖 DNS 服务器并手动将网站地址指向新的 IP 地址或阻止访问,并且按照上述步骤,您可以非常快速地完成此任务。
您寻求编辑 Mac 的 hosts 文件的原因是什么? 效果如何? 请在下面的评论中告诉我们!