我正在使用Ubuntu,并使用木偶管理我的主机。直到一两年前,我的主机才决定使用hostname.backend.example.com。最后两台机器决定使用hostname.staging.internal。我对这些名字是如何得出的感到有点困惑。
# /etc/resolv.conf
nameserver 173.203.4.8
nameserver 173.203.4.9
domain backend.example.com和
# /etc/hosts
10.182.230.38 web01.staging.internal web01
127.0.0.1 localhost localhost.localdomain/bin/hostname回复如下:
# hostname -a
web01
# hostname -A
108-166-97-91.static.cloud-ips.com web01.staging.internal
# hostname -I
108.166.97.91 10.182.230.38存在一个将108.166.97.91映射到web01.backend.example.com的DNS记录。主机名为什么、在哪里以及如何获取web01.staging.internal而不是公共DNS记录?
发布于 2012-03-08 05:43:07
hostname命令返回来自DNS和/etc/hosts的结果。
hostname等同于uname -n,是该框的实际“主机名”或"nodename“。
所有其他hostname参数都使用这个节点来查找信息。
因此,在进一步讨论之前,我要解释一下/etc/hosts文件格式。
第一个字段非常明显,它是行中所有主机名都应该解析的IP地址。第二个字段是该IP的主主机名。剩下的字段是别名。
因此,如果您运行hostname -f,它将首先尝试解析节点名的IP。根据如何在hosts:中配置/etc/nsswitch.conf条目,此方法将有所不同。
/etc/resolv.conf中配置的搜索域,直到从DNS获得IP为止。/etc/hosts中查找主主机名或别名是当前节点名(uname -n)的行,然后在该行中返回主主机名。一旦它有了IP,它就会尝试对该IP进行反向查找。同样,它将根据您的nsswitch.conf使用DNS和您的主机文件。在使用主机文件的情况下,它将返回主条目(这是文件中IP之后的第一个字段)。
hostname -a只能使用主机文件,因为在DNS中进行反向查找只会给出一个结果。通过主机文件,它返回匹配行中的alises (这是第一个条目之后的所有内容,主主机名)。
示例
如果您的节点名为“foobar”,并且在/etc/hosts中有如下条目:
127.0.0.1 foobar.example.com foobar localhost.localdomain localhost然后,您将得到以下命令结果:
# hostname
foobar
# uname -n
foobar
# hostname -f
foobar.example.com
# hostname -a
foobar localhost.localdomain localhosthttps://serverfault.com/questions/367492
复制相似问题