netplan 是配置前端(yaml 解析器),后端由 systemd-networkd 或 networkmanager 执行;优先选 systemd-networkd 适用于固定拓扑、自动化运维、资源敏感及高稳定性场景;networkmanager 适用于动态多链路、802.1x 认证、nmstate 编排和 wi-fi 热点等例外场景;二者不可混用,切换需同步调整服务状态。

现代 Linux 服务器选型中,NetworkManager、systemd-networkd 和 netplan 并非并列关系,而是分层协作:netplan 是配置前端(YAML 解析器),后端真正执行网络管理的是 NetworkManager 或 systemd-networkd。关键不是“三选一”,而是明确“谁管配置、谁管运行”。
优先用 systemd-networkd 的典型场景
适用于绝大多数传统与云服务器环境,尤其是网络拓扑固定、无需人工干预的生产部署:
- 配置一次即长期有效:如 IDC 物理机、KVM 虚拟机、AWS EC2 实例(使用 Cloud-Init 初始化后不再变动)
- 自动化运维友好:Ansible、Terraform、Packer 等工具可直接写入 /etc/netplan/*.yaml,再执行 netplan apply,无状态、易版本控制
- 资源敏感:不启动 D-Bus、不依赖 GUI 组件,内存占用通常低于 3MB,适合容器宿主机或边缘设备
- 稳定性要求高:与 systemd 深度集成,服务崩溃后自动重启,无额外守护进程干扰
考虑 NetworkManager 的服务器例外情况
虽然非主流,但在特定现代服务器场景下,NetworkManager 已具备实用价值:
- 需要动态多连接策略:例如一台服务器同时接入有线内网 + USB 移动宽带备份链路,并自动 failover
- 集成企业级认证:使用 802.1X(EAP-TLS)对接 RADIUS 的管理网口,NetworkManager 原生支持完整证书链和密钥管理
- 通过 nmstate 实现声明式编排:配合 OpenShift、Metal3 或 GitOps 流水线,用 YAML 描述“期望网络状态”,由 nmstate-agent 自动收敛
- 需运行 Wi-Fi AP 或热点功能:如边缘网关设备需开启 hostapd 模式共享网络,NetworkManager 可统一纳管 wpa_supplicant 和 dnsmasq
netplan 的真实角色:配置抽象层,不是运行时
netplan 本身不处理任何网络包,也不监听接口事件。它只做两件事:
- 读取 /etc/netplan/*.yaml,校验语法与语义(比如 CIDR 格式、renderer 是否存在)
- 根据 renderer: 字段,将 YAML 编译为对应后端能识别的格式:
→ renderer: networkd → 生成 /run/systemd/network/*.network
→ renderer: NetworkManager → 生成 /run/NetworkManager/system-connections/*.nmconnection
这意味着:修改 netplan 配置后必须运行 netplan apply 才生效;若 renderer 设为 NetworkManager,但该服务未启用,则配置不会落地。
共存与切换建议
实际运维中,应避免手动混用。推荐做法是:
- 新装 Ubuntu Server(22.04+)默认 renderer: networkd,保持即可;确认 systemctl is-active systemd-networkd 为 active
- 如需临时启用 NetworkManager(例如调试 Wi-Fi),先停用 systemd-networkd:
sudo systemctl stop systemd-networkd && sudo systemctl disable systemd-networkd
再启用 NetworkManager:
sudo systemctl enable --now NetworkManager - 切勿仅修改 netplan 中的 renderer 字段却不调整服务状态——这会导致配置无法应用且无报错提示
- 生产环境禁用 NetworkManager 的图形依赖(如 ModemManager、blueman),仅保留核心服务以降低攻击面










