问题描述
起因是我在实验室云资源池的一台虚拟机(CentOS 8.5)上的/etc/hosts文件中为Fabric网络节点的域名指定了IP:
IP可以ping通,但是ping域名时提示ping: xxx: Name or service not known
。
问题本身应该是Linux通用的,不局限于CentOS8。特记录以供参考。
已尝试但不起作用的方法
花了两个上午在网上搜索关键词,尝试了各种方法,但是都不起作用。比如:
-
检查hosts文件格式是否正确。
结论:一般人都不会错...
-
重启networking服务,例如
/etc/init.d/networking restart
/etc/init.d/networking force-reload
结论:路径
/etc/init.d/
下根本不存在该服务。 -
修改
/etc/nsswitch.conf
中的hosts
键,将其改为:hosts: files dns
,然后再重启networking服务。结论:也是不存在该服务。
-
清除系统DNS缓存,例如
systemd-resolve --flush-caches
结论:没用。
-
在
/etc/resolv.conf
中添加DNS服务器。结论:没用,这个是针对无法ping通外网的,我这个服务器的DNS本身没有问题,可以ping通外网的域名。
-
修改
/etc/sysconfig/network-scripts/
下的网卡配置文件ifcfg-ens...
,例如将其中的ONBOOT=no
改成ONBOOT=yes
,然后再重启networking服务。结论:也是不存在该服务。
最终生效的解决方案
参考1提到了重启NSCD,如果不存在就安装它。虽然略微有点语焉不详,不过本着试一试的态度,参照参考3和参考4安装了NSCD,最终解决问题。
具体流程如下:
- 使用yum安装NSCD。
bash
yum -y install nscd
- 启动NSCD服务。
bash
systemctl start nscd
- 检查其运行状态。
bash
systemctl status nscd
无需修改NSCD服务的配置文件。NSCD的具体介绍详见上述参考。
附录
参考1:https://www.idc.net/help/150889/
参考2:https://blog.csdn.net/Unknownfuture/article/details/104642043