You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

cloud-init manage_resolv_conf配置未生效,CentOS7 resolv.conf不符合预期

排查CentOS7下cloud-init resolv.conf配置不生效的问题

我来帮你一步步排查这个cloud-init配置不生效的问题——CentOS7下这种情况大多和NetworkManager的行为冲突有关,咱们慢慢拆解:

问题根源分析

你的cloud-init配置里已经明确设置了manage_resolv_conf: true,但最终resolv.conf里的内容却来自NetworkManager的自动生成(注释里的# Generated by NetworkManager就是关键线索),同时还保留了cloud-init的初始化注释,说明cloud-init可能执行了配置,但随后被NetworkManager覆盖了。另外nameserver 10.0.2.3通常是虚拟机平台(比如VirtualBox NAT)或云服务商的默认DHCP DNS地址。

具体排查步骤

1. 检查NetworkManager的接管配置

CentOS7默认NetworkManager会自动管理resolv.conf,这是导致cloud-init配置被覆盖的核心原因。你需要查看它的配置文件:

cat /etc/NetworkManager/NetworkManager.conf

重点看[main]段的配置:

  • 如果存在dns=auto(默认值),NetworkManager会根据DHCP获取的DNS自动生成resolv.conf
  • 如果没有rc-manager=file,它不会尊重手动或cloud-init修改的resolv.conf文件

2. 查看cloud-init执行日志

确认cloud-init是否真的执行了resolv.conf的配置逻辑,查看日志:

grep -E 'resolv_conf|manage_resolv_conf' /var/log/cloud-init.log

如果日志里出现类似Skipping resolv_conf management或者报错信息,说明cloud-init的配置没有被正确识别;如果有Updating resolv.conf的记录,那基本可以确定是后续被NetworkManager覆盖了。

3. 检查cloud-init初始化状态

运行以下命令查看cloud-init各模块的执行状态:

cloud-init status --long

重点看resolv-conf模块是否显示success,如果是failed,根据提示排查具体错误。

解决方法

方法一:让NetworkManager放弃接管resolv.conf

编辑/etc/NetworkManager/NetworkManager.conf,在[main]段添加以下配置:

[main]
dns=none
rc-manager=file

然后重启NetworkManager服务:

systemctl restart NetworkManager

之后重新触发cloud-init初始化(可选,确保配置生效):

cloud-init clean && cloud-init init

这样cloud-init修改的resolv.conf就不会被NetworkManager覆盖了。

方法二:通过cloud-init的runcmd强制写入配置

如果暂时不想修改NetworkManager配置,可以在cloud-init的user-data里添加runcmd模块,直接覆盖resolv.conf:

#cloud-config
manage_resolv_conf: true
resolv_conf:
  nameservers: ['10.0.100.1']
  searchdomains:
    - myawesomedomain.com
  domain: myawesomedomain.com
  options:
    rotate: true
    timeout: 1
runcmd:
  - echo "; Created by cloud-init on instance boot automatically, do not edit." > /etc/resolv.conf
  - echo "nameserver 10.0.100.1" >> /etc/resolv.conf
  - echo "search myawesomedomain.com" >> /etc/resolv.conf
  - echo "options rotate timeout:1" >> /etc/resolv.conf

不过这个方法是“治标”,因为NetworkManager在某些场景(比如网络重启)下还是可能覆盖配置,更推荐方法一。

内容的提问来源于stack exchange,提问作者vamfoom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:40:36