1. 问题现象与背景分析
最近在Ubuntu服务器上遇到一个棘手问题:每次系统重启后,之前配置好的静态IP地址、DNS设置等网络参数都会丢失,必须重新手动配置才能恢复网络连接。这种情况在Ubuntu 18.04及更高版本中尤为常见,特别是当使用Netplan进行网络管理时。
这个问题看似简单,实则涉及Ubuntu网络管理架构的深层机制。传统上,Ubuntu使用ifupdown工具管理网络(通过/etc/network/interfaces文件),但从17.10版本开始逐步转向Netplan(使用YAML配置文件)。这种过渡期的架构变化,加上不同网络管理工具之间的兼容性问题,是导致配置丢失的主要原因。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 根本原因诊断
2.1 Netplan与NetworkManager的冲突
现代Ubuntu系统通常同时安装Netplan和NetworkManager两个网络管理工具:
- Netplan:作为配置生成器,将YAML配置转换为后端实际使用的配置
- NetworkManager:常用于桌面环境,提供动态网络管理能力
当两者共存时,如果没有明确指定管理权限,重启后可能会出现配置被覆盖的情况。通过以下命令可以检查当前活跃的网络管理工具:
bash复制ps aux | grep -E 'NetworkManager|netplan'
2.2 配置文件权限问题
检查/etc/netplan目录下配置文件的权限至关重要。错误的权限设置可能导致配置无法在启动时正确加载:
bash复制ls -l /etc/netplan/
理想情况下,配置文件应具有644权限(-rw-r--r--),且属于root用户。
3. 永久解决方案实施
3.1 明确网络管理权限
编辑Netplan主配置文件(通常位于/etc/netplan/50-cloud-init.yaml或类似名称):
yaml复制network:
version: 2
renderer: networkd # 明确使用systemd-networkd
ethernets:
enp0s3:
dhcp4: no
addresses: [192.168.1.100/24]
gatew
