介绍
在本实验中,你将学习一项关键技能:通过直接编辑 /etc/hosts 文件来管理 Linux 中的本地主机名解析。此文件允许你在本地机器上手动将主机名映射到 IP 地址,这是 Web 开发、网络测试和系统管理中的一项重要技术。通过控制这些映射,你可以覆盖公共 DNS 服务器,并将特定域的流量指向本地或自定义 IP 地址。
你将通过一个完整、实用的工作流程进行指导。首先,你将使用 cat 命令检查 /etc/hosts 文件的默认内容,以了解其结构。然后,你将使用 nano 编辑器添加自定义主机条目。为了验证你的配置,你将使用 ping 命令测试新的主机名。最后,你将删除你添加的条目,将文件恢复到其原始状态,从而完成实践练习。
使用 cat 命令检查默认的 /etc/hosts 文件
在此步骤中,你将学习如何查看 /etc/hosts 文件的内容。此文件是一个简单的文本文件,你的操作系统使用它来将主机名映射到 IP 地址。在你的计算机向互联网上的 DNS 服务器请求解析域名之前,它会首先检查此本地文件。理解其结构是 Linux 上一项基础的网络技能。
我们将使用 cat 命令,这是一个用于读取文件并将其内容打印到终端的标准实用程序。
打开你的终端并执行以下命令以显示 /etc/hosts 文件的内容:
cat /etc/hosts
示例输出:
你将看到类似以下的输出。确切内容可能略有不同,但格式将是相同的。
127.0.0.1 localhost
## The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.1.1 Aliyun
192.168.2.67 iZbp1gakoh36s0s067d3ebZ iZbp1gakoh36s0s067d3ebZ
172.20.239.123 ubunut-base-image ubunut-base-image
172.28.138.90 iZj6c8bsoq3dpsob2zhgheZ iZj6c8bsoq3dpsob2zhgheZ
让我们来分析一下这个输出:
127.0.0.1 localhost: 这是最常见的条目。它将 IP 地址127.0.0.1(也称为回环地址)映射到主机名localhost。这对许多本地服务的正常运行至关重要。- 以
#开头的行: 这些是注释。系统会忽略它们,但它们对于提供解释很有用。 - IPv6 条目: 像
::1 ip6-localhost这样的行是回环地址和其他标准网络配置的 IPv6 等效项。
现在你已经看到了 hosts 文件的默认结构,你已准备好在下一步学习如何修改它。
使用 nano 编辑器添加自定义主机条目
在此步骤中,你将手动向 /etc/hosts 文件添加一个新条目。这对于需要将域名指向本地服务器的开发者或设置内部网络的系统管理员来说是一项实用技能。由于 /etc/hosts 是一个受系统保护的文件,你必须使用 sudo 来获取修改它的必要权限。
我们将使用 nano,这是一个简单易用的命令行文本编辑器,在 LabEx 环境中已预装。
执行以下命令以使用 nano 打开 /etc/hosts:
sudo nano /etc/hosts
终端现在将在 nano 编辑器中显示文件的内容。使用箭头键将光标移动到文件末尾。添加以下新行:
192.168.1.100 myfictionalserver.local
这一行告诉你的系统,每当它看到主机名 myfictionalserver.local 时,都应将其解析为 IP 地址 192.168.1.100。
现在,你需要保存更改并退出编辑器。请按照以下按键操作:
- 按下
Ctrl+O(“写入”命令)保存文件。 nano会询问“要写入的文件名”。默认是/etc/hosts,这是正确的,所以只需按Enter确认。- 按下
Ctrl+X退出nano并返回到你的终端提示符。
你现在已成功修改了 hosts 文件。在下一步中,我们将测试这个新条目,以确认它按预期工作。
使用 ping 命令测试自定义主机名
在此步骤中,你将验证你添加到 /etc/hosts 的自定义条目是否正常工作。最好的方法是使用 ping 命令。ping 是一个网络实用程序,用于测试 IP 网络上主机的可达性。它还测量从源主机到目标计算机发送消息并返回所需的时间。
当你 ping 一个主机名时,系统会首先尝试将该名称解析为 IP 地址。由于我们在 /etc/hosts 中添加了 myfictionalserver.local 的条目,你的系统应该在那里找到它并使用 IP 地址 192.168.1.100。
让我们来测试一下。在你的终端中,运行以下命令。我们使用 -c 4 标志来只发送 4 个数据包然后停止,这对于测试很方便。
ping -c 4 myfictionalserver.local
示例输出:
你应该会看到确认名称解析的输出,即使该主机不可达。
PING myfictionalserver.local (192.168.1.100) 56(84) bytes of data.
^C
--- myfictionalserver.local ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3053ms
最重要的一行是第一行:PING myfictionalserver.local (192.168.1.100). 这确认了你的系统使用你的 /etc/hosts 文件条目成功地将主机名 myfictionalserver.local 解析为 IP 地址 192.168.1.100。
该命令将继续运行直到被停止(例如,通过按下 Ctrl+C)。由于网络上 192.168.1.100 没有实际设备,因此不会收到任何数据包。然而,名称解析过程是成功的,这正是我们想要演示的。
你现在已经确认你的自定义 hosts 文件条目已激活。在最后一步,你将学习如何通过删除此条目来清理。
移除自定义主机条目以恢复系统默认状态
在此最后一步中,你将清理对 /etc/hosts 文件所做的更改。在共享或生产环境中,撤销临时更改以避免后续出现意外行为是一项至关重要的实践。将文件恢复到其原始状态可确保你的系统的名称解析能够按预期为所有其他网络操作工作。
和之前一样,你需要 sudo 权限才能使用 nano 编辑文件。
再次在编辑器中打开 /etc/hosts 文件:
sudo nano /etc/hosts
使用箭头键导航到你在步骤 2 中添加的行:
192.168.1.100 myfictionalserver.local
将光标放在该行上,然后可以删除它。在 nano 中删除整行的快速方法是按下 Ctrl+K。
删除该行后,保存文件并退出编辑器:
- 按下
Ctrl+O然后按Enter保存更改。 - 按下
Ctrl+X退出nano。
为了确认条目已被删除并且系统不再能够本地解析该主机名,请最后一次尝试 ping 它:
ping myfictionalserver.local
示例输出:
这次,该命令应立即失败并显示错误消息,因为系统无法解析该名称。
ping: myfictionalserver.local: Name or service not known
这证实你已成功删除自定义条目,并将你的 hosts 文件恢复到干净状态。
总结
在本实验中,你学习了如何通过操作 /etc/hosts 文件来管理 Linux 中的本地主机名解析。你首先使用 cat 命令检查了该文件的默认内容和结构,了解了在进行 DNS 查询之前,它在将 IP 地址映射到主机名方面的作用。你看到了像 127.0.0.1 localhost 这样的标准条目是如何格式化的,以及注释的使用方式。
在检查之后,你通过使用 nano 文本编辑器添加自定义主机条目获得了实践技能,这是本地开发或网络测试中的常见任务。为了确认你的更改有效,你使用了 ping 命令来测试新的自定义主机名,验证了系统是否将其解析为你指定的 IP 地址。最后,你通过删除自定义条目以将系统恢复到原始状态完成了实验,演示了管理本地主机条目的完整生命周期。



