主机名 - 它们是关于什么的?

Ali*_*xel 58 linux hostname linux-networking fqdn

我最近“被迫”执行一些系统管理员工作,虽然这不是我绝对喜欢做的事情,但我一直在阅读、试验和学习很多东西。

我一直无法掌握服务器配置的一个基本方面 -主机名

例如,在 Ubuntu 中,应该像这样设置主机名(根据Linode 库):

echo "plato" > /etc/hostname
hostname -F /etc/hostname
Run Code Online (Sandbox Code Playgroud)

文件:/etc/hosts

127.0.0.1        localhost.localdomain        localhost
12.34.56.78      plato.example.com            plato
Run Code Online (Sandbox Code Playgroud)

我假设这plato是一个任意名称,即plato.example.comFQDN。

现在我的问题是:

  • 是强制性的吗?
  • 为了什么目的?
  • 它在哪里需要/使用?
  • 为什么我不能将“localhost”定义为每台机器的主机名?
  • 我是否必须为plato.example.comFQDN设置 DNS 条目?
  • 应该plato.example.com用作我的 IP 的反向 DNS 条目吗?

另外,是否有选择主机名的“最佳实践”?我见过人们使用希腊字母、行星名称甚至神话人物......当我们用完字母/行星时会发生什么?

如果这是一个愚蠢的问题,我很抱歉,但我从来没有对网络配置过于热情。

lar*_*sks 29

如今,一个系统可能有多个接口,每个接口都有多个地址,每个地址甚至可能有多个与之关联的 DNS 条目。那么“系统主机名”到底是什么意思呢?

许多应用程序在其他地方通信时将使用系统主机名作为默认标识符。例如,如果您在中央服务器上收集 syslog 消息,则所有消息都将使用原始系统的主机名进行标记。在理想的世界中,您可能会忽略这一点(因为您不一定要信任客户端),但是默认行为——如果您将所有系统命名为“本地主机”——将导致您收到一堆日志消息将无法与特定系统关联。

正如其他人指出的那样,如果您发现自己远程访问多个系统,系统主机名也是一个有用的标识符。如果您有五个窗口连接到名为“localhost”的系统,那么您将很难保持它们的正直。

同样,我们尝试使系统主机名与我们用于对系统进行管理访问的主机名相匹配。这有助于在提及系统时避免混淆(在电子邮件、对话、文档等中)。

关于DNS:

您希望为您的应用程序提供正确的正向和反向 DNS 条目以避免混淆。您需要一些转发条目(名称 -> ip 地址),以便人们能够方便地访问您的应用程序。具有反向条目匹配有多种用途——例如,如果您在日志中找到相应的 IP 地址,它可以帮助您正确识别应用程序。

请注意,这里我谈论的是“应用程序”而不是“系统”,因为——特别是对于 Web 服务器——一个系统上通常有多个 IP 地址,与不同的主机名和服务相关联。

/etc/hosts随着您管理越来越多的系统,尝试在您的文件中维护名称到 IP 的映射很快变得困难。本地主机文件很容易与 DNS 不同步,这可能会导致混淆,并且在某些情况下会出现故障(例如,因为某些东西试图绑定到系统上不再存在的 IP 地址)。

  • 我通常会忽略 `/etc/hosts` 以支持 DNS。这减少了我需要维护有关名称 -> 地址映射的信息的位置数量。在我维护的大部分系统中,`/etc/hosts` 只包含一个针对 `localhost` 的条目。 (8认同)

Ken*_*ert 10

您可以将每个主机名设置为“localhost”,但是alix@plato ~ $当您通过 ssh 管理机器时,将其放在命令提示符中非常方便。如果不这样做,远程管理服务器可能会变得非常混乱。

当您托管 Web 服务器或邮件服务器时,拥有正确的 FQDN 很重要。这些类型的服务器应用程序喜欢知道它们正在运行的“谁”。

为了选择一个好的命名方案,我建议你参考这个非常受欢迎的问题

