了解主机名和 /etc/hosts

了解主机名和 /etc/hosts

在 /etc/hostname 中,我有myname.

在 /etc/hosts 中,我有:

127.0.0.1   localhost.localdomain   localhost myname
::1     localhost.localdomain   localhost myname

我对主机名的真正含义及其用途有一个模糊的了解。

这些更精确的问题可以帮助我更好地理解它:

  1. 上面示例中我的主机名到底是什么?myname或者是其他东西?如果我改为myname.domain.comin /etc/hostname,那么我的真实主机名是什么?

  2. 在示例中,命令hostname返回myname,而命令hostname -f返回localhost.localdomain。我认为这/etc/hosts只是名称和 IP 地址之间的映射。它在这里似乎还有另一个功能。什么是 FQDN 以及它的用途是什么?如何检索?为什么localhost.localdomain

  3. 如果我进去的话myname.domain.com/etc/hostnamehostname -f会回来的myname.domain.com。为什么?

  4. 为什么这些文件中的 fqdn 不以点结尾?

  5. hostname -d和 是等价的吗dnsmydomain

  6. 在什么情况下可以使用我的主机名 ( myname) 以及何时必须使用我的 FQDN ( localhost.localdomain)?

答案1

  1. /etc/hostname包含本地运行的应用程序已知的机器名称。/etc/hostsDNS 将名称与 IP 地址关联起来。myname可以映射到机器可以访问的任何IP地址,但是将其映射到127.0.0.1是不美观的。
  2. 不是/etc/hosts,但/bin/hostname具有另一个功能-f
  3. 因为/etc/hosts可以超越常识。谨慎编辑它,不要在临时补丁和实验后留下垃圾。
  4. 两种风格(⋯.顶级域名.和….顶级域名)是可以接受的。前者是明确的,而后者是普遍存在的。
  5. 不知道dnsmydomain是什么,但可能性不大。从技术上讲,在其中查找某些内容/etc/hosts并不是“DNS”。
  6. 请记住这一点 1. 主机名 – 适用于本地运行的应用程序;也适用于诸如 SMB (samba) 之类的特殊网络协议。 FQDN(如果不是伪造的或占位符,如localhost.localdomain)——用于从外部访问机器。 FQDN 在使用的​​地方必须是可解析的。

答案2

/etc/主机名/etc/主机很简单,但又不那么简单……

如何快速设置 Debian/etc/hostname/etc/hosts

1)编辑/etc/主机名

有两种有效的方法可以进行设置。

要么做到:

  • machine,即该处理器的一个简单的单字名称。
    例如,“ joe”可能是您自行选择的机器名称。
    请注意,这将需要 /etc/hosts 中的别名,如下所述。

或者

  • machine.domain.net,即完全限定域名 (FQDN)。
    例如, ' joe.xyz.com'。
    (假设您有一条 DNS 主机“A”记录,从 joe.xyz.com 指向您 joe 的 IP 地址,即在您名为 joe 的计算机上。通常您会在购买域名的位置设置此记录。更多信息请参阅片刻。)

一次/etc/主机名设置好了,那么下一步就是获取命令hostname --all-fqdndnsdomainname为了正常工作,按顺序如下:

2)编辑/etc/主机

其中有一行该主机的完全合格域名,例如“machine.domain.net”,以其本机的 IP 地址(可能来自动态 IP 地址服务器)为前缀,如下所示:

#   IP           FQDN (CANONICAL_HOSTNAME)   ALIASES
#-------------- --------------------------- ------------------------
192.168.1.14    Joe.xyz.com                 joe
  • 首先,请注意大写或小写并不重要这里。 提示:然而,设置一些上限可以让我们注意到接下来的步骤中事情的来源。所以我已经大写了Joe。

  • 另请注意对于简单的hostname(即 /etc/hostname = 'machine')以正确生成 FQDN,别名名为“machine”的文件必须存在于 /etc/hosts 中。这就是别名的原因有没有。 (顺便说一句,即使您不使用该别名,也可以使用它。)否则不需要或不使用该别名。

  • 另请注意,“domain.net”必须是可解析的,即 DNS 中必须存在其 A 记录。这就是所谓的‘可解析的'(即通过 DNS 解析器)。

