当我的 LAN 有 DNS 时,在 Debian Jessie 上设置主机名的正确方法是什么?

当我的 LAN 有 DNS 时,在 Debian Jessie 上设置主机名的正确方法是什么?

这是我的家庭局域网,它有一个 DNS 服务器(Bind9)和一个 DHCP 服务器(dhcpd)。

我的台式机从 DHCP 服务器获取其 IP 地址,该服务器包含一个搜索域mylan

因此,我的台式机的 FQDN 是mydesktop.mylan

Debian 惯例似乎是应该/etc/hostname只包含主机的简称,所以mydesktop

但是关于/etc/hosts

该条目应该是什么,短的还是 FQDN?

127.0.0.1  localhost
127.0.1.1  mydesktop.mylan  mydesktop

有约定吗?有建议吗?

如果 FQDN 在其中,/etc/hosts那么这不会“覆盖”DNS解析吗?这有关系吗?

答案1

如果你查看主机名,也许它可以为你指明正确的方向。另外设置主机名并配置名称服务和奥赖利的名称服务和解析器配置Linux 网络管理员指南第 2 版很好地解释了 Linux 中的名称解析问题。我想这些资源足以帮助您入门。

事实是,互联网和名称解析以及 DNS 的概念是随着时间的推移而演变的,我们今天发现的许多事物都有历史原因。

为了回答您的问题,您可以简单地在文件中设置主机规范名称/etc/hostname。内核可以通过hostname命令访问该名称。现在这与 DNS 一般无关。

/etc/hosts文件存在的原因是为了帮助少数客户端(以及本地系统)进行名称解析,并且当没有可用的 DNS 服务器时。

现在,Linux 系统将如何决定使用什么来进行名称解析已在文件中定义/etc/nsswitch.conf。该文件的示例部分内容可能如下所示:

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# Information about this file is available in the `libc6-doc' package.

hosts:          files dns

第一行的hosts意思是系统会/etc/hosts先查阅该文件,然后再查阅dns服务器进行名称解析。

如您所见,如果您有一个有效的 DNS,则无需在/etc/hosts文件中添加主机名条目。而哪个将具有优先级,则由文件定义/etc/nsswitch

/etc/hosts 文件的局限性在于,它仅对本地系统可见,并且必须手动维护它(编辑/添加/删除 ip/主机名),并且无法帮助网络中的其他系统从该文件解析主机名。这就是局域网中所有计算机都可以访问的集中式主机文件的想法的由来,从那里发展出了 DNS 服务器的想法。

答案2

我始终使用本地主机名和 FQDN 配置我的 /etc/hosts 文件。

根据 /etc/hosts手册页

   127.0.1.1       thishost.mydomain.org  thishost
   192.168.1.10    foo.mydomain.org       foo
   192.168.1.13    bar.mydomain.org       bar
   146.82.138.7    master.debian.org      master

如果 FQDN 位于 /etc/hosts 中,那么这不会“覆盖”DNS 解析吗?这有关系吗?

是的,您的 hosts 文件将始终覆盖 DNS 解析,因为它是本地 DNS 解析器首先检查的内容。但是,在我看来,这在任何网络配置中都不应该成为问题,除非出于某种原因,您需要客户端请求 DNS 服务器解析客户端自己的主机名。

相关内容