理解为什么 hostname -i 返回奇怪的 IP 地址

理解为什么 hostname -i 返回奇怪的 IP 地址

我引用以下问题,因为它相似但不相同:

在我的 CentOS 7 系统上,更改主机名后,我从“hostname -i”获得一个奇怪的 IP 地址,我试图找出为什么会出现这种情况。

我使用以下命令更改主机名:

# hostnamectl set-hostname saturn
# systemctl restart systemd-hostnamed

我的 /etc/hosts 文件显示:

 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

以下内容位于我的 /etc/nsswistch.conf 文件中:

hosts:      files dns myhostname

我的服务器 IP 地址是 192.168.1.13,但是“hostname -i”返回奇怪的 IP 地址:

# hostname -i
92.242.140.21

然而,“主机名-I”就可以了:

# hostname -I
192.168.1.13

为什么主机名 -i 返回 92.242.140.21。它是 DNS 分配给我的系统的随机动态 IP 吗?有人可以解释一下吗?谢谢!

答案1

与仅列出所有网络接口上所有配置的 IP 地址的命令不同hostname -I,该hostname -i命令执行名称解析(请参阅hostname手册页)。

由于无法使用该文件解析新分配的主机名/etc/hosts,因此运行该文件hostname -i将导致系统的名称解析器生成对外部 DNS 服务器的 DNS 查询。在此服务器(我假设属于您的 ISP)上,此查询显示为空(NXDOMAIN 结果:即不存在的域)。由于您的 ISP 已与 Barefruit 合作,因此您不会收到 NXDOMAIN 结果,而是收到一个 Barefruit IP 地址来响应您的查询:

$ dig +short -x 92.242.140.21
unallocated.barefruit.co.uk.

我想,当您运行命令时,将新主机名添加到文件中/etc/hosts将使奇怪的 Barefruit IP 地址消失hostname -i。如果没有,你可以忽略这个答案:)


只是为了好玩:使用该dig命令,您可以询问不同的名称服务器。要查看响应的差异,您可以运行以下两个命令:

$ dig saturn
$ dig @8.8.8.8 saturn

第一个会导致通过系统预配置的 DNS 服务器进行名称解析,并可能导致返回 Barefruit IP 地址。第二个命令询问谷歌公共 DNS解析名称,并返回 NXDOMAIN 状态。或不?

如果是这样,您的 ISP 可能参与了以下可疑的做法:DNS劫持,您可能想弄清楚是否有选择退出的可能性,或者更改您的 DNS 服务提供商。

相关内容