我遇到了一个奇怪的问题。一开始 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
例如passwd
,protocols
等等。
行首提到数据库,后面跟着要查询的源的名称。例如,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
以获得更多想法。