要确认系统当前使用的是 networkd
(systemd-networkd)还是 NetworkManager
作为网络渲染器(renderer),可以通过以下方法检查:
方法 1:查看 Netplan 配置文件
Netplan 的配置文件(通常在 /etc/netplan/
目录下)中会明确指定 renderer
字段。例如:
cat /etc/netplan/*.yaml
- 如果显示
renderer: networkd
→ 使用 systemd-networkd。 - 如果显示
renderer: NetworkManager
→ 使用 NetworkManager。 - 如果未指定
renderer
,默认根据系统类型选择:- Ubuntu Server:默认
networkd
。 - Ubuntu Desktop:默认
NetworkManager
。
- Ubuntu Server:默认
方法 2:检查活跃的网络管理服务
运行以下命令查看哪个服务正在管理网络:
systemctl status systemd-networkd NetworkManager --no-pager
结果解读:
systemd-networkd
活跃:- 会显示
active (running)
,且可能标注为enabled
(开机自启)。 - 对应的日志会显示接口管理记录。
● systemd-networkd.service - Network Service Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2024-02-01 12:00:00 UTC; 1h ago
- 会显示
NetworkManager
活跃:- 会显示类似
active (running)
的状态。 - 桌面环境通常强制使用 NetworkManager。
● NetworkManager.service - Network Manager Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2024-02-01 12:00:00 UTC; 1h ago
- 会显示类似
两个服务均未运行:
- 可能是手动配置了网络(如直接编辑
/etc/network/interfaces
),或系统未正确初始化。
- 可能是手动配置了网络(如直接编辑
方法 3:通过网络接口管理工具确认
如果是 networkd
:
- 使用
networkctl
命令查看接口状态:输出示例:networkctl list
IDX LINK TYPE OPERATIONAL SETUP 1 lo loopback carrier unmanaged 2 eth0 ether routable configured
如果是 NetworkManager
:
- 使用
nmcli
命令查看连接:输出示例:nmcli device status
DEVICE TYPE STATE CONNECTION eth0 ethernet connected Wired-connection-1 lo loopback unmanaged --
方法 4:检查日志
- 查看
networkd
的日志:journalctl -u systemd-networkd -n 20
- 查看
NetworkManager
的日志:日志中会显示哪个服务在管理接口的 IP 分配和路由。journalctl -u NetworkManager -n 20
总结判断
特征 | networkd | NetworkManager |
---|---|---|
配置文件指定 | renderer: networkd | renderer: NetworkManager |
活跃服务 | systemd-networkd 运行 | NetworkManager 运行 |
管理工具 | networkctl | nmcli |
适用场景 | 服务器(无图形界面) | 桌面环境(图形界面支持) |
注意事项
不要同时启用两者: 如果两个服务均被激活,可能导致网络配置冲突(如重复获取 IP)。通常由 Netplan 的
renderer
决定优先级。强制切换渲染器: 如果需要切换,编辑 Netplan 配置文件后执行:
sudo netplan apply
然后重启相关服务:
- 切换到
networkd
:sudo systemctl stop NetworkManager sudo systemctl disable NetworkManager sudo systemctl enable systemd-networkd
- 切换到
NetworkManager
:sudo systemctl stop systemd-networkd sudo systemctl disable systemd-networkd sudo systemctl enable NetworkManager
- 切换到
桌面环境的特殊情况: 即使手动配置为
networkd
,部分桌面环境(如 GNOME)可能仍会强制启动NetworkManager
。此时需卸载NetworkManager
或修改其配置。