我在 Azure 上运行的 Ubuntu 14.04.1 LTS VM 上遇到了一个奇怪的问题。我的主机名不断恢复为与我的 Azure 部署相关的名称。简而言之:系统主机名不相等,cat /etc/hostname
并且/etc/hostname
保持/etc/hosts
不变。
这是我的/etc/hostname
dbc1mdb
这是我的 /etc/hosts
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
10.0.1.6 dbc1mdb
10.0.1.7 dbc1sdb1
我真的抓狂了。有什么建议吗?
更新:我现在怀疑 DHCP 客户端或Azure Linux 代理正在弄乱主机名。
答案1
我想我有点迟了,但在 Ubuntu 中,Ubuntu Cloud 软件包似乎是造成这种情况的原因。这个答案应该仍然有意义,因为它适用于 18.04 LTS。
这些包的配置数据似乎位于中/var/lib/cloud/data
,/var/lib/cloud/data/set-hostname
具体来说是以下文件:
{
"fqdn": "<your fqdn>",
"hostname": "<your hostname>"
}
据我所知,主机名是在启动时由这些包中的配置脚本设置的。
答案2
它可能是一个在后台运行的脚本。
您有 2 个选择:
1)删除所有更改主机名的内容。
2)更改您的主机名/etc/hostname
并运行sudo chattr +i /etc/hostname
以防止它被更改。
答案3
我在从云映像安装的 Ubuntu 22.04 服务器中遇到了同样的问题。对我来说,这是因为 cloud-init 不断重置主机名,因为我在创建用于安装 VM 的 cloud-init 配置文件时设置了主机名。
最后,我要做的就是通过在特定位置创建一个空文件来禁用 cloud-init 运行:
sudo touch /etc/cloud/cloud-init.disabled
我可以这样做,因为我在自己的 KVM 主机中设置了自己的客户端。如果使用云提供商,则可能对你来说不是一个可行的解决方案,因为可能需要 cloud-init 来继续运行这些启动步骤。
直到我读到另一个 Ask Ubuntu 帖子,但之后会执行一组不同的步骤。有关详细信息,以下是 cloud-init 启动阶段文档。
答案4
经历了相同的场景和问题。删除 cloud-init、cloud-init-utils 和 walinuxagent 包可解决问题。
sudo apt-get remove cloud-init
sudo apt-get remove cloud-init-utils
sudo apt-get remove walinuxagent
上述软件包名称可能不准确,也可能需要删除相关软件包和/或配置。YMMV。