NetworkManager 介绍与使用

简介

NetworkManager服务是一个专门用于管理和监控网络设置的守护进程,它由RedHat在2004年启动的项目,旨在简化Linux用户的现代网络需求处理,特别是无线网络的配置和管理。

Centos7之前网络服务是通过network进行管理,到了Centos7就同时支持network和NetworkManager(简称NM),相当于在Centos7的一个过渡,然后在Centos 8上已废弃network(默认不安装),只能通过NetworkManager进行网络配置。

参考来自 https://wiki.gnome.org/Projects/NetworkManager

组成

NetworkManager守护进程
这是服务的核心,运行于超级用户权限下,负责实际的网络连接管理、状态报告和网络变化的监控。它能够自动发现网络接口卡并配置IP地址,管理网络服务和网络连接。

客户端程序
允许用户管理网络连接,提供了一个用户界面用于配置和管理网络设置。客户端程序包括命令行工具和图形界面工具。

nmcli
nmcli是NetworkManager的命令行界面工具,它提供了丰富的命令和选项,可以用于查看网络连接状态、配置和管理网络连接、设置IP地址、DNS等。nmcli是一个纯命令行工具,适合在服务器环境或脚本中使用。

nmtui
nmtui是NetworkManager的基于ncurses的文本用户界面,它提供了一个类似图形界面的交互方式,使用方向键和回车键即可完成网络配置。nmtui适合在没有图形界面的环境下使用,提供了比nmcli更友好的交互体验。

图形前端
NetworkManager支持多种不同的图形前端,以适应不同的桌面环境,如GNOME Shell、GNOME Panel、KDE Plasma Workspaces和Cinnamon等。这些图形前端提供了用户友好的界面,使得网络管理更加直观和方便。

使用

这里主要介绍命令行工具nmcli常见用法。

选项与参数

语法

Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }

选项

OPTIONS
  # 在执行操作时,如果缺少必要的参数,nmcli会提示用户输入这些参数。
  -a, --ask                                ask for missing parameters
  # 设置是否在输出中使用颜色。auto表示自动检测,yes强制使用颜色,no则不使用颜色。
  -c, --colors auto|yes|no                 whether to use colors in output
  # 设置是否在输出值中转义列分隔符。这对于处理包含分隔符的字段值时很有用。
  -e, --escape yes|no                      escape columns separators in values
  # 指定输出中要包含的字段。可以指定一个或多个字段名,或使用all显示所有字段,common显示常见字段。
  -f, --fields <field,...>|all|common      specify fields to output
  # 这是-f选项的快捷方式,用于以表格形式输出指定的字段。
  -g, --get-values <field,...>|all|common  shortcut for -m tabular -t -f
  # 打印帮助信息,显示nmcli的用法和选项。
  -h, --help                               print this help
  # 设置输出模式。tabular为表格模式,multiline为多行模式,每个字段占一行。
  -m, --mode tabular|multiline             output mode
  # 概览模式,提供网络连接的概览信息。
  -o, --overview                           overview mode
  # 美化输出,使其更易于阅读。
  -p, --pretty                             pretty output
  # 允许显示密码等敏感信息。
  -s, --show-secrets                       allow displaying passwords
  # 简洁输出,减少输出中的额外信息,便于解析。
  -t, --terse                              terse output
  # 显示程序版本。
  -v, --version                            show program version
  # 设置等待操作完成的超时时间(以秒为单位)。
  -w, --wait <seconds>                     set timeout waiting for finishing operations

对象
nmcli的对象(OBJECT)代表了可以操作的不同类别,每个类别都有特定的命令和参数,主要管理2个对象: Connection(网卡连接配置) 和 Device(网卡设备),他们之间是多对一的关系,但是同一时刻只能有一个Connection对于Device才生效。

OBJECT
  # NetworkManager的一般状态和操作。可以用来显示NetworkManager的整体状态,例如是否启用了网络、连接状态等。
  g[eneral]       NetworkManager's general status and operations
  # 整体网络控制。可以用来启用或禁用NetworkManager管理的所有网络接口。
  n[etworking]    overall networking control
  # NetworkManager的无线电开关。可以用来管理无线网络的开关状态,例如启用或禁用Wi-Fi或WWAN。
  r[adio]         NetworkManager radio switches
  # NetworkManager的网络连接。可以用来创建、显示、编辑、删除、激活和停用网络连接。
  c[onnection]    NetworkManager's connections
  # 由NetworkManager管理的设备。可以用来控制和显示网络设备的状态,例如查看设备列表、设备的连接状态等。
  d[evice]        devices managed by NetworkManager
  # NetworkManager的秘密代理或polkit代理。这涉及到处理网络连接时可能需要的认证和权限。
  a[gent]         NetworkManager secret agent or polkit agent
  # 监控NetworkManager的变化。可以用来实时监控NetworkManager的状态变化。
  m[onitor]       monitor NetworkManager changes

