我对别名有疑问localhost
。这不起作用。基本上,没有程序可以localhost
解析127.0.0.1
.别名位于/etc/hosts
:
[root@gabriel-notebook gpoesia]# cat /etc/hosts
#
# /etc/hosts: static lookup table for host names
#
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost gabriel-notebook
::1 localhost ip6-localhost ip6-loopback
# End of file
另外,myhostname
在以下位置启用/etc/nsswitch.conf
:
[root@gabriel-notebook gpoesia]# cat /etc/nsswitch.conf
# Begin /etc/nsswitch.conf
passwd: compat mymachines systemd
group: compat mymachines systemd
shadow: compat
publickey: files
hosts: files mymachines resolve [!UNAVAIL=return] dns myhostname
networks: files
protocols: files
services: files
ethers: files
rpc: files
netgroup: files
# End /etc/nsswitch.conf
并且 localhost 出现在getent hosts
.另外,/etc/hostname
已设定。
[root@gabriel-notebook gpoesia]# getent hosts
127.0.0.1 localhost.localdomain localhost gabriel-notebook
127.0.0.1 localhost ip6-localhost ip6-loopback
[root@gabriel-notebook gpoesia]# getent hosts gabriel-notebook
127.0.0.1 localhost.localdomain localhost gabriel-notebook
[root@gabriel-notebook gpoesia]# cat /etc/hostname
gabriel-notebook
[root@gabriel-notebook gpoesia]# hostname
gabriel-notebook
但是,ping localhost
不起作用。
[root@gabriel-notebook gpoesia]# ping localhost
ping: localhost: Name or service not known
主要的困难是我不知道这种情况是什么时候开始发生的。我记得它过去可以工作,但我不知道是什么原因导致它损坏。谷歌搜索并没有帮助。我发现有人遇到同样的问题,原因对我来说不成立(例如文件损坏、语法错误/etc/hostname
等)。
有任何想法吗?
谢谢!
答案1
找到原因了,/etc/hosts
文件权限不正确。
更改为644
并且有效。
答案2
首先,我假设两者ping 127.0.0.1
都ping ::1
工作正常(或者至少其中一个工作)。
接下来我会尝试ping gabriel-notebook
排除ping ip6-localhost
那些容易实现的目标。
您的配置可能会出现一些问题,但没有什么可以解释这一点。例如,许多人反对将本地计算机的名称作为 localhost 的别名,但这看起来是一台笔记本电脑,因此您可能需要它。 nsswich.conf 文件中的主机行看起来 myhostname 模块无法正常工作,但这不是您要解决的问题。
唯一看起来可疑的是 getent 显示 127.0.0.1 既映射到预期的 ip4 别名,也映射到 ip6 别名。这让我怀疑主机或 nsswitch.conf 文件中存在奇怪的空白(可以使用 检查hd
),或者 mymachines 模块正在做一些奇怪的事情。我会用 来检查getent hosts localhost
。
考虑到其他一切看起来都不错,是时候拿起锡纸无檐小便帽,并询问如果这是一个根工具包,并且是一个制作精良的工具包(如果您直到现在才注意到它),为什么他们会搞砸名称解析?