我们使用 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-hostname
false
- 在运行的脚本中
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 有多大差异,但我怀疑它们是一样的。
要检查您的设置使用hostname
和hostname -f
命令;第一个必须显示简称,而第二个应该显示 FQDN。
hosts
如果分配给服务器的 IP没有包含 FQDN 的条目, 将执行 DNS 查询来解析它;如果没有有用的 DNS 服务器答案,您将在某些应用程序中遇到长时间的延迟。例如,SSH 登录、Midnight Commander 启动等将延迟数十秒,这非常烦人。该hostname -f
命令也会经历延迟。因此,如果您观察到此类症状,请检查您的 DNS 和hosts
。
|
|