应该在 /etc/hostname 而不是主机名中使用 FQDN 吗?

Bul*_* M. 14 dns hostname etc

正如我在手册页中读到的那样,建议将主机名(不带域名)放在/etc/hostname. 例如,host而不是host.domainsub.domaintld。 但是,据我所知,某些软件依赖FQDN/etc/hostname.

/etc/hostname 在 Debian/Ubuntu 机器上应该指定什么?

如果不是 FQDN,应该在哪里指定 FQDN?

我知道,问题有点老,但没有找到明确的答案。有人说主机名,有人说 - FQDN。谢谢。

Ter*_*nce 14

修改后的答案:

主机本身不处理实际的 FQDN。这是由DNS处理的。FQDN(完全限定域名)由 DNS 将名称转换为 IP 地址来处理。使用该/etc/hosts文件,您实际上是在覆盖 DNS 服务器。计算机/etc/hosts首先查看文件以查看是否为主机名到 IP 地址定义了条目。中的条目/etc/hosts如下所示:

127.0.0.1 localhost
127.0.1.1 terrance-ubuntu.local terrance-ubuntu
Run Code Online (Sandbox Code Playgroud)

这些条目不是特定于发行版的。 所有操作系统对这些行使用相同的格式。只是hosts文件的位置发生了变化。Linux,通常位于/etc/文件夹中,而在 Windows 中,它通常位于C:\Windows\System32\drivers\etc\文件夹中。

打破这条线,你可以看到我同时分配了terrance-ubuntu.local,这是我的 FQDN 本身来覆盖 DNS,以便应用程序知道不会离开我的计算机,以及terrance-ubuntu,这是主机名,再次让应用程序知道不会离开我的计算机或127.0.0.1(本地主机)。为我的系统分配我的主机名127.0.1.1对在网络上找到我的主机的其余计算机没有影响。如果 DNS 工作正常,他们会看到我的主机名为10.0.0.100. 使用的原因127.0.1.1是我的应用程序可以更快地找到我的系统,因为它会知道我的系统不在我的网络上的其他地方。我的实际主机名.local是我的 FQDN,.local 实际上是我通过我的路由器设置的域,它也是我网络上的另一个 DNS 服务器。

现在,假设本地网络上的 DNS 服务没有为 IP 地址分配主机名或 FQDN,但您知道本地网络上主机的 IP 地址是什么。然后,您将在您的/etc/hosts文件中分配该主机,这样您就无需在每次访问该主机时都输入该主机的 IP 地址。主机可能是工具服务器、打印机或其他一些网络连接系统。像往常一样将条目添加到/etc/hosts文件中。

例如,我将使用我的网络连接打印机。它的静态 IP 为 10.0.0.253。虽然我不知道它的名字。为此,我想称之为hp_printer。我将 ping 其 IP 和主机名,然后添加到/etc/hosts.

terrance@terrance-ubuntu:~$ ping -c 2 10.0.0.253
PING 10.0.0.253 (10.0.0.253) 56(84) bytes of data.
64 bytes from 10.0.0.253: icmp_seq=1 ttl=255 time=0.326 ms
64 bytes from 10.0.0.253: icmp_seq=2 ttl=255 time=0.334 ms

terrance@terrance-ubuntu:~$ ping -c 2 hp_printer
ping: unknown host hp_printer

terrance@terrance-ubuntu:~$ sudo vi /etc/hosts
10.0.0.253 hp_printer.local hp_printer

terrance@terrance-ubuntu:~$ ping -c 2 hp_printer
PING hp_printer.local (10.0.0.253) 56(84) bytes of data.
64 bytes from hp_printer.local (10.0.0.253): icmp_seq=1 ttl=255 time=0.334 ms
64 bytes from hp_printer.local (10.0.0.253): icmp_seq=2 ttl=255 time=0.303 ms
Run Code Online (Sandbox Code Playgroud)

现在,我还可以使用我给它的名称而不是 IP 地址来访问我的打印机设置的网页,这样更容易记住:

在此处输入图片说明

DNS 还使用您的/etc/resolv.conf文件来帮助查找主机名。它是解析器的配置文件。它提供了搜索域,因此您在寻找主机时不必一直指定 FQDN。它还提供本地网络的 DNS 或名称服务器的 IP 地址。下面search一行显示了local我的域名。

terrance@terrance-ubuntu:~$ cat /etc/resolv.conf 
# 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 10.0.0.1
search local
Run Code Online (Sandbox Code Playgroud)

希望这有助于更好地了解 DNS 和 FQDN 的工作原理。


Ado*_*ist 7

在 /etc/hostname 文件中,您只使用主机名。您可以设置的 FQDN:/etc/hosts 可能如下所示:

127.0.1.1        thishost.mydomain.org    thishost
Run Code Online (Sandbox Code Playgroud)

根据主机文件的手册。

http://man7.org/linux/man-pages/man5/hosts.5.html


mur*_*uru 5

手册hostname(1)讨论了这一点(我强调了粗体段落):

FQDN
   系统的 FQDN(完全限定域名)是
   所述分解器(3)返回的主机名,例如,ursula.example.com。
   它通常是主机名后跟 DNS 域名(部分
   在第一个点之后)。您可以使用主机名 --fqdn  或
   使用dnsdomainname的域名。

   您不能使用hostnamednsdomainname更改 FQDN 。

   设置 FQDN 的推荐方法是将主机名设为
   使用 /etc/hosts、DNS 或 NIS 的完全限定名称的别名。
   例如,如果主机名是“ursula”,则可能会有一行
   /etc/hosts 读取

          127.0.1.1 ursula.example.com

   从技术上讲:FQDN 是 getaddrinfo(3) 为主机返回的名称
   gethostname(2) 返回的名称。DNS域名是后面的部分
   第一个点。

   因此它取决于解析器的配置(通常在
   /etc/host.conf) 如何更改它。通常解析hosts文件
   在 DNS 或 NIS 之前,因此最常见的是更改 FQDN
   /etc/hosts.

如果你给一个FQDN在安装过程中的主机名,将其写入只有拳头组件/etc/hostname,并保持中的FQDN /etc/hosts

因此,在这种情况下,只需让安装程序执行它的操作即可。