避免重启时临时主机名覆盖主机名

避免重启时临时主机名覆盖主机名

我的服务器是CentOS 7.1。重新启动后,主机名被临时主机名(mail)覆盖,我找不到避免这种情况的方法。也许 AutoDNS 和 MX 记录mail会导致这个问题?

  • /etc/hostname包含正确的值
  • hostnamectl --transient set-hostname my.desired.name正在工作,但只能到下次重新启动为止

所以,重启后:

  • hostnamectl status显示正确的静态主机名,但显示错误的瞬时主机名 ( mail)。
  • hostname -shostname -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-namedomain-namerequest

答案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 :)*

相关内容