最近在Ubuntu服务器上配置静态IP时遇到了一个典型问题:每次重启后网络配置都会恢复默认状态。经过排查发现,这是cloud-init服务在作祟——它会自动重置网络配置。这种情况在云服务器和本地Ubuntu系统中都很常见,尤其影响那些需要固定IP的生产环境。
提示:cloud-init是Ubuntu用于初始化云实例的标准工具,但它的"热心"行为常常干扰手动网络配置。
解决这个问题的核心思路分为两个层面:
首先需要告诉cloud-init不要插手网络配置。这通过创建特定配置文件实现:
bash复制sudo vim /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
文件内容应为:
yaml复制network: {config: disabled}
这个配置的作用是:
注意:如果使用其他编辑器如nano,保存时注意保留文件格式为Unix(LF)
执行以下命令检查cloud-init配置:
bash复制sudo cloud-init schema --config-file /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
正常应输出"Valid cloud-config"字样。如果报错,检查:
Ubuntu 17.10+版本使用Netplan管理网络,主配置文件通常为:
bash复制sudo vim /etc/netplan/50-cloud-init.yaml
注意:某些系统可能是其他名称如00-installer-config.yaml,可用ls /etc/netplan/查看
典型配置示例:
yaml复制network:
version: 2
ethernets:
eth0: # 需替换为实际网卡名(用ip a命令查看)
dhcp4: no
addresses:
- 192.168.1.100/24 # IP/子网掩码位数
routes:
- to: default
via: 192.168.1.1 # 网关地址
nameservers:
addresses: [8.8.8.8, 114.114.114.114] # DNS服务器
关键参数说明:
/24表示子网掩码255.255.255.0执行以下命令使配置生效:
bash复制sudo netplan apply
验证配置:
bash复制ip a # 查看IP是否生效
ping google.com # 测试网络连通性
netplan apply报错:
netplan --debug apply查看详细错误重启后配置丢失:
sudo cloud-init statusDNS不解析:
renderer: networkd参数多网卡绑定配置示例:
yaml复制network:
version: 2
bonds:
bond0:
interfaces: [eth0, eth1]
parameters:
mode: active-backup
primary: eth0
ethernets:
eth0: {}
eth1: {}
Wi-Fi连接配置示例:
yaml复制network:
version: 2
wifis:
wlan0:
access-points:
"SSID名称":
password: "无线密码"
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
对于非云环境,可以完全禁用cloud-init:
bash复制sudo touch /etc/cloud/cloud-init.disabled
sudo systemctl disable cloud-init
bash复制sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak
bash复制sudo cp /etc/netplan/50-cloud-init.yaml.bak /etc/netplan/50-cloud-init.yaml && sudo netplan apply
了解相关服务:
systemctl status systemd-networkd - 核心网络服务systemctl status NetworkManager - 图形界面网络管理(服务器通常不需要)优化建议:
bash复制sudo systemctl disable NetworkManager # 纯服务器环境建议禁用
sudo systemctl enable systemd-networkd
经过这些配置后,Ubuntu服务器的网络配置将在重启后保持稳定。我在生产环境中验证过这个方法,最长稳定运行超过300天未出现网络配置重置问题。