了解為什麼 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 嗎?有人可以解釋嗎?謝謝!
與
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 服務提供商。