hostname -i 在 Linux 中返回奇怪的结果

hostname -i 在 Linux 中返回奇怪的结果

如果我运行下面的命令,我会得到一些奇怪的 IP 地址。

hostname -i
198.105.244.11 198.105.254.11

我的主机文件条目采用默认配置,以下是我的 /etc/hosts 文件条目的内容

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

本机实际IP为192.168.2.31

/etc/hosts我希望,一旦我在文件中添加了以下条目,

 192.168.2.31   myhost

我可能会得到预期的输出,

 hostname -i
 192.168.2.31

但是,为什么它在运行时显示不同的 IP 范围hostname -i

更新:

ip r

192.168.2.0/24 dev eth0  proto kernel  scope link  src 192.168.2.31 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.2.1 dev eth0

ifconfig eth0

eth0      Link encap:Ethernet  HWaddr ##removed##  
          inet addr:192.168.2.31  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feca:24c2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2153703 errors:0 dropped:0 overruns:0 frame:0
          TX packets:612859 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:189727756 (180.9 MiB)  TX bytes:761146814 (725.8 MiB)

(使用 Cent 6.4)

答案1

您在用于该主机名的 DNS 服务器中可能有先前的 DNS a 记录。您可以使用 dig 来验证这一点:

dig <your.host.name>

答案2

这看起来像是来自 DNS 服务器的诡计。查询任何未知的主机名/FQDN 将准确返回您获得的两个 IP 地址:

$ nslookup 任何未知名称 4.2.2.2
服务器:4.2.2.2
地址:4.2.2.2#53

非权威答案:
名称:任何未知名称
地址:198.105.244.11
名称:任何未知名称
地址:198.105.254.11

您的服务器配置为首先查询 DNS,然后查看 /etc/hosts 文件,因此如果您的 DNS 服务器正在解析您的主机名,则您在后者中输入的任何内容都将被忽略。问题是它通过将任何未知名称“解析”为您获得的固定 IP 地址来欺骗您。

要解决此问题,请编辑您的/etc/nsswitch.conf文件并将其放在该行files之前。dnshosts

相关内容