文章目录
NetworkManager 是 Linux 系统上用于管理网络连接的核心服务,支持有线、无线、VPN、移动宽带等多种网络类型,并提供自动化配置、动态切换和统一管理功能。以下是其核心组成及用法的全面介绍:
1. NetworkManager 的核心组成
NetworkManager 主要由以下几个部分组成:
(1)服务进程(NetworkManager.service)
- 负责检测网络设备、管理连接状态、自动切换最佳网络。
- 由
systemd
管理,支持开机自启、日志监控等。 - 默认存储连接配置在
/etc/NetworkManager/system-connections/
。
(2)命令行工具(nmcli
)
- 提供完整的网络管理功能,支持脚本化操作。
- 主要管理两类对象:
connection
(连接配置):相当于网络配置文件,如静态 IP、DHCP、Wi-Fi 等。device
(物理/虚拟网卡):如eth0
、wlan0
。
(3)图形化工具
nmtui
:基于终端的交互式配置界面。nm-connection-editor
:GNOME 环境下的图形配置工具。- 桌面小程序(如
nm-applet
):提供托盘图标,方便用户切换网络。
(4)配置文件
- 主配置文件:
/etc/NetworkManager/NetworkManager.conf
,控制全局行为(如 DNS 管理、插件加载)。 - 连接配置文件:存储在
/etc/NetworkManager/system-connections/
,每个连接对应一个.nmconnection
文件。
2. NetworkManager 的主要功能
(1)自动网络管理
- 自动检测可用网络(有线、Wi-Fi、移动热点等)。
- 支持 DHCP 和静态 IP 配置。
- 当网络断开时,自动尝试其他可用连接。
(2)多网络配置管理
- 支持 VPN(OpenVPN、WireGuard)、网桥、VLAN 等高级配置。
- 允许为同一设备配置多个连接,但同一时间仅一个生效。
(3)DNS 与路由管理
- 默认管理
/etc/resolv.conf
,但可通过配置禁用:
然后手动修改 DNS。[main] dns=none
(4)设备状态管理
connected
:设备已连接并激活。disconnected
:设备未连接但可管理。unmanaged
:NetworkManager 不管理该设备(如手动配置的网卡)。
3. 常用 nmcli
命令
(1)查看网络状态
nmcli device status # 查看设备状态
nmcli connection show # 查看所有连接
nmcli general status # 检查 NetworkManager 运行状态
(2)配置静态 IP
nmcli con add type ethernet con-name "my-eth" ifname eth0 ipv4.method manual ipv4.addr "192.168.1.100/24" ipv4.gateway "192.168.1.1" ipv4.dns "8.8.8.8"
nmcli con up "my-eth" # 激活连接
(3)配置 DHCP
nmcli con add type ethernet con-name "dhcp-eth" ifname eth0 ipv4.method auto
nmcli con up "dhcp-eth"
(4)管理 Wi-Fi
nmcli device wifi list # 扫描可用 Wi-Fi
nmcli device wifi connect "SSID" password "PASSWORD" # 连接 Wi-Fi
nmcli connection delete "SSID" # 删除 Wi-Fi 配置
(5)临时修改配置
nmcli connection modify "my-eth" ipv4.addr "192.168.1.200/24" # 修改 IP
nmcli connection up "my-eth" # 立即生效
4. 高级配置
(1)禁用 NetworkManager 管理特定设备
在 /etc/NetworkManager/conf.d/unmanaged.conf
中添加:
[keyfile]
unmanaged-devices=interface-name:eth1
然后重启服务:
systemctl restart NetworkManager
(2)日志调试
在 /etc/NetworkManager/conf.d/logging.conf
中设置:
[logging]
level=DEBUG
domains=ALL
查看日志:
journalctl -u NetworkManager
(3)插件管理
默认使用 keyfile
插件,但可切换为 ifcfg-rh
(RHEL 风格):
[main]
plugins=ifcfg-rh,keyfile
5. 与传统网络管理的区别
工具 | 适用场景 | 特点 |
---|---|---|
NetworkManager | 动态网络(Wi-Fi、VPN、移动热点) | 自动化管理,支持 GUI/CLI |
systemd-networkd | 服务器/嵌入式设备 | 轻量级,适合静态 IP 配置 |
ifupdown(networking) | 旧版 Linux(如 Debian 9 之前) | 手动配置 /etc/network/interfaces |
6. 常见问题
(1)/etc/resolv.conf
被覆盖
- 解决方法:
- 使用
nmcli
修改 DNS:nmcli con mod "my-eth" ipv4.dns "8.8.8.8" nmcli con up "my-eth"
- 或禁用 NetworkManager 的 DNS 管理:
[main] dns=none
- 使用
(2)NetworkManager 与 network.service
冲突
- 在 RHEL/CentOS 8+ 中,
network.service
已废弃,仅支持 NetworkManager。
总结
NetworkManager 是 Linux 上最强大的网络管理工具之一,适用于桌面和服务器环境,支持动态网络切换、VPN、DNS 管理等。通过 nmcli
、nmtui
或 GUI 工具,用户可以灵活配置网络,而高级用户可通过配置文件进一步定制行为。