是否应该在 /etc/hostname 中使用 FQDN 而不是 hostname?

是否应该在 /etc/hostname 中使用 FQDN 而不是 hostname?

正如我在手册页中看到的,建议将主机名(不带域名)放入/etc/hostname。例如,主持人代替主机.域名子目录.域名tld。 但是,据我所知,有些软件依赖FQDN/etc/hostname

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

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

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

答案1

修改后的答案:

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

127.0.0.1 localhost
127.0.1.1 terrance-ubuntu.lan terrance-ubuntu

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

拆分该行,您可以看到我同时分配了terrance-ubuntu.lan,这是我的 FQDN 本身,用于覆盖 DNS,以便应用程序知道不要离开我的计算机,以及terrance-ubuntu,这是主机名,同样,以便应用程序知道不要离开我的计算机或 127.0.0.1 (本地主机)。将我的系统的主机名指定为127.0.1.1不会影响网络上其他计算机查找我的主机。如果 DNS 正常工作,它们将看到我的主机名为10.0.0.100。使用 的原因127.0.1.1是为了让我的应用程序能够更快地找到我的系统,因为它知道我的系统不在我的网络的其他地方。我的实际主机名是.lan我的 FQDN,.lan实际上是我通过路由器设置的域,路由器也是我网络上的另一个 DNS 服务器。

现在,假设本地网络上的 DNS 服务未将主机名或 FQDN 分配给 IP 地址,但您知道本地网络上主机的 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.lan hp_printer

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

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

在此处输入图片描述

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

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 lan

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

答案2

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

127.0.1.1        thishost.mydomain.org    thishost

根据hosts文件的手册。

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

答案3

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

FQDN
   系统的 FQDN(完全限定域名)是解析器(3)返回主机名,例如,ursula.example.com
   它通常是主机名,后跟 DNS 域名(部分
   第一个点之后)。您可以使用以下方式检查 FQDN:主机名 --fqdn  或者
   域名使用dns域名

   您无法使用以下方式更改 FQDN主机名或者dns域名

   设置 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

因此,在这种情况下,只需让安装程序完成其要做的事情。

相关内容