这是在我的家庭局域网上,它有一个 DNS 服务器(Bind9)和一个 DHCP 服务器(dhcpd)。
我的台式机从 DHCP 服务器获取其 IP 地址,其中包括mylan
.
所以,我的台式机的 FQDN 是mydesktop.mylan
.
Debian 约定似乎是/etc/hostname
应该只包含主机的短名称,所以mydesktop
.
但是呢/etc/hosts
?
条目应该是什么,short 或 FQDN?
127.0.0.1 localhost
127.0.1.1 mydesktop.mylan mydesktop
有约定吗?推荐?
如果 FQDN 在其中/etc/hosts
不会“覆盖”DNS 解析吗?这有关系吗?
如果您查看hostname的联机帮助页,它可能会为您指明正确的方向。还从 Linux Network Administrator's Guide, 2nd Edition 中设置主机名和配置名称服务以及 O'reilly 的名称服务和解析器配置很好地解释了 linux 中的名称解析问题。我想这是足够好的资源来帮助你开始。
问题是,互联网以及名称解析和 dns 的概念随着时间的推移而发展,我们今天发现的许多事情都有历史原因。
要回答您的问题,您可以简单地在
/etc/hostname
文件中设置您的主机规范名称。内核可以通过hostname
命令访问该名称。现在这通常与dns无关。该
/etc/hosts
文件的存在是为了帮助少数客户端(以及本地系统)进行名称解析,并且当没有可用的 dns 服务器时。现在,文件中定义了 linux 系统将如何决定使用什么来进行名称解析
/etc/nsswitch.conf
。文件的部分内容示例可能如下所示:第一行
hosts
表示,系统会/etc/hosts
先查询文件,再查询dns服务器进行名称解析。如您所见,如果您有一个可用的 dns,则无需在
/etc/hosts
文件中添加主机名条目。哪个优先,由/etc/nsswitch
文件定义。/etc/hosts 文件的限制是,它仅对本地系统可见,并且必须手动维护它(编辑/添加/删除 ip/主机名),并且无法帮助网络中的其他系统从中解析主机名文件。这就是 LAN 中所有计算机都可以访问的集中式主机文件的想法出现的原因,并由此演变出了 DNS 服务器的想法。
我总是使用本地主机名和 FQDN 配置我的 /etc/hosts 文件。
根据 /etc/hosts手册页:
是的,您的主机文件将始终覆盖 DNS 解析,因为这是您的本地 DNS 解析器首先检查的内容。但是,这在我能想到的任何网络配置中都不是问题,除非您出于某种原因需要您的客户端要求 DNS 服务器解析客户端自己的主机名。