3) 现在通过运行以下命令将 /etc/hostname 和 /etc/hosts 中的这些新设置安装到内核中:

    $ /etc/init.d/hostname.sh       # Or by rebooting

4) 测试主机名

$ hostname      # Reports the hostname previously read from in /etc/hostname.
joe

或者

$ hostname
joe.xyz.com

尖端:

  • 请注意,这不是 /etc/hostname 当前的内容(就像您现在再次编辑它一样),而是 /etc/init.d/hostname.sh 脚本之前读取的内容(可能是重新启动的结果)。

  • 另请注意,“j”是小写的,因此这表明它来自 /etc/hostname,而不是 /etc/hosts。

5) 测试 FQDN

$ hostname --all-fqdn   #reports the FQDN(s) matched in /etc/hosts.
Joe.xyz.com             #  It searches /etc/hosts for the joe in /etc/hostname.
                        #  Notice that the 'J' is uppercase.  
                        #     This suggest it came from /etc/hosts.

6)测试DNS域名

$ dnsdomainname         #reports the computed DNS doman name    
xyz.com                 #  (i.e. the right most part of the FQDN; 
                        #    the part to the right of the first, left most, dot)
                        #  This is coming from Joe.xyz.com in /hosts, 
                        #    after 'Joe.' is removed.

现在这应该会让设置网络和电子邮件服务器变得更加容易。

答案3

我非常讨厌有人告诉我阅读手册,但在这种情况下,请务必查看主机名的手册页,大多数(如果不是全部)问题都应该得到解答。它写得比我能解释的要好得多。

为了提供一些帮助,针对您的问题的一些摘录如下: - 您的主机名是您在 /etc/hosts 中看到的内容。 - 返回的 FQDN 基于解析器返回的内容,因此您会看到 /etc/hosts 中的值被返回,因为解析器首先检查主机文件,然后执行任何必要的 DNS 查询。

我不相信主机名手册页中提到的一个问题(基于我自己重新阅读的手册页)是文件中的条目不以点结尾的原因。

该约定用于处理 DNS 记录。主机名和主机文件实际上不是 DNS 记录。如果您在 bind 中配置这些条目以解析 DNS 查找,那么可以使用点(查看这个很好的资源:http://www.zytrax.com/books/dns/apa/dot.html)。

另外,请记住,所有这些值都不会从系统中广播。因此,如果您希望另一个系统基于 FQDN 进行访问,则它基于该其他系统上的主机文件,或者缺少基于外部系统在 FQDN 上执行的 DNS 查找的主机条目,以允许其解析回系统。

答案4

在回答

如果我的 IP 是动态的 (DHCP) 并且不时发生变化怎么办?我应该在 /etc/hosts 中使用哪个地址作为我的名字?

首先,我要指出,/etc/hosts 是安装它的主机的名称到地址映射的静态定义,并且仅由该主机用于将名称转换为 IP 地址。

因此,有两个观点需要考虑 - 主持人“我的名字”和其他人。

对于该“myhost”主机,可以使用“localhost”引用当前主机(在 /etc/hosts 中定义为 127.0.0.1),或者将“myname”添加到定义 localhost 的 /etc/hosts 行,以便“myname” ' 总是映射到本地主机。就像这样:

127.0.0.1 本地主机 我的名字

然后,无论给接口提供什么 IP 地址,您都将始终拥有一个可用的地址(额外的好处是您不需要点击硬件即可从“myname”对话到“myname”)。

现在,当“myhost”具有动态 IP 地址时,要允许其他主机找到“myhost”,您必须使用 DNS,并且所述 DNS 服务器必须处理 DHCP 分配的映射。 (嗯,好吧,我还能想到其他解决方案,但恕我直言,我想到的所有解决方案都属于“愚蠢”类别。好吧,你可以对主机做一些事情,让 IT 告诉 DNS它在哪里,但这是一个值得在这里完全不同的问题/答案流的问题,恕我直言)

相关内容