Linux

了解為什麼 hostname -i 返回奇怪的 IP 地址

  • November 11, 2020

我引用以下問題,因為它相似但不相同:

在我的 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 嗎?有人可以解釋嗎?謝謝!

hostname -I僅列出所有網路介面上所有已配置 IP 地址的命令不同,該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 地址。第二個命令要求Google 公共 DNS解析名稱,並返回 NXDOMAIN 狀態。或不?

如果是這樣,您的 ISP 可能參與了DNS 劫持的可疑做法,您可能想弄清楚是否有選擇退出的可能性,或者更改您的 DNS 服務提供商。

引用自:https://unix.stackexchange.com/questions/492539