/etc/hosts 是 centos 7 的本地 ip 地址映射表,格式为“ip 主机名”(空格或制表符分隔),改后需检查缓存、服务重启及跨平台双向同步。

修改 /etc/hosts 就是改 IP 地址映射表
CentOS 7 的「IP 地址映射表」本质就是 /etc/hosts 文件,它不依赖网络服务、不走 DNS 查询,是系统最早生效的本地域名解析机制。改它就能让 ping node1 或 ssh node2 直接命中对应 IP,无需改 DNS 服务器。
/etc/hosts 格式写错会导致解析失败
常见错误不是加不进去,而是格式不对:
- 每行必须是
IP地址 主机名(中间用**至少一个空格或制表符**分隔,不能用等号或冒号) - 不能有重复 IP 或重复主机名(否则后写的会覆盖前写的)
- 注释用
#开头,且必须独占一行或放在行尾,不能夹在 IP 和主机名中间 - IPv6 地址要写完整,比如
::1 localhost,别漏掉localhost这类关键条目
正确示例:
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
192.168.10.10 node1 192.168.10.11 node2 # 这行是注释,不影响 127.0.0.1 localhost
改完 /etc/hosts 不生效?检查这几点
改完文件不代表立刻生效,因为很多程序会缓存解析结果:
-
ping和curl每次都查/etc/hosts,改完就能用 -
ssh默认也查 hosts,但若配置了UseDNS yes且服务端开启反向 DNS,则仍可能走 DNS;建议客户端加-o StrictHostKeyChecking=no排除干扰 - Java 应用、Docker 容器、systemd 服务可能读取一次后长期缓存 —— 改完 hosts 后,重启对应服务更稳妥
- 确认没被 NetworkManager 或其他工具自动覆盖:某些桌面环境或云镜像会定期同步 DNS 配置,可检查
nmcli dev show是否启用了dns=none或类似策略
Windows 和 CentOS 之间要做双向映射
如果从 Windows 访问 CentOS 虚拟机(比如用 Xshell 连 node1),只改 CentOS 的 /etc/hosts 没用 —— Windows 根本不知道 node1 是啥:
- CentOS 上改
/etc/hosts:让 CentOS 能认出自己和其他节点 - Windows 上改
C:\Windows\System32\drivers\etc\hosts:让 Windows 能通过主机名访问 CentOS - 两边内容最好保持一致,例如都写
192.168.10.10 node1 - Windows 修改 hosts 需用管理员权限打开记事本,否则保存失败
复杂点在于多节点集群场景:每个节点的 /etc/hosts 都得包含所有节点的 IP+主机名,漏一条就可能导致 hadoop namenode 启动失败或 ZooKeeper 连接超时。










