Linux修改/etc/hosts不起作用(ping: xxx: Name or service not known)的解决方法——开启NSCD

问题描述

起因是我在实验室云资源池的一台虚拟机(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

参考3:https://www.cnblogs.com/zhangmingcheng/p/13427995.html

参考4:https://cloud.tencent.com/developer/article/2242697

相关推荐
Uncertainty!!7 小时前
Ubuntu 22.04 安装超好用中文输入法rime-ice(雾凇拼音)过程记录
linux·ubuntu·中文输入法
ShineWinsu8 小时前
对于Linux:网络基础的解析
linux·网络·面试·udp·笔试·ip·tcp
↘"LYong9 小时前
旧版 CentOS 安装 Docker 完整指南(附国内镜像加速)
linux·运维·docker
Zhang~Ling9 小时前
Vim 多模式详解:命令、插入、底行与插件配置
linux·编辑器·vim
想你依然心痛11 小时前
Linux用户空间与内核空间通信:netlink、ioctl、mmap 零拷贝与性能对比
linux·运维·服务器
做个文艺程序员12 小时前
Linux第12篇:性能监控与瓶颈分析——CPU/内存/IO/网络全维度
linux·运维·网络
HAPPY酷12 小时前
【ROS2】 Conda 环境搭建(命令行版)
linux·运维·python·ubuntu·机器人·conda
hai31524754313 小时前
九章空间几何对照直译法:通用芯片 / 定制专用芯片 编译适配规则
linux·汇编·bash
没头脑的男大14 小时前
CMake学习教学
linux·c++·学习
ton_tom14 小时前
设备驱动程序编程-Linux2.6.10-kdb安装-32位
linux·运维·服务器