NetworkManager介绍与用法

发布于:2025-06-20 ⋅ 阅读:(15) ⋅ 点赞:(0)


NetworkManager 是 Linux 系统上用于管理网络连接的核心服务,支持有线、无线、VPN、移动宽带等多种网络类型,并提供自动化配置、动态切换和统一管理功能。以下是其核心组成及用法的全面介绍:


1. NetworkManager 的核心组成

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

(1)服务进程(NetworkManager.service)

  • 负责检测网络设备、管理连接状态、自动切换最佳网络。
  • systemd 管理,支持开机自启、日志监控等。
  • 默认存储连接配置在 /etc/NetworkManager/system-connections/

(2)命令行工具(nmcli

  • 提供完整的网络管理功能,支持脚本化操作。
  • 主要管理两类对象:
    • connection(连接配置):相当于网络配置文件,如静态 IP、DHCP、Wi-Fi 等。
    • device(物理/虚拟网卡):如 eth0wlan0

(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,但可通过配置禁用:
    [main]
    dns=none
    
    然后手动修改 DNS。

(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 管理等。通过 nmclinmtui 或 GUI 工具,用户可以灵活配置网络,而高级用户可通过配置文件进一步定制行为。


网站公告

今日签到

点亮在社区的每一天
去签到