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

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

我的台式机从包含mylansearch域的DHCP服务器获取其IP地址。

所以,我的桌面机器的FQDN是mydesktop.mylan

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

但是/etc/hosts呢?

应该input什么,简称或FQDN?

 127.0.0.1 localhost 127.0.1.1 mydesktop.mylan mydesktop 

有一个约定吗? 一个build议?

如果FQDN在/etc/hosts不是会“覆盖”DNSparsing? 那很重要吗?

如果你看主机名的主页 ,可能会指向你正确的方向。 同时设置主机名和configuration名称服务和O'Reilly 名称服务和parsing器configuration从Linuxnetworkingpipe理员指南,第2版解释在Linux的名称parsing问题很好。 我想这是足够好的资源来帮助你开始。

事情是,互联网和名称parsing和DNS的想法随着时间的推移发展,我们今天发现的许多事情都有历史原因。

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

/etc/hosts文件的存在是为了帮助less数客户端(以及本地系统)的名称parsing以及何时不存在dns服务器。

现在,在/etc/nsswitch.conf文件中定义了Linux系统如何决定使用哪个命名parsing。 该文件的部分内容示例可能如下所示:

 # /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服务器进行名称parsing。

正如你所看到的,如果你有一个工作的DNS,你不需要在/etc/hosts文件中添加主机名条目。 哪些将具有优先级,由/etc/nsswitch文件定义。

对/ etc / hosts文件的限制是,它仅对本地系统可见,并且必须手动维护(编辑/添加/删除ip /主机名),并且不能帮助networking中的其他系统parsing主机名文件。 这是一个中央化的主机文件,将被所有的计算机在局域网访问的想法,进来,并从那里演化了DNS服务器的想法。

我一直使用本地主机名和FQDNconfiguration我的/ etc / hosts文件。

根据/ etc / hosts的manpage :

  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中是不是会“覆盖”DNSparsing? 那很重要吗?

是的,您的主机文件将始终覆盖DNSparsing,因为它是您的本地DNSparsing器检查的第一件事。 但是,这不应该成为我能想到的任何networkingconfiguration的问题,除非您需要您的客户端由于某种原因要求DNS服务器parsing客户端自己的主机名。