在您的 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-resolved 或 resolvconf 这样的工具现在通常会处理这个问题。
# 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