正如我在手册页中看到的,建议将主机名(不带域名)放入/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文件的手册。
答案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
。
因此,在这种情况下,只需让安装程序完成其要做的事情。