use*_*383 2 cloud hostname 16.04
这是在黑暗中拍摄的......
我正在使用名为 Strato-Server-Cloud 的服务,它基本上是 AWS 或 Google-Compute 的基本版本。他们最近更改了界面和/或引擎。从那时起,我创建的所有新 Ubuntu 16 实例都存在主机名在重新启动时恢复的问题。
这是我通常做的事情:
/etc/主机名
www.example.com
Run Code Online (Sandbox Code Playgroud)
/etc/主机
127.0.0.1 www.example.com www
[...]
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 16 上另外:
hostnamectl set-hostname www
Run Code Online (Sandbox Code Playgroud)
完成上述步骤后:
hostname -> www
hostname -f -> www.example.com
Run Code Online (Sandbox Code Playgroud)
主机名
Static hostname: www
Icon name: computer-vm
Chassis: vm
Machine ID: [ID]
Boot ID: [ID]
Virtualization: microsoft
Operating System: Ubuntu 16.04.1 LTS
Kernel: Linux 4.4.0-59-generic
Architecture: x86-64
Run Code Online (Sandbox Code Playgroud)
重启后重启
hostname -> XXX
hostname -f -> XXX.strato.net
Run Code Online (Sandbox Code Playgroud)
主机名-ctl
Static hostname: www
Transient hostname: XXX
Icon name: computer-vm
Chassis: vm
Machine ID: [ID]
Boot ID: [ID]
Virtualization: microsoft
Operating System: Ubuntu 16.04.1 LTS
Kernel: Linux 4.4.0-59-generic
Architecture: x86-64
Run Code Online (Sandbox Code Playgroud)
记下临时主机名
奇怪的是,主机和主机名文件完好无损。
我还尝试将 /etc/init/hostname.conf 更改为以下内容
description "set system hostname"
start on startup
task
exec hostname -b -F /etc/hostname.mod; full=$(cat /etc/hostname.mod);short=(${full//./ }); hostnamectl set-hostname $short
Run Code Online (Sandbox Code Playgroud)
我也将主机名放入 /etc/hostname.mod 以确保不会发生覆盖。手动执行上述 exec 语句可以修复所有问题,但在启动序列期间似乎不起作用......
不幸的是,我在这里很迷茫......我假设 /etc/init/hostname.conf 在启动期间执行,但随后主机名被另一个脚本覆盖?有没有人遇到过这样的问题并且知道如何解决它?我想我可以研究一些 Linux 版本的文件间谍,它记录了哪些进程接触了哪些文件,并以这种方式找到有问题的脚本......但这听起来确实需要很多工作......
如果有人至少可以指出主机名的生命周期,那就是如何确定主机名的步骤以及可以在哪里挂钩的步骤已经对我有很大帮助。
预先感谢您的时间和精力
编辑
我想这也有助于解释为什么这是不好的:-) 如果主机名配置不正确,OpenLDAP 将拒绝在 STARTTLS 模式下正常工作。由于我从未遇到过无法更改主机名的问题,因此我不知道其他哪些服务也可能会出现故障。因此,在 OpenLDAP 之类的服务启动之前,该问题的最小解决方案必须变得有效。
对于通过 dchp 获取 IP 地址的计算机,默认客户端文件/etc/dhcp/dhclient.conf包括询问host-name请求中应包含的内容:
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers;
Run Code Online (Sandbox Code Playgroud)
您可以从请求中删除它:
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search,
dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers;
Run Code Online (Sandbox Code Playgroud)
我不确定是否: 可能会产生意想不到的副作用;域名也应从请求中删除。