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


10

如我在手册页中所读,建议将hostname(不带域名)放入/etc/hostname。例如,使用host代替host.domainsub.domaintld。 但是,据我所知,某些软件依赖于FQDNin /etc/hostname

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

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

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


1
在哪里找到有人说您将FQDN放在/ etc / hostname文件中?该文件仅用于系统的主机名。
Terrance

当在互联网上阅读有关它的材料时遇到了某个地方。在哪里应该指定他的FQDN?
Bulat M.

@Terrance,实际上,我想从该领域经验丰富的人员那里获得答案,以便他们从一开始就展示如何正确地做到这一点。写一个答案。在没有/ etc / hostname的发行版中该怎么办?
Bulat M.

Answers:


7

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

127.0.1.1        thishost.mydomain.org    thishost

根据主机文件的手册。

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


1
FIX:谢谢,但是,这将是有关在/ etc / hostname中指定/不指定FQDN的优缺点的信息。我知道您的解决方案:它是一些程序的存根,这些程序希望将FQDN解析为某种内容(与什么地址无关)才能正常工作。
Bulat M.

12

修改后的答案:

主机本身不处理实际的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

这些条目不是特定于发行版的。 所有操作系统的这些行都使用相同的格式。只是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。我将对IP地址和主机名执行ping操作,然后添加到中/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

现在,我也可以使用我给它的名称而不是IP地址访问我的打印机设置网页,因为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

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


为什么将/ etc / hosts中的FQDN映射到127.0.1.1?
Bulat M.

1
@BulatM。请参阅我的修订答案。
Terrance

您能否解释一下/etc/resolv.conf中的搜索关键字和域关键字之间的区别?我正在阅读resolv.conf的手册页,仍然不太清楚。
Bulat M.

并且可以将两者都包括在内吗?您能提出有用的有效案例吗?谢谢。
Bulat M.

1
@BulatM。单击我的答案中的链接,它们将带您获得有关事物的更多信息。像en.wikipedia.org/wiki/Resolv.conf一样,它提供了更多的信息。我是在这里帮助您,而不是教您。我没有薪水,因为这都是志愿者,所以请您自己研究。
Terrance

4

讨论的手册hostname(1)(我强调黑体字的段落):

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

   您不能使用主机名dnsdomainname更改FQDN 。

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

          127.0.1.1 ursula.example.com ursula

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

   因此,这取决于解析器的配置(通常在
   /etc/host.conf)如何进行更改。通常,主机文件被解析
   在DNS或NIS之前,因此最常见的是在以下位置更改FQDN:
   / etc / hosts。

而且,如果在安装过程中将FQDN作为主机名,它将仅将第一个组件写入/etc/hostnameFQDN并将其保留在中/etc/hosts

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


它是否(在/ etc / hosts中包含127.0.1.1 ursula.example.com ursula)是特定于Debian \ Ubuntu的,还是可以同样适用于任何其他发行版的?
Bulat M.

1
关于其他发行版的Dunno。不过,您可以在Arch和Cent OS中执行相同的操作。有关其他发行版的问题应在Unix&Linux上提出
muru
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.