文章目录
-
- [1. NetworkManager 的核心组成](#1. NetworkManager 的核心组成)
- [2. NetworkManager 的主要功能](#2. NetworkManager 的主要功能)
-
- **(1)自动网络管理**
- **(2)多网络配置管理**
- [**(3)DNS 与路由管理**](#(3)DNS 与路由管理)
- **(4)设备状态管理**
- [3. 常用 `nmcli` 命令](#3. 常用
nmcli
命令) -
- **(1)查看网络状态**
- [**(2)配置静态 IP**](#(2)配置静态 IP)
- [**(3)配置 DHCP**](#(3)配置 DHCP)
- [**(4)管理 Wi-Fi**](#(4)管理 Wi-Fi)
- **(5)临时修改配置**
- [4. 高级配置](#4. 高级配置)
-
- [**(1)禁用 NetworkManager 管理特定设备**](#(1)禁用 NetworkManager 管理特定设备)
- **(2)日志调试**
- **(3)插件管理**
- [5. 与传统网络管理的区别](#5. 与传统网络管理的区别)
- [6. 常见问题](#6. 常见问题)
-
- [**(1)`/etc/resolv.conf` 被覆盖**](#(1)
/etc/resolv.conf
被覆盖) - [**(2)NetworkManager 与 `network.service` 冲突**](#(2)NetworkManager 与
network.service
冲突)
- [**(1)`/etc/resolv.conf` 被覆盖**](#(1)
- 总结
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
,但可通过配置禁用:ini[main] dns=none
然后手动修改 DNS。
(4)设备状态管理
connected
:设备已连接并激活。disconnected
:设备未连接但可管理。unmanaged
:NetworkManager 不管理该设备(如手动配置的网卡)。
3. 常用 nmcli
命令
(1)查看网络状态
bash
nmcli device status # 查看设备状态
nmcli connection show # 查看所有连接
nmcli general status # 检查 NetworkManager 运行状态
(2)配置静态 IP
bash
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
bash
nmcli con add type ethernet con-name "dhcp-eth" ifname eth0 ipv4.method auto
nmcli con up "dhcp-eth"
(4)管理 Wi-Fi
bash
nmcli device wifi list # 扫描可用 Wi-Fi
nmcli device wifi connect "SSID" password "PASSWORD" # 连接 Wi-Fi
nmcli connection delete "SSID" # 删除 Wi-Fi 配置
(5)临时修改配置
bash
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
中添加:
ini
[keyfile]
unmanaged-devices=interface-name:eth1
然后重启服务:
bash
systemctl restart NetworkManager
(2)日志调试
在 /etc/NetworkManager/conf.d/logging.conf
中设置:
ini
[logging]
level=DEBUG
domains=ALL
查看日志:
bash
journalctl -u NetworkManager
(3)插件管理
默认使用 keyfile
插件,但可切换为 ifcfg-rh
(RHEL 风格):
ini
[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:bashnmcli con mod "my-eth" ipv4.dns "8.8.8.8" nmcli con up "my-eth"
-
或禁用 NetworkManager 的 DNS 管理:
ini[main] dns=none
-
(2)NetworkManager 与 network.service
冲突
- 在 RHEL/CentOS 8+ 中,
network.service
已废弃,仅支持 NetworkManager。
总结
NetworkManager 是 Linux 上最强大的网络管理工具之一,适用于桌面和服务器环境,支持动态网络切换、VPN、DNS 管理等。通过 nmcli
、nmtui
或 GUI 工具,用户可以灵活配置网络,而高级用户可通过配置文件进一步定制行为。