news 2026/4/23 14:25:20

深入解析CentOS 8中NetworkManager重启后DNS配置被覆盖的机制与解决方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深入解析CentOS 8中NetworkManager重启后DNS配置被覆盖的机制与解决方案

问题概述

在CentOS 8.2系统中,管理员经常遇到这样的困扰:手动修改/etc/resolv.conf文件配置DNS服务器后,一旦重启NetworkManager服务,配置就被覆盖回原样。更令人困惑的是,在多IP地址配置场景下(如ifcfg-br10中同时配置IPADDRIPADDR1),DNS设置似乎与特定IP的网关地址相关联。本文将深入剖析这一现象背后的机制,并提供多种解决方案。

一、NetworkManager在CentOS 8中的角色演变

1.1 历史背景

在CentOS 7及早期版本中,网络配置主要由/etc/sysconfig/network-scripts/目录下的ifcfg-*文件管理。然而,从CentOS 8/RHEL 8开始,虽然仍支持传统的ifcfg格式,但NetworkManager已成为默认且推荐的网络管理工具。

1.2 NetworkManager的工作模式

# 查看NetworkManager状态systemctl status NetworkManager# NetworkManager主要管理以下配置:# 1. /etc/NetworkManager/NetworkManager.conf# 2. /etc/NetworkManager/system-connections/# 3. /etc/sysconfig/network-scripts/ifcfg-*(兼容模式)

二、问题根因分析

2.1/etc/resolv.conf的生成机制

当NetworkManager启动或重启时,它会:

  1. 扫描所有活跃的网络连接
  2. 收集DNS配置信息
  3. 根据优先级合并配置
  4. 重新生成/etc/resolv.conf
# 查看NetworkManager如何管理resolv.confcat/etc/resolv.conf# Generated by NetworkManagernameserver192.168.119.1

关键机制resolv.conf是一个动态生成的文件,而非静态配置文件。

2.2 多IP地址配置的特殊情况

/etc/sysconfig/network-scripts/ifcfg-br10为例:

DEVICE="br10" ONBOOT="yes" TYPE="Bridge" IPADDR=192.168.1.100 # 主IP地址 PREFIX=24 GATEWAY=192.168.1.1 # 主网关 DNS1=8.8.8.8 # 主DNS IPADDR1=10.0.0.100 # 次要IP地址 PREFIX1=24 GATEWAY1=10.0.0.1 # 次要网关 DNS2=1.1.1.1 # 次要DNS

问题根源分析

  1. DNS优先级混乱:当配置多个IP地址时,NetworkManager可能会根据某种策略(通常是最后激活或特定顺序)选择DNS服务器
  2. 网关与DNS的关联:在某些情况下,NetworkManager可能会使用某个IP地址对应的网关作为DNS服务器
  3. 配置合并逻辑:多个IP配置的DNS设置可能会以非预期的方式合并

2.3 具体触发场景

# 重启NetworkManager后检查配置systemctl restart NetworkManager# 检查DNS解析过程cat/etc/resolv.conf# 可能出现的异常情况:# 1. DNS指向了IPADDR1的网关地址(10.0.0.1)# 2. DNS配置被完全重置# 3. 只保留了一个DNS服务器# 验证DNS来源nmcli device show br10|grep-i dns

三、NetworkManager的DNS决策流程

3.1 配置源优先级

NetworkManager按以下优先级决定使用哪个DNS配置(从高到低):

  1. 手动通过nmcli配置的DNS
  2. DHCP服务器提供的DNS(如果使用DHCP)
  3. ifcfg文件中的DNS设置
  4. 系统默认DNS

3.2 多连接DNS合并规则

当系统有多个网络连接时:

多个网络连接

是否有活跃VPN?

优先使用VPN的DNS

是否有多个物理连接?

按连接优先级合并DNS

使用唯一连接的DNS

生成最终的resolv.conf

3.3 多IP地址配置的DNS选择

对于单个连接配置多个IP地址的情况:

