Ubuntu 22.04 网络配置的‘双保险’:手把手教你用netplan避开cloud-init的坑

张开发
2026/4/21 5:39:26 15 分钟阅读

分享文章

Ubuntu 22.04 网络配置的‘双保险’:手把手教你用netplan避开cloud-init的坑
Ubuntu 22.04网络配置权威指南彻底解决netplan与cloud-init的冲突问题在云原生时代Ubuntu 22.04作为最受欢迎的服务器操作系统之一其网络配置却暗藏玄机。许多管理员都遭遇过这样的困境明明用netplan修改了IP地址重启后却神奇地恢复原状。这背后往往不是简单的配置错误而是netplan与cloud-init两大配置系统之间的权力斗争。1. 理解Ubuntu 22.04的网络配置生态现代Ubuntu服务器采用了一套复杂的网络配置架构主要由三个关键组件构成netplan作为网络配置的抽象层提供统一的YAML配置接口NetworkManager/systemd-networkd实际执行网络配置的后端cloud-init云环境初始化工具会覆盖已有网络配置当这三个系统各自为政时就会出现配置被意外覆盖的情况。特别是在云服务器环境中cloud-init会在每次启动时重新应用云平台提供的网络配置导致手动修改的IP地址被重置。# 查看当前活跃的网络渲染器 sudo netplan get all2. 诊断网络配置问题的根源遇到IP修改不生效的问题时需要系统性地排查原因。以下是关键诊断步骤2.1 检查Open vSwitch服务状态对于使用OVS(Open vSwitch)的环境首先确认基础服务是否正常运行# 检查ovsdb-server服务状态 sudo systemctl status ovsdb-server如果服务未运行需要先解决OVS问题# 安装并启动OVS服务 sudo apt update sudo apt install openvswitch-switch -y sudo systemctl start ovsdb-server sudo systemctl enable ovsdb-server2.2 确认cloud-init的干预即使OVS服务正常cloud-init仍可能覆盖配置。检查以下关键文件# 查看cloud-init的网络配置覆盖 ls -l /etc/cloud/cloud.cfg.d/*network*.cfg3. 彻底解决配置冲突的完整方案3.1 禁用cloud-init的网络管理创建或修改禁用cloud-init网络配置的文件sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg EOF network: {config: disabled} EOF3.2 正确配置netplan确保netplan配置文件的正确性避免使用cloud-init生成的配置# /etc/netplan/99-custom-config.yaml示例 network: version: 2 renderer: networkd ethernets: ens3: dhcp4: no addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]应用配置并验证sudo netplan generate sudo netplan apply4. 高级配置技巧与最佳实践4.1 多网卡绑定配置示例对于需要网络冗余的生产环境可以配置链路聚合network: version: 2 bonds: bond0: interfaces: [ens3, ens4] parameters: mode: 802.3ad lacp-rate: fast ethernets: ens3: {} ens4: {}4.2 网络调试命令速查表命令用途示例输出关键信息ip a查看接口与IPinet 192.168.1.100/24ip route查看路由表default via 192.168.1.1journalctl -u systemd-networkd查看网络服务日志ens3: Configured4.3 常见问题排查清单问题配置应用后网络断开检查物理连接、防火墙规则、IP冲突命令ping -c 4 192.168.1.1问题DNS解析失败检查/etc/resolv.conf内容命令dig example.com问题服务重启后配置丢失检查cloud-init日志(/var/log/cloud-init.log)命令sudo cloud-init analyze show

更多文章