我们已经准备好了,你呢?

2023我们与您携手共赢,为您的企业形象保驾护航!


喜讯:国内、香港、海外云服务器租用特惠活动,2核/4G/10M仅需31元每月,点击抢购>>>

点击这里点击这里注册天翼云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。



推荐:TOP云智能建站优惠活动,仅880元即可搭建一个后台管理五端合一的智能网站(PC网站、手机网站、百度智能小程序、微信小程序、支付宝小程序),独享百度搜索SEO优势资源,让你的网站不仅有颜值有排面,更有排名,可以实实在在为您带来效益,请点击进入TOP云智能建站>>>,或咨询在线客服了解详情。


我们已经准备好了,你呢?

2023我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

131-3501-0006

上班时间

周一到周五

公司电话

130-0743-9476

二维码
线