ifcfg-br10配置: - IPADDR: 192.168.1.100, DNS1=8.8.8.8 - IPADDR1: 10.0.0.100, GATEWAY1=10.0.0.1 问题现象: 重启NetworkManager后,DNS可能变为10.0.0.1 原因分析: NetworkManager可能错误地将IPADDR1的网关识别为首选DNS源

四、解决方案对比

4.1 方案一:使用nmcli统一管理(推荐)

这是最规范、最可靠的解决方案。

# 1. 查看当前连接nmcli connection show# 2. 为br10连接设置DNS(永久生效)nmcli connection modify br10 ipv4.dns"8.8.8.8 1.1.1.1"nmcli connection modify br10 ipv4.ignore-auto-dnsyes# 3. 应用配置nmcli connection up br10# 4. 验证配置nmcli connection show br10|grep-i dns

优势

  • 配置集中管理
  • 重启后配置持久化
  • 避免配置文件冲突

4.2 方案二:禁用NetworkManager的DNS管理

如果确实需要手动管理/etc/resolv.conf

# 1. 编辑NetworkManager主配置vim/etc/NetworkManager/NetworkManager.conf# 2. 添加或修改以下内容[main]dns=none rc-manager=unmanaged# 3. 重启NetworkManagersystemctl restart NetworkManager# 4. 手动配置resolv.confecho"nameserver 8.8.8.8">/etc/resolv.confecho"nameserver 1.1.1.1">>/etc/resolv.conf

4.3 方案三:修复ifcfg多IP配置

对于传统ifcfg配置方式,确保正确设置:

# /etc/sysconfig/network-scripts/ifcfg-br10 DEVICE="br10" TYPE="Bridge" BOOTPROTO="none" ONBOOT="yes" # 主IP配置 IPADDR=192.168.1.100 PREFIX=24 GATEWAY=192.168.1.1 # 次要IP配置 IPADDR1=10.0.0.100 PREFIX1=24 GATEWAY1=10.0.0.1 # DNS配置(关键) DNS1=8.8.8.8 # 明确指定DNS1 DNS2=1.1.1.1 # 明确指定DNS2 PEERDNS=no # 防止DHCP覆盖

4.4 方案四:使用NetworkManager配置目录

创建专门的配置文件:

# 1. 创建DNS配置文件cat>/etc/NetworkManager/conf.d/dns-settings.conf<<EOF [main] dns=default systemd-resolved=false [global-dns] searches=example.com [global-dns-domain-*] servers=8.8.8.8,1.1.1.1 EOF# 2. 重启NetworkManagersystemctl restart NetworkManager

五、诊断与调试技巧

5.1 查看NetworkManager内部状态

# 查看DNS配置来源nmcli device show br10|grep-A5 -B5 DNS# 查看NetworkManager日志journalctl -u NetworkManager --no-pager -f# 调试模式查看详细信息NM_LOG_LEVEL=debug /usr/sbin/NetworkManager --no-daemon

5.2 检查配置优先级

# 查看所有配置源nmcli connection show br10|grep-E"(dns|ipv4\.dns|ipv4\.ignore-auto-dns)"# 检查resolv.conf的符号链接ls-la /etc/resolv.conf# 查看NetworkManager管理的连接ls-la /etc/NetworkManager/system-connections/

5.3 验证配置持久性

# 测试重启后配置是否保留systemctl restart NetworkManager systemctl status NetworkManagercat/etc/resolv.confping-c2google.com

六、最佳实践建议

6.1 生产环境推荐方案

  1. 统一使用nmcli:避免混合使用传统ifcfg和nmcli命令
  2. 明确DNS配置:在每个连接中明确指定DNS服务器
  3. 禁用自动DNS:设置ignore-auto-dns=yes防止意外覆盖

6.2 配置示例

# 完整配置示例nmcli connectionaddtypebridge ifname br10 con-name br10\ip4192.168.1.100/24 gw4192.168.1.1\ip410.0.0.100/24\ipv4.dns"8.8.8.8 1.1.1.1"\ipv4.dns-search"example.com"\ipv4.ignore-auto-dnsyes\ipv4.method manual

