跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / 使用 NetworkManager 配置网络

使用 NetworkManager 配置网络

出版日期:2024-12-12
解释

本文介绍 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_VALUESETTING.PROPERTY 的所需值

以下示例停用 ethernet1 连接的 autoconnect 选项:

# nmcli connection modify ethernet1 connection.autoconnect no
add

使用提供的细节添加连接。该命令的语法类似于 modify 命令:

# nmcli connection addCONNECTION_IDsave YES|NOSETTING.PROPERTYPROPERTY_VALUE

至少应指定 connection.type 或使用 type。以下示例添加绑定到 DHCP eth0 接口的以太网连接,并禁用该连接的 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 为以下任一值:OFFERRWARNINFODEBUGTRACE

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 无法确定网络状态。