常规选项 general

用于显示和管理 NetworkManager 的一些常规设置。

显示NetworkManager的整体状态

这是nmcli general命令的默认操作,当没有为nmcli general提供其他命令时,会执行此操作。
语法

nmcli general status

示例

[root@donkey ~]# nmcli general
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN
connected  full          enabled  enabled  enabled  enabled
[root@donkey ~]# nmcli general status
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN
connected  full          enabled  enabled  enabled  enabled

显式或更改系统主机名

不带任何参数时,此命令打印当前配置的主机名。当传递一个主机名时,它将被NetworkManager设置为新的系统主机名。
语法

nmcli general hostname [hostname]

示例

[root@localhost ~]# nmcli general hostname # 显示主机名
localhost.localdomain
[root@localhost ~]# nmcli general hostname donkey # 修改主机名
[root@localhost ~]# nmcli general hostname
donkey

显示调用者对各种NetworkManager提供的认证操作的权限

显示 NetworkManager 对各种操作的权限,如启用/禁用网络、修改连接等。
语法

nmcli general permissions

示例

[root@donkey ~]# nmcli general permissions
PERMISSION                                                        VALUE
org.freedesktop.NetworkManager.enable-disable-network             yes
org.freedesktop.NetworkManager.enable-disable-wifi                yes
org.freedesktop.NetworkManager.enable-disable-wwan                yes
org.freedesktop.NetworkManager.enable-disable-wimax               yes
org.freedesktop.NetworkManager.sleep-wake                         yes
org.freedesktop.NetworkManager.network-control                    yes
org.freedesktop.NetworkManager.wifi.share.protected               yes
org.freedesktop.NetworkManager.wifi.share.open                    yes
org.freedesktop.NetworkManager.settings.modify.system             yes
org.freedesktop.NetworkManager.settings.modify.own                yes
org.freedesktop.NetworkManager.settings.modify.hostname           yes
org.freedesktop.NetworkManager.settings.modify.global-dns         yes
org.freedesktop.NetworkManager.reload                             yes
org.freedesktop.NetworkManager.checkpoint-rollback                yes
org.freedesktop.NetworkManager.enable-disable-statistics          yes
org.freedesktop.NetworkManager.enable-disable-connectivity-check  yes
org.freedesktop.NetworkManager.wifi.scan                          unknown

查看当前的日志级别和域

显示或修改 NetworkManager 的日志级别和日志域。不带参数时显示当前设置,提供 level 和 domains 则相应调整日志级别和域。
语法

nmcli general logging [level <log level>] [domains <log domains>]
  • level <log level> 可选参数,指定日志级别。可用的级别有:
    • OFF - 不记录任何 NetworkManager 消息
    • ERR - 仅记录严重错误
    • WARN - 记录警告信息
    • INFO - 记录各种有用的状态和操作信息(默认级别)
    • DEBUG - 启用调试所需的详细日志记录
    • TRACE - 启用比 DEBUG 更详细的日志记录
  • domains <log domains> 可选参数,指定要记录日志的域(领域),多个域之间用逗号分隔。常见的域有:
    PLATFORM, RFKILL, ETHER, WIFI, BT, MB, DHCP4, DHCP6, PPP, WIFI_SCAN, IP4, IP6, AUTOIP4, DNS, VPN, SHARING, SUPPLICANT, AGENTS, SETTINGS, SUSPEND, CORE, DEVICE, OLPC, INFINIBAND, FIREWALL, ADSL, BOND, VLAN, BRIDGE, TEAM, CONCHECK, DCB, DISPATCH 等。

示例

  • 显示当前的日志级别和域设置(如果省略 level 和 domains 参数的话)。
[root@localhost ~]# nmcli general logging
LEVEL  DOMAINS
INFO   PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,INFINIBAND,FIREWALL,ADSL,BOND,VLAN,BRIDGE,TEAM,CONCHECK,DCB,DISPATCH,AUDIT,SYSTEMD,PROXY
  • 更改日志级别

例如将NetworkManager的日志级别设置为DEBUG。DEBUG级别通常会记录更详细的信息,有助于调试问题。

[root@localhost ~]# nmcli general logging level DEBUG
[root@localhost ~]# nmcli general logging
LEVEL  DOMAINS
DEBUG  PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,INFINIBAND,FIREWALL,ADSL,BOND,VLAN,BRIDGE,TEAM,CONCHECK,DCB,DISPATCH,AUDIT,SYSTEMD,PROXY
  • 更改日志域

例如将日志域设置为CORE, ETHER和IP,这意味着只有这些域的日志信息会被记录。