6.3 故障排查清单

  • 检查NetworkManager是否正在运行
  • 验证nmcli配置是否正确应用
  • 查看/etc/resolv.conf是否被正确生成
  • 确认没有其他服务(如systemd-resolved)干扰
  • 检查防火墙是否允许DNS查询

七、总结

在CentOS 8系统中,NetworkManager作为默认网络管理工具,其动态管理/etc/resolv.conf的特性虽然提供了灵活性,但也带来了配置被意外覆盖的风险。特别是在多IP地址配置场景下,不明确的DNS配置可能导致服务重启后DNS设置指向非预期的网关地址。

理解NetworkManager的配置优先级和决策流程是解决问题的关键。推荐在生产环境中统一使用nmcli命令进行网络配置,避免混合使用不同的配置方法。对于需要精细控制DNS的场景,可以适当调整NetworkManager的管理行为或完全接管DNS配置。

通过本文提供的解决方案和最佳实践,您可以有效地管理CentOS 8系统的DNS配置,确保网络服务的稳定性和可靠性。


扩展阅读

  1. NetworkManager官方文档
  2. CentOS 8网络配置指南
  3. systemd-resolved与NetworkManager集成
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 10:42:50

10分钟搭建M2FP多人人体解析服务:无需配置的云端GPU解决方案

10分钟搭建M2FP多人人体解析服务&#xff1a;无需配置的云端GPU解决方案 作为一名计算机视觉爱好者&#xff0c;我最近想在社交媒体应用中添加多人人体解析功能&#xff0c;但面对复杂的模型部署和环境配置感到无从下手。经过一番探索&#xff0c;我发现M2FP多人人体解析模型可…

作者头像 李华
网站建设 2026/4/23 12:15:18

M2FP模型实战:快速构建智能健身分析系统

M2FP模型实战&#xff1a;快速构建智能健身分析系统 作为一名健身APP开发者&#xff0c;你是否遇到过这样的需求&#xff1a;用户上传健身动作视频后&#xff0c;APP需要自动识别动作标准度&#xff0c;但苦于缺乏精准的人体部件解析能力&#xff1f;M2FP模型正是解决这一痛点的…

作者头像 李华
网站建设 2026/4/23 13:44:29

M2FP多人解析终极指南:从环境搭建到API部署

M2FP多人解析终极指南&#xff1a;从环境搭建到API部署 如果你正在为团队寻找一个开箱即用的多人人体解析解决方案&#xff0c;M2FP&#xff08;Multi-scale Multi-hierarchical Feature Pyramid&#xff09;模型可能正是你需要的工具。它能高效处理包含多个人体的图像&#xf…

作者头像 李华
网站建设 2026/4/23 12:18:53

M2FP模型压缩:快速实验环境搭建与验证

M2FP模型压缩&#xff1a;快速实验环境搭建与验证 为什么移动端开发者需要M2FP模型压缩&#xff1f; 作为移动端开发者&#xff0c;你可能经常遇到这样的困境&#xff1a;好不容易训练好一个人体解析模型&#xff0c;却发现它根本无法在手机端流畅运行。模型太大、计算量太高、…

作者头像 李华
网站建设 2026/4/23 11:37:00

AI主播生成链路打通:从文案到语音,Sambert-Hifigan关键一环

AI主播生成链路打通&#xff1a;从文案到语音&#xff0c;Sambert-Hifigan关键一环 在构建AI主播的完整技术链路中&#xff0c;语音合成&#xff08;Text-to-Speech, TTS&#xff09; 是连接“文案”与“声音表达”的核心桥梁。尤其在中文场景下&#xff0c;如何实现自然、富有…

作者头像 李华
网站建设 2026/4/21 9:05:50

LLaMA Factory秘籍:如何用云端GPU快速处理大规模训练数据

LLaMA Factory秘籍&#xff1a;如何用云端GPU快速处理大规模训练数据 引言&#xff1a;当TB级数据遇上本地资源瓶颈 作为一名AI研究者&#xff0c;你是否遇到过这样的困境&#xff1a;手头有TB级的训练数据需要处理&#xff0c;但本地机器的存储空间和计算能力却捉襟见肘&#…

作者头像 李华