169
云计算
负载均衡
产品简介
产品价格
快速入门
用户指南
实践操作
常见问题
购买指南
云服务器
产品简介
计费规则
购买指导
控制台使用指南
常见问题
云数据库
产品简介
计费规则
购买指导
快速入门
连接实例
控制台使用指南
对象存储
产品简介
控制台使用指南
程序员百科
Python
Linux系统重启后/etc/hosts自动添加主机名解析

产品推荐:

1、安全稳定的云服务器租用,2核/2G/5M仅37元,点击抢购>>>

2、高防物理服务器20核/16G/50M/500G防御仅350元,点击抢购>>>

3、百度智能建站(五合一网站)仅880元/年,点击抢购>>> 模板建站(PC+手机站)仅480元/年,点击抢购>>>

4、阿里云服务器2核2G3M仅99元/年、2核4G5M仅199元/年,新老同享,点击抢购>>> 

5、腾讯云服务器2核2G4M仅99元/年、新老同享,点击抢购>>>   


点击这里点击这里注册天翼云VIP帐号,立即体验云服务器>>>

本文为您介绍Linux系统重启后/etc/hosts自动添加主机名解析的处理方法。

问题描述

重启使用 Linux 系统的云主机后发现 /etc/hosts 文件被全部重写或被添加了主机名和回环地址(例:127.0.0.1、127.0.1.1)的解析,导致域名解析不符合预期或出现问题。

问题原因

云平台 Linux 镜像中的一个核心组件是 cloud-init。作为开源的云初始化程序,cloud-init 主要用于对主机名、初始密码等一些自定义信息进行初始化配置。若 cloud-init 配置中存在对 manage_etc_hosts 的配置,则 cloud-init 会根据具体配置值决定如何调整 /etc/hosts 文件。公共镜像默认不启用 cloud-init 对 /etc/hosts 的修改功能,即 manage_etc_hosts 不做配置或配置为 false(默认值)。若您使用了公共镜像并修改了 cloud-init 配置或使用了私有镜像,则可参考此指导来尝试解决问题。

问题排查思路

/etc/hosts 文件被全部重写可能是因为 cloud-init 配置中将 manage_etc_hosts 配置成了true(若您安装的 cloud-init 版本低于22.3,则还可能是配置成了 template)。此时,cloud-init 会根据/etc/cloud/templates/hosts.tmpl 来重写 /etc/hosts 文件。

而 /etc/hosts 文件被添加主机名解析可能是因为 cloud-init 配置中将 manage_etc_hosts 配置成了 localhost。

解决步骤

  1. Cloud-init 配置文件是 /etc/cloud/cloud.cfg,您可能还将自定义配置放于 /etc/cloud/cloud.cfg.d/ 目录下。搜索包含 manage_etc_hosts 配置的文件可使用以下命令:

    grep -rn ‘manage_etc_hosts’ /etc/cloud/*

    返回结果示例:

    image.png

  2. 以上述返回结果为例,可以看到在/etc/cloud/cloud.cfg 文件中的第20 行将 manage_etc_hosts 配置成了 localhost,此时您需要修改 cloud.cfg 中的 manage_etc_hosts 配置,即:

    原文:manage_etc_hosts: localhost

    修改后:# manage_etc_hosts: localhost

    或者也可:manage_etc_hosts: false

  3. 按您的业务需求修改 /etc/hosts。


这条帮助是否解决了您的问题? 已解决 未解决

提交成功!非常感谢您的反馈,我们会继续努力做到更好! 很抱歉未能解决您的疑问。我们已收到您的反馈意见,同时会及时作出反馈处理!