设置主机名:FQDN 还是短名称?

设置主机名:FQDN 还是短名称?

我注意到,Red Hat/CentOS 和 Debian/Ubuntu 系统之间设置系统主机名的“首选”方法有着根本的不同。

CentOS 文档RHEL 部署指南说主机名应该是 FQDN

HOSTNAME=<value>,其中<value>应该是完全限定域名 (FQDN),例如hostname.example.com,但可以是任何必要的主机名。

RHEL 安装指南稍微有点含糊:

安装程序会提示您输入此计算机的主机名,可以是 完全合格域名(FQDN)格式主机名.域名 或者以以下格式的短主机名主机名

Debian 参考说主机名不应使用 FQDN

3.5.5. 主机名

内核维护系统主机名. 运行级别 S 中的 init 脚本,符号链接到“/etc/init.d/主机名.sh“在启动时设置系统主机名(使用主机名命令)存储在“/etc/主机名“。该文件应该包含仅有的系统主机名,而不是完全限定的域名。

我还没有看到 IBM 关于使用哪种产品的具体建议,但是一些软件似乎有偏好。

我的问题:

  • 在异构环境中,是使用供应商建议更好,还是选择一个并在所有主机上保持一致?
  • 您遇到过哪些软件对主机名设置为 FQDN 还是短名称很敏感?

答案1

我会选择在整个环境中采用一致的方法。这两种解决方案都运行良好,并且与大多数应用程序兼容。不过,在可管理性方面存在差异。

我使用短名称作为 HOSTNAME 设置,并将 FQDN 设置/etc/hosts为服务器 IP 的第一列,后跟短名称。

我遇到的软件包很少强制或显示两者之间的偏好。我发现对于某些应用程序,特别是日志记录,短名称更简洁。也许我运气不好,看到了像这样的内部域server.northside.chicago.rizzomanufacturing.com。谁想在日志或shell 提示符

有时,我会参与公司收购或重组,此时内部域和/或子域会发生变化。在这些情况下,我喜欢使用短主机名,因为日志记录、启动、打印、系统监控等不需要完全重新配置即可适应新域名。

名为“rizzo”且内部域为“ifp.com”的服务器的典型 RHEL/CentOS 服务器设置如下所示:

/etc/sysconfig/network:
HOSTNAME=rizzo
...

-

/etc/hosts:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

172.16.100.13   rizzo.ifp.com rizzo

-

[root@rizzo ~]# hostname 
rizzo

-

/var/log/messages snippet:
Dec 15 10:10:13 rizzo proftpd[19675]: 172.16.100.13 (::ffff:206.15.236.182[::ffff:206.15.236.182]) - Preparing to               
 chroot to directory '/app/upload/GREEK'
Dec 15 10:10:51 rizzo proftpd[20660]: 172.16.100.13 (::ffff:12.28.170.2[::ffff:12.28.170.2]) - FTP session opened.
Dec 15 10:10:51 rizzo proftpd[20660]: 172.16.100.13 (::ffff:12.28.170.2[::ffff:12.28.170.2]) - Preparing to chroot                
to directory '/app/upload/ftp/SRRID'

答案2

几乎所有软件都对正确设置主机名很敏感。我在 Digg 工作时,曾因做了一个看似无害的更改而导致整个网站瘫痪了 2 个小时,而/etc/hosts这个更改影响了系统的主机名概念。小心行事。话虽如此,您可能对此感到有些困惑。我认为该HOSTNAME=设置与基于 Debian 的发行版使用的设置并不直接等同/etc/hostname

在异构环境中对我有用的是:

  1. 使用配置管理软件中的条件,按照供应商推荐的方式设置主机名。
  2. 使用hostname命令设置内核使用的主机名等。
  3. /etc/hosts

    127.0.0.1    localhost
    10.0.0.1     hostname.example.com     hostname
    

这个配置还没有让我失望过。

答案3

您肯定会在网上找到参考资料,这些参考资料会告诉您一定要以某种方式执行此操作。但在我看来,使用短名称作为主机名,并在 /etc/hosts 中使用完全限定名称肯定更为普遍。这似乎是更明智的方法,因为这样就可以调整需要完全限定名称的服务以进行调用hostname --fqdn

我最近只遇到过一款严格要求返回 fqdn 的软件hostname,那就是 ganeti。他们记录了这一点这里。然而,我看不出他们有什么理由不能适应hostname --fqdn

答案4

简短回答:我通常使用 FQDN 作为主机名(RH6/7 文档中推荐)。但是,更合理的方法是使用单标签名称作为主机名,通过 设置 FQDN /etc/hosts。因此,选择一种方法并尽可能坚持使用。

长答案:使用 FQDN 作为主机名的主要优点是机器名本质上嵌入了域信息。这在接收多个客户/域的电子邮件警报和/或日志时非常有用,因为它可以避免重复的主机名(即:主机名或多或少保证在多个站点/客户/域之间是唯一的)。例如,SNMP默认显示主机名,通过使用 FQDN,它只是传达了更有用的信息。对于(和其他监视工具) 或 bash 也是sysName如此。虽然您可以配置此类工具以使用 FQDN,即使在具有单标签主机名的机器上也是如此,或者在分层模型中配置它们以清楚地显示包含机器的域,但这是额外的工作。zabbix-agent$HOSTNAME

有些应用程序甚至要求使用 FQDN 作为主机名,但它们是例外。然而,当出现例外时,单标签主机名的同质使用就会丢失。这可能是 RedHat 建议在 RH6/7 上使用 FQDN 作为主机名的主要原因。较新的文档更加模糊。在“执行标准 RHEL 8 安装”可以读到:

主机名可以是完全限定域名 (FQDN),格式为 hostname.domainname,也可以是没有域名的短主机名。许多网络都有动态主机配置协议 (DHCP) 服务,可自动为连接的系统提供域名。要允许 DHCP 服务将域名分配给此计算机,请仅指定短主机名

尽管“执行高级 RHEL 8 安装”状态:

如果您的网络不提供 DHCP 服务,请始终使用 FQDN 作为系统的主机名

在最初的问题提出后的几年里,用户应用程序已经学会了处理 FQDN 主机名,而不会出现前面答案中描述的问题。例如,bashPS1提示符默认使用\h(第一个“.”之前的主机名),rsyslog并且不是默认情况下在日志文件中保留 FQDN。换句话说,对于许多常用工具来说,FQDN 主机名的可用性缺陷已不复存在。出于这些原因,我通常将系统主机名设置为 FQDN,并根据/etc/hosts需要保留短名称。

原因是不是使用 FQDN 主机名,坦率地说,这是正确的做法. 分别如Debian 文档主机名手册页

该文件应该只包含系统主机名,而不是完全限定的域名

建议此名称仅包含单个标签,即不包含任何点

所以,当我这样做的时候感觉不太容易使用 FQDN 主机名,在我的环境中更容易使用它。

请注意,这并不是反对单标签主机名。如果它们对您有用,请继续使用它。否则,请尝试使用 FQDN 主机名。

相关内容