仅当 FQDN 对另一台计算机有意义时,它才会变得有用。这分为三个层次:

  • 您本地网络上的一台计算机在他的主机文件中有一个指向该计算机的条目
  • 您的本地网络上运行着一台 DNS 服务器,并且每台使用它作为 DNS 服务器的本地计算机现在都知道柏拉图的名称。
  • 您注册了一个域名,现在全世界都知道 plato.alixaxel.com 名称指向的机器。

当向外界发送电子邮件或提供网页时,第三个是您想要的。对于大多数其他情况,您可以使用本地 DNS 甚至编辑主机文件。

在这种情况下,您可以创建一个域名(plato.alixnetwork 可以作为 FQDN),以便在您的本地网络中使用。拥有“alixnetwork”部分(域名)的唯一附加价值是当您希望将其与另一个本地网络区分开来时很方便。


Chr*_*s S 9

一个基本的概述。主机名只是指针;您可以指定一个特定的作为机器引用的主机名,但它可以有多个。一些服务,著名的邮件和 HTTP 依赖域名来知道服务应该位于何处以及如何访问它们。

很久以前,所有这些名称(同样只是指向 IP 地址的指针)都被记录在一个名为hosts. 随着系统的发展,他们无法在参与各种互连网络的所有相关计算机之间保持文件同步。于是发明了DNS系统。当您进行名称查找时,它仍会先检查主机文件,然后再检查 DNS 系统。Windows 也可能会检查其他系统,如 WINS 或 NetBIOS。

当您将条目放入hosts文件时,您并没有将其分配给计算机。将主机名分配为计算机使用的主机名是在配置文件(在 *nix 系统上)和 Windows 系统中的系统属性(Windows 系统也可以具有 NIC 特定后缀)中完成的。

hosts文件中的条目,如 DNS 系统,只是从主机名到 IP 地址的映射。为了使用主机名“localhost”(它没有什么特别之处,它与其他主机名一样都是主机名),它必须映射到环回接口(因此它始终指向本地计算机)。为确保此操作有效,所有计算机在其hosts文件中都带有此默认映射,但如果您不想使用该主机名,则可能会将其删除。

此外,正如其他人所指出的,为计算机分配主机名非常有用。连接到计算机后,您可以让它在登录时显示其主机名,或作为提示,或在任何其他地方显示。这样可以更轻松地识别您所连接的计算机。如果您在 DNS 中设置该主机名或将其放入所有hosts文件中,您将能够通过引用其主机名来连接到计算机,而不必一直知道其 IP 地址。(如果计算机使用 DHCP,则更有用,因为地址可能会更改。如果计算机更新 DNS,则 DNS 记录将指向新的 IP 地址;您仍然可以在不知道新 IP 地址的情况下进行连接,因为您知道 DNS 名称)。

hostsDNS 和 DNS都有许多其他用途,但我怀疑如果您阅读了所有这些内容,您的问题多于答案。

  • +1 表示尽管您最初对这个问题感到沮丧,但还是花时间写了一个好的答案。 (4认同)
  • @Alix,正确,如果条目在 DNS 中(并且 DNS 工作正常),那么将它放在 `hosts` 文件中将是多余的。此外,`hosts` 文件中的条目会覆盖 DNS(有时对测试很有用,但当你忘记它时会很烦人)。请注意,这完全与 A 和 AAAA 记录有关,还有其他类型的主机名记录,但为了清楚起见,我将它们排除在外。 (2认同)

Kha*_*led 5

任何主机都应该被赋予一个有意义的名字。主机名可以用于多种用途:

1- 它可以帮助您识别您目前正在从事的工作。

2- 使用/etc/hosts和/或 DNS 记录中配置的名称比记住许多 IP 地址更容易。

3- Localhost 是一个保留名称,用于引用当前机器(地址 127.0.0.1)。

4- DNS 记录有助于使您的服务器可公开访问。

为每个服务器选择一个合适的名称对您的管理有很大帮助。此外,它还可以帮助您的客户访问您的服务器。