我引用以下问题,因为它相似但不相同:
在我的 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 服务提供商。