localhost 是错误的 IP 地址

localhost 是错误的 IP 地址

我遇到了一个奇怪的问题。一开始 postgresql-9.3 没有安装。我发现它找不到localhost

我检查了一下/etc/hosts,它已经localhost正确127.0.0.1

但当我

ping localhost

我明白了

PING localhost.Home (198.105.244.21) 56(84) bytes of data.

当我

whois 198.105.244.21

我在科罗拉多州找到了“SearchGuide Inc”

如何让我的系统正确识别本地主机?

我正在运行值得信赖的 tahr 14.04.2 lts

这是我的/etc/hosts文件:

127.0.0.1   localhost
127.0.0.1   ourcomp

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

我之前打错了。现已更正。

以下是输出nslookup localhost

nslookup localhost
Server:     127.0.1.1
Address:    127.0.1.1#53

Non-authoritative answer:
Name:   localhost.Home
Address: 198.105.244.21
Name:   localhost.Home
Address: 198.105.254.21

输出iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  

ufw状态为不活跃

/etc/nsswitch是空白

内容/etc/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
search Home

ifconfig

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:46904 errors:0 dropped:0 overruns:0 frame:0
          TX packets:46904 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2538766 (2.5 MB)  TX bytes:2538766 (2.5 MB)

p5p1      Link encap:Ethernet  HWaddr f0:4d:a2:9b:3b:b9  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr 00:1b:b1:81:06:3d  
          inet addr:192.168.0.14  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::21b:b1ff:fe81:63d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8968 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7779 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4212369 (4.2 MB)  TX bytes:1142565 (1.1 MB)

答案1

问题原来是/etc/nsswitch配置文件中缺少相关条目。

在将主机名解析为 IP 地址时,GNU C 库libc使用此文件来获取源以及查询的顺序。/etc/nsswitch.conf这里涉及的数据库名称是hosts。还有许多其他数据库可以被识别,libc例如passwdprotocols等等。

行首提到数据库,后面跟着要查询的源的名称。例如,hosts数据库所需的配置(用于查找主机的 IP 地址)可以采用以下形式:

hosts:          files mdns4 dns
  • files表示首先/etc查询目录中的相关配置文件,因此/etc/hosts先进行查询

  • 然后使用 mDNS(多播 DNS)检查是否可以检索 IP

  • 然后向 DNS 即名称服务器查询 IP 地址。

由于您的/etc/nsswitch配置文件不包含任何内容,我建议您将默认条目放入文件中:

passwd:         compat
group:          compat
shadow:         compat

hosts: files mdns4 mdns4_minimal [NOTFOUND=return] dns

networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

检查man 5 nsswitch.conf以获得更多想法。

相关内容