当前位置: 首页 > news >正文

NetworkManager介绍与用法

文章目录

    • 1. NetworkManager 的核心组成
      • **(1)服务进程(NetworkManager.service)**
      • **(2)命令行工具(`nmcli`)**
      • **(3)图形化工具**
      • **(4)配置文件**
    • 2. NetworkManager 的主要功能
      • **(1)自动网络管理**
      • **(2)多网络配置管理**
      • **(3)DNS 与路由管理**
      • **(4)设备状态管理**
    • 3. 常用 `nmcli` 命令
      • **(1)查看网络状态**
      • **(2)配置静态 IP**
      • **(3)配置 DHCP**
      • **(4)管理 Wi-Fi**
      • **(5)临时修改配置**
    • 4. 高级配置
      • **(1)禁用 NetworkManager 管理特定设备**
      • **(2)日志调试**
      • **(3)插件管理**
    • 5. 与传统网络管理的区别
    • 6. 常见问题
      • **(1)`/etc/resolv.conf` 被覆盖**
      • **(2)NetworkManager 与 `network.service` 冲突**
    • 总结

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

http://www.lryc.cn/news/572405.html

相关文章:

  • 【单片机】51单片机练习代码
  • GRBL_UNO R3编译下载
  • Spring Boot 虚拟线程 vs WebFlux:谁更胜一筹?
  • Spring-创建第一个SpringBoot项目
  • apisix-使用hmac-auth插件进行接口签名身份验证\apisix consumer
  • SpringBoot项目启动时自动加载数据到Redis的完整实现方案,用于存储字典,定时任务,登录用户等
  • Spring @Autowired 依赖注入全解析
  • 语音情感识别:CNN-LSTM 和注意力增强 CNN-LSTM 模型的比较分析
  • Hive优化详细讲解
  • Redis 的优势有哪些,它是CP 还是 AP?CAP 理论又是什么?
  • C#的泛型和匿名类型
  • Ubuntu最新版本(Ubuntu22.04LTS)安装nfs服务器
  • Java八股文——计算机网络「传输层篇」
  • CppCon 2017 学习:Everything You Ever Wanted to Know about DLLs
  • CppCon 2017 学习:dynamic_cast from scratch
  • 【AJAX 实战】图书管理系统上 渲染图书列表+新增图书+删除图书
  • windows系统JDK1.8 与JDK 17切换
  • css3 文本效果(text-shadow、text-overflow、word-wrap、word-break)文本阴影、文本换行、文本溢出并隐藏显示省略号
  • 数据结构 6(算法)
  • CMake实践:指定gcc版本编译和交叉编译
  • 华为OD机试-最佳植树距离-二分(JAVA 2025A卷)
  • DeserializationViewer使用说明
  • Java并发编程实战 Day 29:大数据处理的并行计算模型
  • Arduino Nano 33 BLE Sense Rev 2开发板使用指南之【环境搭建 / 点灯】
  • FPGA基础 -- Verilog 命名事件
  • React 19中如何向Vue那样自定义状态和方法暴露给父组件。
  • 什么是Spark
  • 服务器如何从http升级到https(nginx)
  • Kaggle-Plant Seedlings Classification-(多分类+CNN+图形处理)
  • HashMap算法高级应用实战:频率类子数组问题的5种破解模式