主机名 – 它们是什么?

我最近被迫“执行一些系统pipe理员工作,而这绝对不是我一直在阅读,尝试和学习的东西。

服务器configuration有一个基本方面,我无法掌握 – 主机名

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

echo "plato" > /etc/hostname hostname -F /etc/hostname 

文件: / etc / hosts

 127.0.0.1 localhost.localdomain localhost 12.34.56.78 plato.example.com plato 

我认为plato是一个任意的名字, plato.example.com是FQDN。

现在我的问题是:

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

另外,有没有select主机名的“最佳做法”? 我曾经见过使用希腊字母,星球名称甚至神话人物的人……当我们用完字母/行星时会发生什么?

我很抱歉,如果这是一个愚蠢的问题,但我从来没有太热心networkingconfiguration。

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

    当许多应用程序在别处进行通信时,将使用系统主机名作为默认标识符。 例如,如果您要在中央服务器上收集系统日志消息,则这些消息将全部使用始发系统的主机名进行标记。 在一个理想的世界中,你可能会忽略这个(因为你不一定要信任客户端),但是默认的行为 – 如果你命名了所有的系统“localhost” – 会导致一堆日志消息将无法与特定系统相关联。

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

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

    关于DNS:

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

    请注意,在这里我正在讨论“应用程序”而不是“系统”,因为 – 尤其是在Web服务器上 – 通常在系统上有多个IP地址,与不同的主机名和服务相关联。

    在pipe理越来越多的系统时,试图在/etc/hosts文件中保持名称映射到ip映射很快变得困难。 本地主机文件与DNS的同步非常容易,可能会导致混淆,并且在某些情况下会导致故障(例如,尝试绑定到系统中不再存在的IP地址)。

    一个基本的概述。 主机名只是指针; 您可能会指定一个特定的名称作为机器引用的主机名,但可能有多个。 一些服务,值得注意的邮件和HTTP依靠域名来知道服务应该在哪里以及如何到达。

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

    当你把一个条目放在hosts文件中时,你不会把它分配给计算机。 为计算机分配一个主机名是在configuration文件(在* nix系统上)和Windows系统的系统属性(Windows系统也可以有NIC特定的后缀)中完成的。

    hosts文件中的条目,如DNS系统,只是从主机名到IP地址的映射。 为了使用主机名“localhost”(没有什么特别之处,它像所有的主机名一样)必须映射到回送接口(所以它总是指向本地计算机)。 为了确保工作正常,所有计算机都在hosts文件中包含这个默认映射,但如果您不想使用该主机名,它可能会被删除。

    而且,正如其他人所指出的,将主机名分配给计算机是非常有用的。 连接到计算机时,可以在login时显示主机名,也可以显示其提示或任意数量的其他位置。 这使识别您连接的计算机更容易。 如果您在DNS中设置该主机名或将其放入所有hosts文件中,您将能够通过引用其主机名来连接到计算机,而不必始终知道其IP地址。 (如果计算机使用的是DHCP,则地址可能会更改,如果计算机更新DNS,那么DNSlogging将指向新的IP地址;如果知道新的IP地址,您仍然可以连接,因为您知道DNS名称)。

    hosts和DNS有很多其他用途,但是如果您阅读了所有这些信息,我怀疑您有更多的问题而不是答案。

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

    拥有正确的FQDN对于托pipeWeb服务器或邮件服务器非常重要。 这些types的服务器应用程序喜欢知道他们正在运行的是谁。

    为了select一个好的命名scheme,我把这个非常受欢迎的问题提交给你。

    FQDN只有在对另一台计算机有意义时才有用。 这有三个层次:

    • 本地networking中的一台计算机在其主机文件中有一个指向该计算机的条目
    • 你的本地networking上运行着一台DNS服务器,现在每台使用它作为DNS服务器的本地计算机现在都可以通过名字知道柏拉图。
    • 你注册一个域名,现在全世界都知道什么机器的名字是plato.alixaxel.com指向的。

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

    在这种情况下,您可以创build一个域名(plato.alixnetwork可以很好地作为FQDN)在本地networking中使用。 拥有“alixnetwork”部分(域名)的唯一附加价值是方便的,当你有另一个本地networking你想区分它。

    曾经的主持人应该给一个有意义的名字。 主机名可以有多种用途:

    1-帮助您识别您目前在哪个工作。

    2-使用在/etc/hosts和/或DNSlogging中configuration的名称比记住许多IP地址更容易。

    3-本地主机是一个保留的名称来引用当前的机器(地址127.0.0.1)。

    4- DNSlogging对于使您的服务器可公开访问很有用。

    为每个服务器select一个合适的名称可以帮助您pipe理更多。 此外,它可以帮助您的客户访问您的服务器。

    正如一个侧面说明:正确地前进和反向DNSparsing是这个星球上每个IT安装的绝对基石。 永远不要低估维护良好的DNS和正确的主机名parsing的必要性!

    免责声明:主要的问题是关于Linux系统,所以如果你对这个问题的Windows方面不感兴趣的话,可以随意忽略这个答案。

    无论如何,在Windows系统中,除了其他答案中提到的所有要点之外,主机名实际上是由操作系统本身用于networking和身份validation的目的; 特别:

    • 每个系统,无论是否为域成员,都需要在同一个networking (即同一个IP子网)中拥有唯一的名称,否则命名冲突将随之而来,各种networking服务(主要是文件和打印共享)将不会工作。
    • 不pipenetworking边界如何,所有属于同一个Active Directory域的系统都必须具有唯一的名称。
    • 在域环境中,系统的主机名作为安全主体,可用于远程authentication(只要将其视为机器的用户帐户); 它可以被分配权限和访问权限,并可以出于安全目的而被放置在组中。 这将影响使用内置的LocalSystemNetworkService用户帐户在系统上运行的所有进程,这些用户帐户可以使用正在运行的系统的凭据对其他系统进行身份validation; 这允许SystemA上的NetworkService作为NetworkService运行的进程通过将该文件夹的权限授予SystemA的用户帐户来访问SystemB上的共享文件夹。