要设置主机名, 请使用hostnamectl
,但只能与主机名一起使用,如下所示:
hostnamectl set-hostname nodename
要设置(DNS)域名编辑/etc/hosts
文件并确保:
- 有一条线
<machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>
有
- 没有其他带有的行
<some IP> <hostname>
,其中包括带有127.0.0.1
和的行::1
(IPv6)地址的行。
请注意,除非您使用NIS,否则(none)
在运行domainname
命令。
要检查您的DNS域名设置是否正确,请使用dnsdomainname
命令并检查hostname
vs hostname -f
(FQDN)的输出。
NIS与DNS域
当我第一次遇到这个问题时,我感到困惑。该domainname
命令似乎早于Internet的普及。它显示或设置系统的NIS(网络信息服务)或 YP(黄页)域名(一组由主NIS服务器提供服务的计算机),而不是DNS域名。该命令仅显示getdomainname(2)
标准库函数返回的名称。(nisdomainname
和ypdomainname
是此命令的备用名称。)
显示FQDN或DNS域名
要检查DNS(Internet)域名,您应该运行dnsdomainname
命令或hostname
使用-d, --domain
选项。(请注意,该dnsdomainname
命令不能用于设置DNS域名-仅用于显示它。)
要显示系统的FQDN(完全限定域名),请运行hostname
以下-f, --fqdn, --long
选项(同样,该命令不能用于设置域名部分)。
上面的命令使用系统的解析器(gethostbyname(3)
由POSIX指定的标准库中的功能实现)来确定DNS域名和FQDN。
名称解析
在现代操作系统(例如RHEL 7)中,该hosts
条目/etc/nsswitch.conf
用于解析主机名。在您的CentOS 7机器上,此行配置为(CentOS 7的默认设置):
hosts: files dns
这意味着,当解析程序功能查找主机名或IP地址时,它们首先检查/etc/hosts
文件中的条目,然后再尝试在其中列出的DNS服务器。/etc/resolv.conf
。
运行hostname -f
以获取主机的FQDN时,解析程序功能将尝试获取系统主机名的FQDN。如果/etc/hosts
文件或相关DNS服务器中未列出主机,则尝试失败并hostname
报告Name or service not known
。
什么时候 hostname -d
运行以获得域名,相同的操作被执行,并且域名部分是由汽提的主机名部分和从FQDN第一点来确定。
配置域名
1.更新相关的DNS名称服务器
就我而言,我已经在本地局域网的DNS服务器中为我的新CentOS 7计算机添加了一个条目,因此/etc/hosts
当我hostname
使用-d
或-f
选项运行时在文件中找不到FQDN 时,本地DNS服务能够为我的新主机名完全解析FQDN。
2.使用/etc/hosts
文件
如果尚未配置DNS服务器,则可以在/etc/hosts
文件中指定标准域名。最常见的方法是指定系统的主要IP地址,后跟其FQDN和简短的主机名。例如,
172.22.0.9 nodename.domainname nodename
hostname
手册页摘录
您无法使用hostname
或更改FQDN dnsdomainname
。
推荐的设置FQDN的方法是使主机名成为使用/etc/hosts,
DNS或NIS的标准名称的别名。例如,如果主机名是“ ursula”,则可能在一行中/etc/hosts
显示以下内容:
27.0.1.1 ursula.example.com ursula
从技术上讲:FQDN是由gethostname(2)返回的主机名getaddrinfo(3)返回的名称。DNS域名是第一个点之后的部分。
因此,它取决于解析器的配置(通常在中
/etc/host.conf
),如何更改它。通常,主机文件是在DNS或NIS之前进行解析的,因此最常见的是在中更改FQDN
/etc/hosts
。
hostname -f
命令在我的CentOS虚拟机上不起作用。