使用 NetworkManager 配置网络
- 解释
本文介绍 NetworkManager 的基础知识,以及如何 CLI 工具来配置网络。
- 原因
您正在使用 NetworkManager,并想要配置网络。
- 工作量
读完本文大约需要 15 分钟。
- 目标
您可以更好地了解 NetworkManager 的工作原理,以及如何配置网络连接。
1 关于 NetworkManager #
NetworkManager 是用于管理主网络连接和其他连接接口的程序。默认情况下,NetworkManager 是全自动化的。NetworkManager 由 systemd
处理,随附了所有必要的服务单元文件。
NetworkManager 将所有网络配置存储为连接,即描述如何创建或连接网络的数据集合。这些连接以文件的形式存储在 /etc/NetworkManager/system-connections/
目录中。
当特定设备使用某个连接时,该连接将进入活动状态。可为设备配置多个连接,但在给定的时间只能有一个连接处于活动状态。其他连接可用于从一个连接快速切换到另一个连接。例如,如果活动连接不可用,NetworkManager 会尝试将设备连接到另一个已配置的连接。
要管理连接,请按第 4 节 “使用 NetworkManager 管理网络”中所述使用 nmcli
命令。
2 NetworkManager.conf
配置文件 #
NetworkManager 的主配置文件是 /etc/NetworkManager/NetworkManager.conf
。此文件可用于配置 NetworkManager 的行为。
该文件包含键值对部分。每个键值对必须属于一个部分。部分以括在 [] 中的名称开头。以 # 开头的行被视为注释。极简配置需要在 [main]
部分中包含 plugins
值:
[main] plugins=keyfile
keyfile
插件支持 NetworkManager 的所有连接类型和功能。
默认配置文件包含 connectivity
部分,该部分指定用于检查网络连接的 URI。
在 SUSE Linux Micro 中,还可以使用其他部分。有关细节,请参见 networkmanager.conf(5) 或 Gnome 开发者指南。
3 启动和停止 NetworkManager #
由于 NetworkManager 是 systemd
服务,因此您可以使用常用的 systemd
命令来启动、停止或重启动 NetworkManager。
要启动 NetworkManager,请运行:
#
systemctl start network
要重启动 NetworkManager,请运行:
#
systemctl restart network
要停止 NetworkManager,请运行:
#
systemctl stop network
4 使用 NetworkManager 管理网络 #
4.1 nmcli
命令 #
NetworkManager 提供了一个用于管理连接的 CLI 接口。使用 nmcli
接口可以连接到特定网络、编辑连接、编辑设备,及执行其他更多操作。nmcli
的一般语法如下:
#
nmcliOPTIONSSUBCOMMANDSUBCOMMAND_ARGUMENTS
其中,OPTIONS 已在第 4.1.1 节 “nmcli
命令选项”中予以介绍,SUBCOMMAND 可为下列其中一项:
-
connection
用于配置网络连接。有关细节,请参见第 4.1.2 节 “
connection
子命令”。-
device
有关细节,请参见第 4.1.3 节 “
device
子命令”。-
general
显示状态和权限。有关细节,请参见第 4.1.4 节 “
general
子命令”。-
monitor
监控 NetworkManager 的活动,以及监控连接和设备的状态变化。此子命令不采用任何参数。
-
networking
查询网络状态。有关细节,请参见第 4.1.5 节 “
networking
子命令”。
4.1.1 nmcli
命令选项 #
除了子命令及其参数之外,nmcli
命令还可采用以下选项:
-
-a|--ask
该命令会停止运行以请求输入任何缺少的参数,例如,请求输入口令以连接到网络。
-
-c|--color {yes|no|auto}
控制颜色输出:
yes
表示启用颜色,no
表示禁用颜色,auto
表示仅在将标准输出定向到终端时才创建颜色输出。-
-m|--mode {tabular|multiline}
在
table
(每行描述单个项,列定义项的特定属性)与multiline
(每个项包含更多行,独行指定每个属性)之间切换。tabular
为默认值。-
-h|--help
列显帮助。
-
-w|--wait seconds
设置等待 NetworkManager 完成操作的超时期限。对于需要较长时间才能完成的命令(例如连接激活),建议使用此选项。
4.1.2 connection
子命令 #
使用 connection
命令可以管理连接或查看有关特定连接的任何信息。nmcli connection
提供以下命令来管理网络连接:
-
show
列出连接:
#
nmcli connection show还可以使用此命令来显示有关指定连接的细节:
#
nmcli connection showCONNECTION_ID其中 CONNECTION_ID 是任意标识符:连接名称、UUID 或路径
-
up
激活提供的连接。可以使用该命令来重新加载连接。在对连接执行任何更改后,也需要运行此命令。
#
nmcli connection up [--active] [CONNECTION_ID]指定
--active
后,只会显示活动配置文件。默认设置是同时显示活动连接和静态配置。-
down
停用连接。
#
nmcli connection downCONNECTION_ID其中:CONNECTION_ID 是任意标识符:连接名称、UUID 或路径
如果您停用连接,则稍后不会重新连接,即使该连接具有
autoconnect
标志。-
modify
更改或删除连接的属性。
#
nmcli connection modifyCONNECTION_IDSETTING.PROPERTYPROPERTY_VALUE其中:
CONNECTION_ID 是任意标识符:连接名称、UUID 或路径
SETTING.PROPERTY 是属性的名称,例如
ipv4.addresses
PROPERTY_VALUE 是 SETTING.PROPERTY 的所需值
以下示例停用
ethernet1
连接的autoconnect
选项:#
nmcli connection modify ethernet1 connection.autoconnect no-
add
使用提供的细节添加连接。该命令的语法类似于
modify
命令:#
nmcli connection addCONNECTION_IDsave YES|NOSETTING.PROPERTYPROPERTY_VALUE至少应指定
connection.type
或使用type
。以下示例添加绑定到 DHCPeth0
接口的以太网连接,并禁用该连接的autoconnect
标志:#
nmcli connection add type ethernet autoconnect no ifname eth0-
edit
使用交互式编辑器编辑现有连接。
#
nmcli connection editCONNECTION_ID-
clone
克隆现有连接。极简语法如下:
#
nmcli connection cloneCONNECTION_IDNEW_NAME其中 CONNECTION_ID 是要克隆的连接。
-
delete
删除现有连接:
#
nmcli connection deleteCONNECTION_ID-
monitor
监控提供的连接。每次更改连接时,NetworkManager 就会列显一行。
#
nmcli connection monitorCONNECTION_ID-
reload
从磁盘重新加载所有连接文件。由于 NetworkManager 不会监控对连接文件执行的更改,因此每当您对文件进行更改时,都需要使用此命令。此命令不采用任何其他子命令。
-
load
要加载/重新加载特定的连接文件,请运行:
#
nmcli connection loadCONNECTION_FILE
有关上述命令的细节,请参见 nmcli
文档。
4.1.3 device
子命令 #
使用 device
子命令可以显示和管理网络接口。nmcli device
命令可识别以下命令:
-
status
列显所有设备的状态。
#
nmcli device status-
show
显示有关设备的详细信息。如果未指定设备,则会显示所有设备。
#
mcli device show [DEVICE_NAME]-
connect
连接设备。NetworkManager 会尝试查找要激活的适当连接。如果没有兼容的连接,则会创建新的配置文件。
#
nmcli device connectDEVICE_NAME-
modify
对特定设备上处于活动状态的配置执行临时更改。更改不会存储在连接配置文件中。
#
nmcli device modifyDEVICE_NAME [+|-] SETTING.PROPERTY VALUE有关可能的 SETTING.PROPERTY 值,请参见 nm-settings-nmcli(5)。
以下示例在设备
con1
上启动 IPv4 共享连接共享。#
nmcli dev modify con1 ipv4.method shared-
disconnect
断开设备连接,并阻止设备在未经人工干预的情况下自动激活其他连接。
#
nmcli device disconnectDEVICE_NAME-
delete
从系统中删除接口。可以使用该命令来仅删除绑定和网桥等软件设备。无法使用此命令删除硬件设备。
#
nmcli deviceDEVICE_NAME-
wifi
列出所有可用的接入点。
#
nmcli device wifi-
wifi connect
连接到按 SSID 或 BSSID 指定的 Wi-Fi 网络。该命令接受以下选项:
password
- 安全网络的口令ifname
- 用于激活的接口name
- 可为连接命名
#
nmcli device wifi connectSSID [password PASSWORD_VALUE] [ifname INTERFACE_NAME]要使用口令
pass$word2#@@
连接到 Wi-Fi GUESTWiFi,请运行:#
nmcli device wifi connectGUESTWiFi password pass$word2#@@
4.1.4 general
子命令 #
可以使用此命令查看 NetworkManager 状态和权限,以及更改主机名和日志记录级别。nmcli
general
可识别以下命令:
-
status
显示 NetworkManager 的整体状态。如果未为
nmcli general
命令指定命令,则默认会使用 status。#
nmcli general status-
hostname
如果未提供新主机名作为参数,则会显示当前主机名。如果指定了新主机名,则值将用于设置新主机名。
#
nmcli general hostname [HOSTNAME]例如,要设置
MyHostname
,请运行:#
nmcli general hostname MyHostname-
permissions
显示您的 NetworkManager 操作(例如启用或禁用网络、修改连接等)权限。
#
nmcli general permissions-
logging
显示和更改 NetworkManager 日志记录级别和域。在未指定任何参数的情况下,该命令会显示当前日志记录级别和域。
#
nmcli general logging [levelLEVEL domains DOMAIN]LEVEL 为以下任一值:
OFF
、ERR
、WARN
、INFO
、DEBUG
或TRACE
。DOMAIN 为如下所示的值列表:
PLATFORM, RFKILL, ETHER, WIFI, BT, MB, DHCP4, DHCP6, PPP, WIFI_SCAN, IP4, IP6, AUTOIP4, DNS, VPN, SHARING, SUPPLICANT, AGENTS, SETTINGS, SUSPEND, CORE, DEVICE, OLPC, WIMAX, INFINIBAND, FIREWALL, ADSL, BOND, VLAN, BRIDGE, DBUS_PROPS, TEAM, CONCHECK, DCB, DISPATCH, AUDIT, SYSTEMD, VPN_PLUGIN, PROXY
。
4.1.5 networking
子命令 #
使用该子命令可以查询网络的状态。此外,使用此命令可以启用或禁用网络。nmcli networking
命令接受以下命令:
-
on/off
启用或禁用网络。
off
命令停用 NetworkManager 管理的所有接口。#
nmcli networking on- connectivity
显示网络连接状态。如果使用
check
,NetworkManager 将执行新的状态检查。否则会显示上次检测到的状态。#
nmcli networking connectivity可能的状态如下:
none - 主机未连接到任何网络。
portal - 主机位于受控门户后面,无法完全访问互联网。
limited - 主机已连接到网络,但无法访问互联网。
full - 主机已连接到网络,并可完全访问互联网。
unknown - NetworkManager 无法确定网络状态。
5 法律声明 #
版权所有 © 2006–2024 SUSE LLC 和贡献者。保留所有权利。
根据 GNU 自由文档许可证 (GNU Free Documentation License) 版本 1.2 或(根据您的选择)版本 1.3 中的条款,在此授予您复制、分发和/或修改本文档的权限;本版权声明和许可证附带不可变部分。许可版本 1.2 的副本包含在题为“GNU Free Documentation License”的部分。
有关 SUSE 商标,请参见 https://www.suse.com/company/legal/。所有其他第三方商标分别为相应所有者的财产。商标符号(®、™ 等)代表 SUSE 及其关联公司的商标。星号 (*) 代表第三方商标。
本指南力求涵盖所有细节,但这不能确保本指南准确无误。SUSE LLC 及其关联公司、作者和译者对于可能出现的错误或由此造成的后果皆不承担责任。