🌙

NetworkManager服务

一、NetworkManager 服务详细介绍

NetworkManager 是 Linux 系统上用于管理和监控网络设置的核心守护进程,最初由 Red Hat 于 2004 年启动,现由 GNOME 项目维护。它的设计目标是让 Linux 用户更轻松地处理现代网络需求,尤其是无线网络,能够自动发现网卡并配置 IP 地址。


核心组成

NetworkManager 主要由以下几个部分组成:

  • 服务进程(NetworkManager.service):负责检测网络设备、管理连接状态、自动切换最佳网络,由 systemd 管理,支持开机自启和日志监控。默认存储连接配置在 /etc/NetworkManager/system-connections/

  • 命令行工具(nmcli):功能丰富的命令行管理工具,可管理连接配置(connection)和物理/虚拟网卡设备(device)。

  • 文本界面工具(nmtui):基于终端的交互式文本界面,适合无图形环境下的网络配置。

  • 图形化工具:集成在 GNOME、KDE 等桌面环境中,通常以系统托盘图标的形式呈现,方便用户直观管理网络。

  • D-Bus API:提供编程接口,允许应用程序查询和控制网络配置与状态。例如,Web 控制台界面就通过 D-Bus 接口来配置网络。


主要功能

自动网络管理

NetworkManager 能够自动检测网络设备并创建临时连接以提供网络连通性。当检测到系统中没有网络配置但存在网络设备时,它会自动创建临时连接。支持有线网络优先策略——当插入网线时自动切换到有线连接,拔出后自动回切到无线网络。

多网络配置管理

支持多种网络类型:

  • 有线以太网

  • 无线 Wi-Fi(支持扫描、认证、加密)

  • VPN(包括 OpenVPN、IPSec 等)

  • 移动宽带(WWAN)

  • 桥接(Bridge)和网卡绑定(Bonding)

  • VLAN、Team 等高级网络

DNS 与路由管理

NetworkManager 可以配置网络别名、IP 地址、静态路由、DNS 信息等连接参数,并支持 DHCP 动态获取和静态配置两种方式。

设备状态持久化

重启后保持设备状态,并接管在重启过程中被设置为受管模式的接口,确保网络配置的连续性。


核心概念:Connection 与 Device

NetworkManager 主要管理两个对象:

  • Device(设备):物理或虚拟网卡,如 eth0、wlan0 等。

  • Connection(连接):网络配置档案,包含 IP 地址、DNS、路由等参数。

两者是多对一的关系——一个设备可以有多个连接配置,但同一时刻只能有一个连接对设备生效。


常用 nmcli 命令

查看网络状态

 nmcli general status          # 查看整体状态
 nmcli device status           # 查看设备状态
 nmcli connection show         # 查看所有连接

配置静态 IP

 nmcli connection modify eth0 ipv4.addresses 192.168.1.100/24
 nmcli connection modify eth0 ipv4.gateway 192.168.1.1
 nmcli connection modify eth0 ipv4.dns "8.8.8.8"
 nmcli connection modify eth0 ipv4.method manual
 nmcli connection up eth0

配置 DHCP

 nmcli connection modify eth0 ipv4.method auto
 nmcli connection up eth0

管理 Wi-Fi

 nmcli device wifi list        # 扫描可用 Wi-Fi
 nmcli device wifi connect SSID password PASSWORD  # 连接 Wi-Fi

启停连接

 nmcli connection down eth0    # 断开连接
 nmcli connection up eth0      # 激活连接

配置文件

  • 主配置文件/etc/NetworkManager/NetworkManager.conf,采用类似 .ini 的格式,包含 [main] 等节,用于定义插件等全局设置。

  • 连接配置文件/etc/NetworkManager/system-connections/ 目录下,以 .nmconnection 文件保存各连接的详细配置。

  • 插件机制:NetworkManager 使用插件与不同发行版的网络配置工具交互,如适用于 Red Hat 风格的 ifcfg-rh 插件、适用于 Debian/Ubuntu 的 ifupdown 插件等。


与 network.service 的关系

在 CentOS 7/RHEL 7 中,network.serviceNetworkManager.service 同时存在,属于过渡阶段。到了 CentOS 8/RHEL 8,network.service 已被废弃(默认不安装),只能通过 NetworkManager 进行网络配置。

两者可能产生冲突,特别是在使用 nmcli 配置 bonding 后,再用 systemctl restart network 重启网络服务会导致异常。解决方法是在网卡配置文件中添加 NM_CONTROLLED=no,将设备脱离 NetworkManager 管理。


与 systemd-networkd 的对比

特性NetworkManagersystemd-networkd
适用场景 桌面、笔记本、移动设备 服务器、容器、嵌入式
动态切换 支持自动切换网络 不支持
图形界面 支持
资源占用 较高 较低
配置方式 nmcli、GUI、配置文件 纯配置文件
Wi-Fi/VPN 完整支持 不支持

服务管理命令

 systemctl status NetworkManager    # 查看状态
 systemctl start NetworkManager     # 启动
 systemctl stop NetworkManager      # 停止
 systemctl restart NetworkManager   # 重启
 systemctl enable NetworkManager    # 开机自启
 systemctl disable NetworkManager   # 禁用开机自启

高级特性

  • Dispatcher 脚本/etc/NetworkManager/dispatcher.d/ 目录下的脚本可在网络连接状态变化时自动执行,用于启动或停止相关服务。

  • NetworkManager-wait-online:延迟系统启动直到网络就绪,确保依赖网络的服务在网络可用后再启动。

  • 日志调试:通过 nmcli general logging 可查看和调整日志级别与域,便于故障排查。


总结

NetworkManager 是现代 Linux 系统中功能最全面的网络管理工具,特别适合桌面和笔记本等需要频繁切换网络的场景。它通过自动化配置、动态网络切换和统一的管理接口,极大地简化了 Linux 网络管理的复杂度。对于服务器环境,如果不需要动态切换功能,也可以选择更轻量的 systemd-networkd。

posted @ 2026-06-24 17:07  星火撩原  阅读(11)  评论(0)    收藏  举报
本站已运行:0
🌙 夜间模式
🌙
🌙