我的服务器是CentOS 7.1。重新启动后,主机名被临时主机名(mail
)覆盖,我找不到避免这种情况的方法。也许 AutoDNS 和 MX 记录mail
会导致这个问题?
/etc/hostname
包含正确的值hostnamectl --transient set-hostname my.desired.name
正在工作,但只能到下次重新启动为止
所以,重启后:
hostnamectl status
显示正确的静态主机名,但显示错误的瞬时主机名 (mail
)。hostname -s
或hostname -f
显示错误的主机名。
该文件/etc/sysconfig/network
被“by anaconda”覆盖并具有行HOSTNAME="mail"
.我尝试编辑此文件以配置正确的名称,但重新启动后它被覆盖。
如何防止重新启动后设置临时主机名mail
?
编辑:
我已经尝试添加DHCP_HOSTNAME="my.desired.name"
到我的 /etc/sysconfig/network-scripts/ifcfg-e..... 但没有成功(重新启动后行被删除)。
我尝试hostnamectl set-hostname "" --transient
在重新启动时添加执行(这会将瞬态设置为静态主机名的值),但在激活 /etc/rc.local 时失败,也作为启用 chkconfig 的服务失败(使用 # chkconfig: - 11 91 所以它应该在所有其他服务之后运行)。
欢迎任何进一步的建议。
答案1
临时主机名在启动时初始化为静态主机名,但可以通过 DHCP 或 mDNS 进行更改。
动态主机配置协议
如果您使用 DHCP,则应检查网络设备的配置中是否设置了错误的主机名。运行ip addr show
以检查您正在使用哪个网络设备。然后编辑适当的配置脚本。例如,如果您的网络接口是eth0
,您应该编辑其配置文件/etc/sysconfig/network-scripts/ifcfg-eth0
。
来自 Red Hat 文档使用 ifcfg 文件配置网络接口,有一个选项
配置接口以向 DHCP 服务器发送不同的主机名。
DHCP_HOSTNAME=hostname
检查并确保您的系统没有mail
在此脚本中配置主机名。
如果这不是问题,您需要检查本地 DHCP 服务器是否未配置为将主机名设置为mail
。如果您有网络管理员,他已将您的主机配置为mail
局域网的 DNS / DHCP,您应该与他们交谈。最佳实践是使用非基于角色的名称配置主机,然后将 DNS CNAMES 配置为相关服务器的别名。
如果 DHCP 是问题的根源并且上述建议没有帮助,则另一个选择是将网络接口配置为使用静态 IP 地址。
答案2
我知道这已经有一段时间了,但对于任何正在寻找其发生原因的答案的人来说:每当通过 DHCP 请求 IP 时,某些提供商(ISP、公司 VPN 等)都会将“临时主机名”发送回主机,并根据您的计算机配置,将其设置为当前计算机的主机名
我的问题(以及我最终到达这里的方式)是我将主机名设置为默认值localhost
并根据hostnamectl
手册页:
该工具区分三种不同的主机名:高级“漂亮”主机名,可能包含各种特殊字符(例如“Lennart's Laptop”),静态主机名用于在启动时初始化内核主机名(例如“lennarts-laptop”) "),以及从网络配置中默认接收的临时主机名。如果设置了静态主机名并且有效(除了 localhost 之外),则不使用临时主机名。
所以一个解决方案是不要将主机名设置为 localhost
另一种解决方案是通过从属性中删除(也许还有)来使您的 dhcp 配置/etc/dhcp/dhclient.conf
不请求主机名host-name
domain-name
request
答案3
最后我得到了它。
我们的托管提供商(Host Europe)在控制面板中为每台服务器(虚拟根服务器)提供了一个选项。在“主机名/RDNS”页面上有一个输入字段“主机名:”。我将其更改为正确的值,现在它按预期工作。
答案4
$ vi /etc/sysconfig/network-scripts/ifcfg-eth0
$ vi /etc/sysconfig/network
HOSTNAME="hostname<FQDN>"
DHCP_HOSTNAME="hostname<FQDN>"
$ vi /etc/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
hostnamectl --transient set-hostname "hostname"
#exit vi <:wq>
$ chmod +x /etc/rc.d/rc.local <This will make the file unchanged even after reboot>
$ Reboot
*You are ready to go the Cpanel installation for CentOS7 :)*