我们使用 Ubuntu autoinstall 和 cloud-config 在 DHCP 服务器后面安装 Ubuntu 20.04 和 22.04,而 DHCP 服务器是我们无法控制的。late-commands我们需要正确的主机名/FQDN,但我无法获取我们想要的域,它总是被 DHCP 服务器中的域覆盖。

我们尝试过但没有成功的事情:

  • 设置autoinstall>>user-data我们fqdn想要的域
  • 设置autoinstall> network> ethernets> id0> dhcp4-overrides>use-hostnamefalse
  • 在运行的脚本中late-commands

    • /bin/echo <fqdn> > /etc/hostname
    • /usr/bin/hostnamectl set-hostname <fqdbn>

我们如何在自动安装后期命令中保留正确的主机名/fqdn?


最佳答案
1

Linux 本身(内核)并不关心其域名。FQDN 仅用于网络应用程序,域名解析由 C 库调用执行。

/etc/hostname应该只包含FQDN 的第一个组件,即主机名。它不应该包含点。将其设置为完整的 FQDN 是错误的。调用也是如此hostnamectl。也就是说,您的两个后期命令都是错误的。

域名是使用 中的某个条目设置的/etc/hosts。例如,如果您的系统具有“规范” IP 地址192.168.10.10,并且主机名是my-server,则以下hosts条目会将其与 关联domain.org

192.168.10.10 my-server.domain.org my-server

记录中的最后一项是别名;可能有许多别名。也可能有许多与不同地址关联的 FQDN。这意味着,FQDN 在系统行为中并不起重要作用(一个值得注意的例外是 Kerberos 设置,但它无论如何都与网络有关)。

对于具有动态 IP 的系统(例如 DHCP 分配地址的情况),基于 Debian 的系统通常使用127.0.1.1该条目中的地址(这是 16777216 个环回 IP 之一)。我不知道 Ubuntu 在这方面与 Debian 有多大差异,但我怀疑它们是一样的。

要检查您的设置使用hostnamehostname -f命令;第一个必须显示简称,而第二个应该显示 FQDN。

hosts如果分配给服务器的 IP没有包含 FQDN 的条目, 将执行 DNS 查询来解析它;如果没有有用的 DNS 服务器答案,您将在某些应用程序中遇到长时间的延迟。例如,SSH 登录、Midnight Commander 启动等将延迟数十秒,这非常烦人。该hostname -f命令也会经历延迟。因此,如果您观察到此类症状,请检查您的 DNS 和hosts