文章目录
- **1. Netplan(网络配置抽象层)**
- **2. NetworkManager(动态网络管理)**
- **3. systemd-networkd(轻量级网络管理)**
- **4. networking(传统的 ifupdown)**
- **5. 它们之间的关系**
- **6. 如何选择?**
- **7. 常见问题**
- **总结**
Ubuntu 的网络管理确实涉及多个组件,包括 Netplan、NetworkManager、systemd-networkd 和传统的 networking(ifupdown),它们各自有不同的作用,但也可以协同工作。以下是它们的关系和区别:
1. Netplan(网络配置抽象层)
- 作用:Netplan 是一个 YAML 配置文件解析器,本身不直接管理网络,而是将配置转换为底层网络管理工具(如 NetworkManager 或 systemd-networkd)的格式。
- 特点:
- 提供统一的 YAML 配置文件(
/etc/netplan/*.yaml
)。 - 支持两种后端(
renderer
):NetworkManager
(适用于桌面环境)systemd-networkd
(适用于服务器环境)
- 通过
netplan apply
应用配置。
- 提供统一的 YAML 配置文件(
- 示例配置:
network:version: 2renderer: NetworkManager # 或 networkdethernets:enp0s3:dhcp4: true
2. NetworkManager(动态网络管理)
- 作用:NetworkManager 是一个 高级网络管理工具,主要用于 桌面环境,支持 Wi-Fi、VPN、移动网络等动态网络管理。
- 特点:
- 提供 GUI(如 GNOME 网络设置)和 CLI(
nmcli
/nmtui
)。 - 适用于需要频繁切换网络的环境(如笔记本电脑)。
- 默认在 Ubuntu 桌面版使用 Netplan 的
renderer: NetworkManager
。
- 提供 GUI(如 GNOME 网络设置)和 CLI(
- 常用命令:
nmcli device status # 查看网络设备 nmcli connection show # 查看连接
3. systemd-networkd(轻量级网络管理)
- 作用:
systemd-networkd
是 systemd 的一部分,是一个轻量级网络管理工具,适用于 服务器 或嵌入式设备。 - 特点:
- 占用资源少,适合静态网络配置。
- 不支持 Wi-Fi(需搭配
wpa_supplicant
)。 - 默认在 Ubuntu Server 版使用 Netplan 的
renderer: networkd
。
- 配置文件:
- Netplan 生成的配置会转换为
/run/systemd/network/*.network
文件。
- Netplan 生成的配置会转换为
4. networking(传统的 ifupdown)
- 作用:
networking
是传统的网络管理方式,使用/etc/network/interfaces
文件。 - 特点:
- 在 Ubuntu 18.04 后被 Netplan 取代,但仍可手动安装
ifupdown
包使用。 - 适用于简单的静态网络配置,但功能有限。
- 在 Ubuntu 18.04 后被 Netplan 取代,但仍可手动安装
- 示例配置:
auto enp0s3 iface enp0s3 inet staticaddress 192.168.1.100netmask 255.255.255.0gateway 192.168.1.1
5. 它们之间的关系
组件 | 作用 | 适用场景 | 依赖关系 |
---|---|---|---|
Netplan | 统一配置,生成底层工具所需的配置 | 所有 Ubuntu 版本 | 依赖 NetworkManager 或 systemd-networkd |
NetworkManager | 动态网络管理(Wi-Fi、VPN等) | 桌面环境 | 可被 Netplan 调用 |
systemd-networkd | 轻量级静态网络管理 | 服务器/嵌入式 | 可被 Netplan 调用 |
networking (ifupdown) | 传统网络配置(/etc/network/interfaces ) | 旧系统/特殊需求 | 需手动安装,与 Netplan 冲突 |
6. 如何选择?
- 桌面用户:
- 使用 NetworkManager(Netplan 的
renderer: NetworkManager
),方便管理 Wi-Fi 和动态网络。
- 使用 NetworkManager(Netplan 的
- 服务器用户:
- 使用 systemd-networkd(Netplan 的
renderer: networkd
),更轻量、稳定。
- 使用 systemd-networkd(Netplan 的
- 传统配置(不推荐):
- 可安装
ifupdown
并使用/etc/network/interfaces
,但可能与 Netplan 冲突。
- 可安装
7. 常见问题
-
Q: Netplan 和 NetworkManager/systemd-networkd 谁优先级更高?
A: Netplan 只是生成配置,实际管理由底层工具(NetworkManager 或 systemd-networkd)执行。如果手动用nmcli
修改,可能会覆盖 Netplan 的配置。 -
Q: 如何检查当前使用的网络管理工具?
A: 运行:systemctl status NetworkManager # 检查 NetworkManager systemctl status systemd-networkd # 检查 systemd-networkd
-
Q: 为什么
netplan apply
后网络没变化?
A: 可能是 YAML 缩进错误,或底层服务未重启。可尝试:sudo netplan --debug apply # 查看详细错误
总结
- Netplan 是配置层,NetworkManager 和 systemd-networkd 是执行层。
- 桌面用户用 NetworkManager,服务器用户用 systemd-networkd。
- 传统
ifupdown
已淘汰,但仍可手动使用。
如果需要更详细的配置示例,可以参考 Netplan 官方文档或 Ubuntu 网络管理指南。