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来中断它。