在你对网络进行子网划分后,你应该准备使用以下文件进行一些简单的主机名解析:/etc/hosts文件。 如果你不打算使用 DNS 或 NIS 进行地址解析,你必须将所有主机都放在hosts文件中。
即使你希望在正常操作期间运行 DNS 或 NIS,你也应该在以下文件中包含所有主机名的一个子集:/etc/hosts。 你应该进行某种名称解析,即使在没有网络接口运行时,例如在启动时。这不仅是为了方便,而且还允许你在你的网络rc脚本中使用符号主机名。 因此,当更改 IP 地址时,你只需复制一个更新的hosts文件到所有机器并重启,而不是单独编辑大量的rc文件。 通常,你将所有本地主机名和地址放在hosts中,并添加任何使用的网关和 NIS 服务器的地址。[1]
你应该确保你的解析器仅使用来自hosts文件中的信息进行初始测试。 你的 DNS 或 NIS 软件附带的示例文件可能会产生奇怪的结果。 为了使所有应用程序在查找主机的 IP 地址时专门使用/etc/hosts,你必须编辑/etc/host.conf文件。 通过在以关键字 order 开头的行前面加上井号来注释掉它们,并插入以下行:
order hosts |
解析器库的配置在第 6 章中详细介绍。
Thehosts文件每行包含一个条目,由 IP 地址、主机名以及主机名的可选别名列表组成。 字段由空格或制表符分隔,地址字段必须从第一列开始。 井号 (#) 后的任何内容都被视为注释并被忽略。
主机名可以是完全限定的,也可以是相对于本地域的。 对于 vale,你通常会在hosts文件中输入完全限定的名称 vale.vbrew.com 和 vale 本身,以便它以其官方名称和较短的本地名称为人所知。
这是一个hosts文件在 Virtual Brewery 可能的示例。 包括两个特殊名称,vlager-if1 和 vlager-if2,它们给出了在 vlager 上使用的两个接口的地址
# # Hosts file for Virtual Brewery/Virtual Winery # # IP FQDN aliases # 127.0.0.1 localhost # 172.16.1.1 vlager.vbrew.com vlager vlager-if1 172.16.1.2 vstout.vbrew.com vstout 172.16.1.3 vale.vbrew.com vale # 172.16.2.1 vlager-if2 172.16.2.2 vbeaujolais.vbrew.com vbeaujolais 172.16.2.3 vbardolino.vbrew.com vbardolino 172.16.2.4 vchianti.vbrew.com vchianti |
就像主机的 IP 地址一样,有时你也应该对网络号使用符号名称。 因此,hosts文件有一个名为/etc/networks的配套文件,它将网络名称映射到网络号,反之亦然。 在 Virtual Brewery,我们可能会安装一个networks像这样的文件:[2]
# /etc/networks for the Virtual Brewery brew-net 172.16.1.0 wine-net 172.16.2.0 |
[1] | 只有当你使用 Peter Eriksson 的 NYS 时,你才需要 NIS 服务器的地址。 其他 NIS 实现仅在运行时通过使用 ypbind 定位其服务器。 |
[2] | 注意,networks中的名称不得与hosts文件中的主机名冲突,否则某些程序可能会产生奇怪的结果。 |