[root@localhost ~]# nmcli general logging domains CORE,ETHER,IP
[root@localhost ~]# nmcli general logging
LEVEL  DOMAINS
DEBUG  ETHER,IP4,IP6,CORE
  • 同时更改日志级别和域

例如同时设置日志级别为DEBUG,并且限制日志记录的域为CORE, ETHER和IP。这样可以更精确地控制哪些类型的日志信息被记录,以及记录的详细程度。

[root@localhost ~]# nmcli general logging level DEBUG domains CORE,ETHER,IP
[root@localhost ~]# nmcli general logging
LEVEL  DOMAINS
DEBUG  ETHER,IP4,IP6,CORE

网络控制 networking

用于管理网络连接的状态和查看网络连通性。

语法

nmcli networking { [ on | off | connectivity ] }

启用所有网络接口

此命令会启用所有已启用设备的网络连接。如果网络已被禁用,这个命令可以恢复网络连接。
语法

nmcli networking on

示例

[root@localhost ~]# nmcli networking on
  • 禁用网络

这个命令会禁用所有已启用设备的网络连接。这可能用于安全目的或在需要时节省资。

[root@localhost ~]# nmcli networking off
  • 查看当前网络状态

这个命令会显示当前的网络状态,例如网络是否启用。

[root@localhost ~]# nmcli networking
enabled
  • 检查网络连接状态

这个命令用于检查网络的连接状态。它可以告诉你是否有网络连接,以及连接的质量。如果加上check参数,它会重新检查并报告最新的网络连接状态。

[root@localhost ~]# nmcli networking connectivity
full

该命令可以报告以下几种状态:

  • none:主机没有连接到任何网络。
  • portal:主机已连接到网络,但无法到达完整的互联网,可能需要进行网页认证。
  • limited:主机已连接到网络,但访问受限,可能无法访问互联网。
  • full:主机连接到网络,并具有完全访问权限。
  • unknown:无法确定连接状态。

无线限传输控制 radio

语法

Usage: nmcli radio { all | wifi | wwan }

示例

  • 查看所有无线电开关的状态

这个命令会显示所有无线电开关(Wi-Fi、WWAN等)的当前状态(开启或关闭)。

[root@localhost ~]# nmcli radio all
WIFI-HW  WIFI     WWAN-HW  WWAN
enabled  enabled  enabled  enabled
  • 启用或禁用Wi-Fi

通过指定on或off参数,此命令允许用户启用或禁用Wi-Fi无线电开关。如果没有提供参数,它将显示当前Wi-Fi的状态。

[root@localhost ~]# nmcli radio wifi
enabled
[root@localhost ~]# nmcli radio wifi off
[root@localhost ~]# nmcli radio wifi
disabled
[root@localhost ~]# nmcli radio wifi on
[root@localhost ~]# nmcli radio wifi
enabled
  • 启用或禁用WWAN(移动宽带)

类似于Wi-Fi开关,这个命令允许用户启用或禁用移动宽带无线电开关。如果没有提供参数,它将显示当前WWAN的状态。

[root@localhost ~]# nmcli radio wwan
enabled
[root@localhost ~]# nmcli radio wwan off
[root@localhost ~]# nmcli radio wwan
disabled
[root@localhost ~]# nmcli radio wwan on
[root@localhost ~]# nmcli radio wwan
enabled
  • 同时启用或禁用所有无线电开关

这个命令允许用户同时启用或禁用所有无线电开关(包括Wi-Fi和WWAN)。这是一个快速控制所有无线通信的方法。

[root@localhost ~]# nmcli radio all off
[root@localhost ~]# nmcli radio all
WIFI-HW  WIFI      WWAN-HW  WWAN
enabled  disabled  enabled  disabled
[root@localhost ~]# nmcli radio all on
[root@localhost ~]# nmcli radio all
WIFI-HW  WIFI     WWAN-HW  WWAN
enabled  enabled  enabled  enabled

活动监视器 monitor

语法

Usage: nmcli monitor

示例
使用nmcli monitor命令时,nmcli会进入监听模式,实时显示NetworkManager的状态变化,包括网络连接的建立和断开、设备状态的变化等。这对于需要跟踪网络状态或进行故障排除的用户来说非常有用。

[root@localhost ~]# nmcli monitor
virbr0-nic: unmanaged
enp4s0: unavailable
enp3s0: unavailable
^CError: nmcli terminated by signal Interrupt (2)

注意,该命令不需要指定额外的参数。只需在命令行中输入nmcli monitor,然后回车即可。一旦执行此命令,它将持续运行,直到用户通过按Ctrl+C来中断它。

连接管理 connection

NetworkManager之连接管理

设备管理 device

NetworkManager之设备管理

posted @ 2024-04-03 10:11  505donkey  阅读(2022)  评论(0编辑  收藏  举报