FQDN 是如何确定的?

FQDN 是如何确定的?

我使用的是 Ubuntu,并使用 Puppet 管理我的主机。直到一两台机器之前,我的主机解析为 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 记录?

答案1

hostname命令返回 DNS 和的结果/etc/hosts

hostname等同于uname -n并且是框的实际“主机名”或“节点名”。
所有其他hostname参数都使用此节点名来查找信息。

因此,在进一步讨论之前,我应该先解释一下/etc/hosts文件格式。
第一个字段相当明显,它是线路上所有主机名应解析的 IP 地址。第二个字段是该 IP 的主主机名。其余字段是别名。

因此,如果您运行hostname -f它,它将首先尝试解析您的节点名称的 IP。根据您hosts:/etc/nsswitch.conf此方法中配置条目的方式,它将有所不同。

  • 如果您已将其配置为使用 dns,它将使用配置的搜索域,/etc/resolv.conf直到从 DNS 获取 IP。
  • 如果您已将其配置为使用文件,它将查找/etc/hosts主主机名或别名是您当前节点名(uname -n)的行,然后在该行中返回主主机名。

一旦获得 IP,它就会尝试对该 IP 进行反向查找。同样,它将使用 DNS 并根据您的 hosts 文件执行此操作nsswitch.conf。如果使用 hosts 文件,它将返回主条目(即文件中 IP 后面的第一个字段)。

hostname -a仅适用于 hosts 文件,因为在 DNS 中进行反向查找只会得到 1 个结果。使用 hosts 文件,它会返回匹配行中的别名(即第一个条目(主主机名)之后的所有内容)。

例子
如果你的节点名是“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 localhost

相关内容