我现在正在运行 CentOS-7.0-1406,看起来我无法正确设置主机名。据我所知,您需要使用hostnamectl set-hostname命令设置主机名并在 /etc/hosts 中写入 FQDN。我有一台 centos 机器,我想将它的主机名设置为“server”,将 FQDN 设置为“server.mydomain.com”。我运行 hostnamectl 命令并编辑 /etc/hosts 文件:
[root@server ~]# hostnamectl set-hostname server
[root@server ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
{inet_IP_here} server.mydomain.com server
Run Code Online (Sandbox Code Playgroud)
起初一切看起来都很好,当我运行hostname时控制台显示主机名,当我运行hostname -f时它显示 FQDN :
[root@server ~]# hostname
server
[root@server ~]# hostname -f
server.mydomain.com
Run Code Online (Sandbox Code Playgroud)
但是在我重新启动机器并再次运行相同的命令后,它开始将 FQDN 显示为主机名:
[root@server ~]# hostname
server.mydomain.com
Run Code Online (Sandbox Code Playgroud)
我必须说它是一个 VPS 服务器,当我在本地虚拟机上执行它时,我没有这样的问题。VPS 控制面板中也没有任何看起来像主机名的设置。什么原因可能导致这些问题?
Red Hat 文档明确指示您使用完全限定域名作为机器的静态主机名。尝试使用单个非限定名称命名服务器会导致各种服务出现各种问题,最显着的是电子邮件。
主机名可以是长度不超过 64 个字符的自由格式字符串。但是,Red Hat 建议静态名称和临时名称都与DNS 中用于机器的完全限定域名(FQDN)匹配,例如
host.example.com
.
你应该这样做:
hostnamectl set-hostname server.example.com
Run Code Online (Sandbox Code Playgroud)
您也可以手动编辑/etc/hostname
以获得相同的效果;同样,它应该包含 FQDN。
# cat /etc/hostname
server.example.com
Run Code Online (Sandbox Code Playgroud)