4. /etc/hosts 文件

在您的 Linux 系统查询 DNS 服务器解析主机名之前,它会首先在本地机器上查找映射。这个初始检查是名称解析过程的一个基本部分。

/etc/hosts 的作用

用于本地查找的主要文件是 /etc/hosts。这个简单的文本文件包含主机名到 IP 地址的静态映射。etc hosts 文件的结构很直接,每一行包含三个字段:IP 地址、规范主机名以及该主机的可选别名。

这是一个典型的 etc host linux 文件示例:

pete@icebox:~$ cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       icebox

您几乎总能默认找到 localhost 地址的映射。该文件是大多数 Linux 发行版的标准特性,包括 Debian hosts

编辑 etc hosts linux 文件

您可以手动编辑 /etc/hosts 文件来创建自己的映射。我们来尝试一个有趣的例子。将以下行添加到您的文件中:

123.45.6.7  www.google.com

保存文件后,尝试在您的网络浏览器中访问 www.google.com。您会发现它无法工作。这是因为我们将 www.google.com 映射到了一个错误的 IP 地址。由于您的系统首先检查本地 /etc/hosts 文件,它使用了我们错误的映射,而从未继续查询 DNS 服务器以查找正确的地址。要修复此问题,只需删除您添加的行即可。

虽然旧系统使用 /etc/hosts.deny/etc/hosts.allow 进行访问控制,但这种方法在很大程度上已经过时。现代安全实践依赖于配置防火墙规则以实现强大的保护。

本地 DNS 服务器配置

传统上,/etc/resolv.conf 文件用于指定用于查找的 DNS 名称服务器。然而,随着系统管理的进步,该文件通常不再需要手动管理。如下例所示,该文件由另一个服务自动生成。要管理 DNS 名称服务器映射,您应该参考特定发行版的文档,因为像 systemd-resolvedresolvconf 这样的工具现在通常会处理这个问题。

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
search localdomain

登录以保存您的学习进度

登录

练习

实践造就完美!以下是一些实践实验,以加强您对本地主机名解析和 DNS 查询的理解:

  1. 在 Linux 中管理本地主机名解析 - 练习编辑 /etc/hosts 文件以管理本地主机名解析,这是在 DNS 查询之前的一个关键步骤。
  2. 使用 dig 和 nslookup 在 Linux 中查询 DNS 记录 - 学习使用 dignslookup 等基本 Linux 工具查询 DNS 记录,以了解您的机器如何解析外部名称。

这些实验将帮助您在实际场景中应用这些概念,并建立对主机名解析和 DNS 的信心。

测验

What file is used to map hostnames to IP addresses on our machines? (Please answer in English, paying attention to case sensitivity)