documentation.suse.com / 使用 NetworkManager 设置和管理网络连接
SUSE Linux Enterprise Server 16.0

使用 NetworkManager 设置和管理网络连接

出版日期:2025 年 11 月 04 日
内容

NetworkManager 是一款动态网络控制与配置工具,可确保网络设备保持启用并正常运行。

原因

本文全面概述了 NetworkManager,以及如何使用 NetworkManager 配置、管理、监控和编辑网络连接。

工作量

安装和配置 NetworkManager 需要 15 分钟。充分理解 NetworkManager 的概念及功能则最多需要 1 小时。

目标

掌握网络连接管理的基础知识。

要求
  • 拥有安装和管理 NetworkManager 所需的 root 权限

  • 用于安装 NetworkManager 的软件包管理器

  • 基本了解网络和 IP 地址

1 NetworkManager 相关概念

NetworkManager 是一款可用于管理网络连接及网络设备的工具,支持创建、配置和管理网络连接及设备。

SUSE Linux Enterprise Server for SAP Applications 中,NetworkManager 默认设计为完全自动模式。它默认处于启用状态,且随附用于管理主网络连接及其他网络接口所需的全部服务单元文件。NetworkManager 支持网络连接的最新加密类型与标准,包括连接至 802.1X 保护网络的加密。802.1X 是 IEEE 制定的局域网与城域网标准 — 即基于端口的网络访问控制标准。

您可无缝切换有线或无线网络,NetworkManager 会自动连接已知无线网络,并可并行管理多个网络连接。您也可手动在可用网络间切换。

NetworkManager 通常包含以下组件:

  • NetworkManager 守护程序 — 您可通过标准 systemd 命令与该守护程序交互

  • nmcli 命令行界面

  • Ncurses 界面 nmtui

  • NetworkManager 库

  • 配置文件

2 安装和配置 NetworkManager

SUSE Linux Enterprise Server for SAP Applications 中,NetworkManager 默认已安装并启用,可直接使用。通常无需重新安装该工具或更改其配置;如果确有需要,以下章节提供了相关操作指导。

2.1 安装 NetworkManager

可以使用 zypper 安装 NetworkManager。安装后,您可以将 NetworkManager 设为在系统引导时自动启动。

安装 NetworkManager:

> sudo zypper install NetworkManager

启用 NetworkManager:

> sudo systemctl enable NetworkManager

启用 NetworkManager 后,所做更改将会在系统重引导后保留。

2.2 配置 NetworkManager 行为

NetworkManager 的行为由其核心配置文件 /etc/NetworkManager/NetworkManager.conf 定义。

该文件是配置 NetworkManager 行为与设置的主要位置,配置内容包括日志记录、连接管理及网络设备处理。

该文件包含键值对部分。每个键值对必须属于一个部分。部分以括在 [] 中的名称开头。以 # 开头的行被视为注释。常见配置包含 [main] 部分及 plugins 值、[logging][connectivity]

[main]1
plugins=keyfile2
dhcp=dhclient

[connectivity]3
uri=http://name.org

[logging]4
level=INFO
domains=ALL

1

控制 NetworkManager 的常规设置。

2

管理连接配置文件的存储方式。[keyfile] 插件支持 NetworkManager 的所有连接类型与功能。

3

定义连接的默认值与选项,并指定用于检查网络连接的 URI。

4

管理 NetworkManager 的日志记录级别和领域。

过程 1︰ 配置 NetworkManager.conf

确保在修改配置文件前备份现有文件。

  1. 打开配置文件:

    > sudo vi /etc/NetworkManager/NetworkManager.conf
  2. 停止 NetworkManager 服务:

    > sudo systemctl stop network
  3. 修改相应部分。

  4. 保存更改。

  5. 启动 NetworkManager:

    > sudo systemctl start network
  6. 查看现有配置和设置:

    > sudo nmcli general show

3 管理 NetworkManager 守护程序

NetworkManager 守护程序是标准的 systemd 服务,因此您可使用 systemctl 命令管理该守护程序。

您可通过以下任何命令管理 NetworkManager 守护程序:

查看状态

如要检查 NetworkManager 守护程序是否正在运行,进而确认网络是否应处于活跃状态,请使用以下命令:

> systemctl status network
重启守护程序

例如,当出现网络问题时,您可尝试通过以下命令重启 NetworkManager 守护程序:

> sudo systemctl restart network
停止守护程序

在更改网络配置或切换至手动控制模式时,您可停止 NetworkManager;排查或调试网络问题时,也可停止该服务。停止 NetworkManager 后,它将无法自动管理网络接口或更改您的手动配置。您也可通过停止 NetworkManager,手动满足网络接口的特定配置要求。

要停止 NetworkManager 守护程序,请使用以下命令:

> sudo systemctl stop network
启动 NetworkManager 守护程序

如果您停止了该守护程序,现在需要重新启动它以管理所有网络连接,请使用以下命令:

> sudo systemctl start NetworkManager

4 创建网络连接

您可使用 nmcli 命令创建网络连接配置文件。

NetworkManager 会将所有网络配置存储为连接配置文件 - 这类文件是描述如何创建或连接到网络的数据集。默认情况下,这些连接配置文件以文件形式存储在 /etc/NetworkManager/system-connections/ 目录中。在该目录下,每种网络连接配置文件(Wi-Fi、以太网、VPN)均对应一个独立文件。

连接是某一连接配置文件的实例:当有设备使用该连接时,对应的配置文件实例即处于活跃状态。一台设备可配置多个连接配置文件。其他连接可用于从一个连接快速切换到另一个连接。例如,如果活跃连接不可用,NetworkManager 会尝试将设备连接到另一个已配置的连接。

NetworkManager 守护程序负责管理网络连接,您可通过命令行界面 nmcli 或 ncurses 界面 nmtui 与其交互。

4.1 创建以太网连接

使用 nmcli 命令配置以太网连接,然后执行以下步骤:

  1. 列出可用设备以获取准确的设备名称:

    > nmcli device
  2. 查看连接列表,确保您要使用的配置文件名称未被使用:

    nmcli connection show

    NetworkManager 会为每个网络接口控制器 (NIC) 创建一个配置文件。要将 NIC 连接到具有不同设置的网络,必须为每个网络创建单独的配置文件。

  3. 创建新的连接配置文件:

    > sudo nmcli connection add con-name CONNECTION_NAME ifname DEVICE_NAME type ethernet
  4. 查看新连接配置文件的现有网络设置:

    > nmcli connection show CONNECTION_NAME
  5. 配置连接配置文件。一般命令语法如下:

    > sudo nmcli connection modify CONNECTION_NAMESETTINGVALUE

    例如,系统默认会启用自动 IP 地址分配(DHCP 或 SLAAC),而您可能希望配置静态 IP 地址:

    • 对于 IPv4

      > sudo nmcli connection modify CONNECTION_NAME ipv4.method manual ipv4.addresses 192.0.2.1/24 ipv4.gateway 192.0.2.254 ipv4.dns 192.0.2.200 ipv4.dns-search example.com
    • 对于 IPv6

      > sudo nmcli connection modify INTERNAL-LAN ipv6.method manual ipv6.addresses 2001:db8:1::fffe/64 ipv6.gateway 2001:db8:1::fffe ipv6.dns 2001:db8:1::ffbb ipv6.dns-search example.com
  6. 激活配置文件:

    > sudo nmcli connection up CONNECTION_NAME
  7. 验证配置:

    1. 验证 NIC 的 IP 设置:

      > ip address show HOSTNAME
    2. 验证默认 IPv4 网关:

      > ip route show default
    3. 验证默认 IPv6 网关:

      > ip -6 route show default
    4. 查看 DNS 设置:

      > cat /etc/resolv.conf

4.2 创建 Wi-Fi 连接配置文件

您可使用 nmcli 命令连接 Wi-Fi。首次连接某个 Wi-Fi 时,NetworkManager 会自动创建一个新的连接配置文件。连接到该 Wi-Fi 后,您可对该配置文件进行配置。

  1. 启用 Wi-Fi 无线电功能:

    > sudo nmcli radio wifi on
  2. 查看可用设备的列表:

    > sudo nmcli device
  3. 连接到 Wi-Fi:

    > sudo nmcli device wifi connect WI-FI_CONNECTION_NAMEPASSWORD
  4. 查看新连接配置文件的现有网络设置:

    > sudo nmcli connection show CONNECTION_NAME
  5. 使用以下命令根据需要配置连接配置文件:

    > sudo nmcli connection modify CONNECTION_NAMESETTINGVALUE

    例如,要配置静态 IPv4,请使用:

    > sudo nmcli connection modify WI-FI_CONNECTION_NAME ipv4.method manual ipv4.addresses IP_ADDRESS/SUBNET_MASK

    要配置静态 IPv6 地址,请使用:

    > sudo nmcli connection modify WI-FI_CONNECTION_NAME ipv6.method manual ipv6.addresses IP_ADDRESS/SUBNET_MASK
  6. 重启连接:

    > sudo nmcli connection up WI-FI_CONNECTION_NAME
  7. 使用以下命令验证连接:

    > nmcli connection show --active

    此时将显示可用活跃连接的列表。

4.3 创建网络绑定

网络绑定会将物理和虚拟网络接口组合起来,形成一个逻辑接口。您可在以太网设备、虚拟局域网等设施上创建网络绑定。网络绑定可以提高带宽和/或提供冗余。

要求
  • 网络连接:服务器上已配置两个或更多物理或虚拟网络

  • 要包含在绑定设备中的现有网络接口

  • 交换机支持,具体取决于绑定模式

  • 要将以太网设备用于网络绑定,必须在服务器上安装物理或虚拟以太网设备。

  • 当使用网络捆绑、网桥或 VLAN 设备作为绑定的端口时,您既可以在创建绑定的过程中创建这些设备,也可以提前创建。

限制
  • 不要将绑定跨多个交换机拆分部署。

    在大多数硬件设置中,绑定设备中的所有网络接口必须连接到同一交换机。有关详细信息,请查阅交换机供应商文档。

  • IBM POWER:ibmveth 不支持绑定模式 5 和 6(balance-tlbbalance-alb)。

    处于 tlbalb 模式的绑定驱动程序会发送同时包含源和目标 MAC 地址(显示为虚拟以太网 MAC 地址)的以太网环回包。POWER 固件不支持这些数据包。因此,ibmveth 不支持绑定模式 5 和 6。

  • 绑定和虚拟化绑定设备由多个网络接口构成。在大多数配置中,应仅在主机中配置绑定。之后,为 Guest 创建的虚拟接口会与绑定设备桥接,从而简化 Guest 的创建和部署流程。

    虽然可以在 Guest 中配置绑定,但不建议这样做。如要在 Guest 中配置绑定,必须为 Guest 分配多个接口,且主机不得配置网络绑定。此外,还需谨慎配置主机及其网络桥接,避免在主机与 Guest 中同时使用网络绑定。

绑定模式

可以使用以下绑定模式:

  • (0) balance-rr

    数据包依次通过第一个到最后一个可用接口传输。提供容错和负载平衡。需要交换机支持。某些交换机在此模式下可能出现故障。

  • (1) active-backup

    只有一个网络接口处于活动状态。如果它发生故障,另一个接口将变成活动状态。提供容错。这是默认模式。不需要特定的交换机支持。

  • (2) balance-xor

    流量会根据绑定设备中包含的接口数量在所有可用接口间拆分。提供容错和负载平衡。需要交换机支持。某些交换机在此模式下可能出现故障。

  • (3) broadcast

    在所有接口上广播所有流量。提供容错。需要交换机支持。某些交换机在此模式下可能出现故障。如果可能,请改用模式 1,或者使用此模式通过将每个绑定成员连接到不同的交换机或设备来提供嗅探功能。

  • (4) 802.3ad

    也称为 LACP。LACP 组中的所有接口都必须配置相同的速度和双工设置,并且必须连接到同一交换机。提供容错和负载平衡。需要接口驱动程序提供的 ethtool 支持,以及支持 IEEE 802.3ad 动态链路聚合并进行了相应配置的交换机。如果您的交换机支持此模式,则这是首选模式。

  • (5) balance-tlb

    自适应传输负载平衡。提供容错和负载平衡。需要接口驱动程序中提供 ethtool 支持。不需要特定的交换机支持,但某些交换机在此模式下可能出现故障。

  • (6) balance-alb

    自适应负载平衡。提供容错和负载平衡。需要接口驱动程序中提供 ethtool 支持。不需要特定的交换机支持,但某些交换机在此模式下可能出现故障。

请查阅您的硬件手册,检查您的交换机支持哪些模式。

有关各种模式的详细说明,请访问 https://www.kernel.org/doc/Documentation/networking/bonding.txt

过程 2︰ 创建网络绑定
  1. 创建绑定接口:

    > sudo nmcli connection add type bond con-name NWBOND ifname NWBOND bond.options "mode=active-backup"

    系统即会创建使用 active-backup 模式的网络绑定 NETWORK_BOND

  2. 查看网络接口列表:

    > nmcli device status
    
        DEVICE         TYPE      STATE                   CONNECTION    
        wlan0          wifi      connected               Vision 
        virbr0         bridge    connected (externally)  virbr0        
        p2p-dev-wlan0  wifi-p2p  disconnected            --            
        eth0           ethernet  unavailable             --            
        lo             loopback  unmanaged               --

    可用网络接口的列表即会显示。您还可以添加未配置到绑定的设备。在给定的列表中,p2p-dev-wlan0 未配置,而 virbr0 已配置且具有连接配置文件。

  3. 要将 p2p-dev-wlan0 配置为端口,请创建连接配置文件:

    > sudo nmcli connection add type wifi-p2p slave-type bond con-name bond0-port1 ifname p2p-dev-wlan0 master bond0

    系统将为 p2p-dev-wlan0 创建一个新配置文件并添加到 bond0 连接中。绑定的名称为 bond0

  4. 要将 virbr0 分配给绑定,请使用以下命令:

    > sudo nmcli connection modify virbr0 master bond0

    virbr0 的连接配置文件即会添加到 bond0 连接中。

  5. 激活该连接:

    > sudo nmcli connection up virbr0
  6. 配置 IPv4 设置:

    • 要将 bond0 用作其他设备的端口,请使用以下命令:

      > sudo nmcli connection modify bond0 ipv4.method disabled
    • 要使用 DHCP,不需要进行任何配置。

    • 要配置 bond0 连接的静态 IPv4 地址、网络掩码、默认网关和 DNS 服务器,请使用以下命令:

      > sudo nmcli connection modify bond0 ipv4.addresses '192.0.2.1/24' ipv4.gateway '192.0.2.254' ipv4.dns '192.0.2.253' ipv4.dns-search 'example.com' ipv4.method manual
  7. 配置 IPv6 设置:

    • 要将此绑定设备用作其他设备的端口,请使用以下命令:

      > sudo nmcli connection modify bond0 ipv6.method disabled
    • 要使用无状态地址自动配置 (SLAAC),无需执行任何操作。

    • 要设置 bond0 连接的静态 IPv6 地址、网络掩码、默认网关和 DNS 服务器,请使用以下命令:

      > sudo nmcli connection modify bond0 ipv6.addresses '2001:db8:1::1/64' ipv6.gateway '2001:db8:1::fffe' ipv6.dns '2001:db8:1::fffd' ipv6.dns-search 'example.com' ipv6.method manual
  8. 激活该连接:

    > sudo nmcli connection up bond0
  9. 查看并验证连接:

    > nmcli device

    连接列表即会显示。

4.4 配置网络捆绑

网络捆绑通过将两个或多个网络接口组合成单个捆绑设备,来增加带宽和/或提供冗余。捆绑设备的行为通过捆绑模式配置。网络捆绑可以提高带宽和/或提供冗余。

要求
  • 网络连接

  • 要包含在捆绑设备中的现有网络接口

  • 内核中的交换机支持,具体取件于捆绑模式

  • 已安装 libteam-tools 软件包

  • 安装 teamdNetworkManager-team 软件包。

    > sudo  zypper install teamd
    > sudo  zypper install NetworkManager-team
  • 在服务器上安装两个或更多物理或虚拟设备:

  • 要将以太网设备用作网络捆绑的端口,必须在服务器上安装物理或虚拟以太网设备,并将其连接到交换机。

  • 要将绑定、网桥或 VLAN 设备用作网络捆绑的端口,可提前创建这些设备,也可在创建网络捆绑时同步创建。

限制
  • 不要将网络捆绑跨多个交换机拆分部署。

    在大多数硬件设置中,捆绑设备中的所有网络接口必须连接到同一交换机。有关详细信息,请查阅交换机供应商文档。

  • 捆绑和虚拟化:

    捆绑设备由多个网络接口构成。在大多数配置中,应该只在主机中配置捆绑。之后,为 Guest 创建的虚拟接口会与捆绑设备桥接,从而简化 Guest 的创建和部署流程。

    可以(但不建议)在 Guest 中配置捆绑。如要在 Guest 中配置网络捆绑,必须为 Guest 分配多个接口,且主机不得配置网络捆绑。此外,还需谨慎配置主机及其网络桥接,避免在主机与 Guest 中同时使用网络捆绑。

捆绑模式

可以使用以下捆绑模式:

  • broadcast

    在所有接口上广播所有流量。提供容错。需要交换机支持。

  • roundrobin

    数据包依次通过第一个到最后一个可用接口传输。提供容错和负载平衡。需要交换机支持。

  • activebackup

    只有一个网络接口处于活动状态。如果它发生故障,另一个接口将变成活动状态。提供容错。

  • loadbalance

    捆绑设备通过其所有接口传输包,使用哈希函数执行负载平衡(被动或主动)。对于被动负载平衡,只使用 BPF 哈希函数。对于主动负载平衡,运行器通过在可用接口之间移动哈希来找到最佳平衡。提供容错和负载平衡。不需要特定的交换机支持。

  • lacp

    LACP 组中的所有接口都必须配置相同的速度和双工设置,并且必须连接到同一交换机。提供容错和负载平衡。需要接口驱动程序提供的 ethtool 支持,以及支持 IEEE 802.3ad 动态链路聚合并进行了相应配置的交换机。如果您的交换机支持此模式,则这是首选模式。

请查阅您的硬件手册,检查您的交换机支持哪些模式。

过程 3︰ 创建网络捆绑
  1. 创建捆绑接口:

    > sudo nmcli connection add type team con-name CONNECTION_NAME ifname TEAM_NAME team.runner RUNNER-TYPE

    例如,要使用 activebackup 运行程序创建网络捆绑 team0,请运行:

    > sudo nmcli connection add type team con-name team0 ifname team0 team.runner active.backup
  2. 查看网络接口列表:

    > nmcli device status
    DEVICE         TYPE      STATE                   CONNECTION    
        wlan0          wifi      connected               Vision 
        virbr0         bridge    connected (externally)  virbr0        
        p2p-dev-wlan0  wifi-p2p  disconnected            --            
        eth0         ethernet  unavailable             --            
        lo             loopback  unmanaged               --

    您可以将列出的设备添加到网络捆绑中。以下示例使用了 p2p-dev-wlan0virbr0。可以看到,p2p-dev-wlan0 未配置,而 virbr0 具有连接配置文件。

  3. 为网络捆绑配置端口接口:

    > sudo nmcli connection add type wifi-p2p slave-type team con-name team0-port1 ifname p2p-dev-wlan0 master team0

    系统将为 p2p-dev-wlan0 创建一个新配置文件并添加到 team0 连接中。

  4. 将现有连接分配给该网络捆绑:

    > sudo nmcli connection modify bond0 master team0

    bond0 的连接配置文件即会添加到 team0 连接中。

  5. 激活该连接:

    > sudo nmcli connection up bond0
  6. 配置 IPv4 设置:

    • 要将此捆绑设备用作其他设备的端口,请使用以下命令:

      > sudo nmcli connection modify team0 ipv4.method disabled
    • 要使用 DHCP,不需要进行任何配置。

    • 要配置 bond0 连接的静态 IPv4 地址、网络掩码、默认网关和 DNS 服务器,请运行以下命令:

      > sudo nmcli connection modify team0 ipv4.addresses '192.0.2.1/24' ipv4.gateway '192.0.2.254' ipv4.dns '192.0.2.253' ipv4.dns-search 'example.com' ipv4.method manual
  7. 配置 IPv6 设置:

    • 要将此捆绑设备用作其他设备的端口,请使用以下命令:

      > sudo nmcli connection modify team0 ipv6.method disabled
    • 要使用无状态地址自动配置 (SLAAC),无需执行任何操作。

    • 要设置 team0 连接的静态 IPv6 地址、网络掩码、默认网关和 DNS 服务器,请使用以下命令:

      > sudo nmcli connection modify team0 ipv6.addresses '2001:db8:1::1/64' ipv6.gateway '2001:db8:1::fffe' ipv6.dns '2001:db8:1::fffd' ipv6.dns-search 'example.com' ipv6.method manual
  8. 激活该连接:

    > sudo nmcli connection up team0
  9. 要查看网络捆绑状态,请使用以下命令:

    > sudo teamdctl team0 state

4.5 配置网桥

网桥是一种可将多个网段整合为单个网络,从而实现两个或多个网段间通讯的设备。

配置网桥前,请确保满足以下条件:

  • 服务器上已安装两个或更多物理或虚拟设备。

  • 要将以太网设备用作网桥的端口,请确保服务器上已安装物理或虚拟以太网设备,且这些设备已连接到交换机。

  • 要将网络捆绑、绑定或 VLAN 设备用作网桥的端口,既可在创建网桥的过程中创建这些设备,也可提前创建。

过程 4︰ 创建网桥
  1. 创建网桥接口:

    > sudo nmcli connection add type bridge con-name CONNECTION_NAME ifname BRIDGE_NAME

    例如,我们通过运行以下命令创建了网桥 bridge0

    > sudo nmcli connection add type bridge con-name bridge0 ifname bridge0
  2. 查看网络接口列表以验证是否已创建 bridge0

    > nmcli device status
      
        DEVICE         TYPE      STATE                                    CONNECTION    
        wlan0                wifi      connected                                Vision 
        virbr0               bridge    connected (externally)                   virbr0        
        p2p-dev-wlan0        wifi-p2p  disconnected                             --            
        eth0                 ethernet  unavailable                              --            
        lo                   loopback  unmanaged                                --      
        bridge0              bridge    connecting (getting IP configuration)    brdige0

    网桥处于 getting IP configuration 状态,因为您尚未为其分配接口。您稍后需分配接口:p2p-dev-wlan0(未配置)和 virbr0(已配置连接配置文件)。

  3. 为网桥添加接口:

    > sudo nmcli connection add type wifi-p2p slave-type bridge con-name bridge0-port1 ifname p2p-dev-wlan0 master bridge0

    系统将为 p2p-dev-wlan0 创建一个新配置文件并添加到 bridge0 连接中。

  4. 将现有连接分配给该网桥:

    > sudo nmcli connection modify bond0 master bridge0

    bond0 的连接配置文件即会添加到 bridge0 连接中。

  5. 重启连接:

    > sudo nmcli connection up bond0
  6. 配置 IPv4 设置:

    • 要将此网桥设备用作其他设备的端口,请使用以下命令:

      > sudo nmcli connection modify bridge0 ipv4.method disabled
    • 要使用 DHCP,不需要进行任何配置。

    • 要配置 bridge0 连接的静态 IPv4 地址、网络掩码、默认网关和 DNS 服务器,请使用以下命令:

      > sudo nmcli connection modify bridge0 ipv4.addresses '192.0.2.1/24' ipv4.gateway '192.0.2.254' ipv4.dns '192.0.2.253' ipv4.dns-search 'example.com' ipv4.method manual
  7. 配置 IPv6 设置:

    • 要将此网桥设备用作其他设备的端口,请使用以下命令:

      > sudo nmcli connection modify bridge0 ipv6.method disabled
    • 要使用无状态地址自动配置 (SLAAC),无需执行任何操作。

    • 要设置 bridge0 连接的静态 IPv6 地址、网络掩码、默认网关和 DNS 服务器,请使用以下命令:

      > sudo nmcli connection modify bridge0 ipv6.addresses '2001:db8:1::1/64' ipv6.gateway '2001:db8:1::fffe' ipv6.dns '2001:db8:1::fffd' ipv6.dns-search 'example.com' ipv6.method manual
  8. 激活该连接:

    > sudo nmcli connection up bridge0
  9. 验证连接:

    > nmcli device

    当您激活连接的任一端口时,NetworkManager 也会激活网桥,但不会激活网桥的其他端口。

    启用网桥时自动启用所有端口:

    > sudo nmcli connection modify bridge0 connection.autoconnect-slaves 1
  10. 查看作为特定网桥端口的以太网设备的链路状态。

    > sudo ip link show master bridge0
  11. 查看作为任意网桥设备端口的以太网设备的状态。

    > sudo bridge link show

4.6 配置 VPN 连接

VPN(虚拟专用网络)连接是设备与另一网络之间通过互联网建立的安全加密隧道。

可以使用 nmcli 命令配置 VPN 连接。

过程 5︰ 安装和配置 VPN 连接
  1. 安装 OpenVPN:

    > sudo  zypper install networkmanager-openvpn
  2. 创建 VPN 连接:

    > sudo nmcli connection add type vpn con-name MyOpenVPN ifname -- vpn-type openvpn
  3. 配置设置:

    > sudo nmcli connection modify MyOpenVPN vpn.data "remote=VPN-SERVER-ADDRESS,username=YOUR-USERNAME"
    > sudo nmcli connection modify MyOpenVPN vpn.secrets "password=YOUR-PASSWORD"
  4. 配置 DNS 设置:

    > sudo nmcli connection modify MyOpenVPN ipv4.dns "8.8.8.8 8.8.4.4"
  5. 添加路由:

    > sudo nmcli connection modify MyOpenVPN ipv4.routes "192.168.1.0/24 192.168.1.1"
  6. 激活 VPN 连接:

    > sudo nmcli connection up MyOpenVPN
  7. 验证配置的连接是否处于活跃状态:

    > nmcli connection show --active

5 修改网络连接

可以使用 nmcli connection modify 命令修改网络连接。该命令的一般语法如下:

> sudo nmcli connection modify
      CONNECTION-NAME PROPERTY VALUE

要获取 CONNECTION-NAME 的值,请使用 nmcli connection show 命令列出连接。可用属性及其可能的值将在下一节中介绍。

5.1 连接属性

本节列出并介绍了您可以修改的连接属性:

表 1︰ 连接详细信息
属性说明
ipv4.method定义接口获取和处理其 IPv4 地址配置的方式
  • auto — 用于使用 DHCP 动态分配 IP 地址的默认值

  • manual — 配置静态 IP 地址

  • link-local — 仅使用 IPv4 链路本地寻址 (169.254.0.0/16)

  • shared — 与其他计算机共享连接

  • disabled — 禁用 IPv4。

ipv4.dns一系列以空格分隔的 DNS IP 地址例如“8.8.8.8 8.8.4.4”
ipv4.gateway该属性是您的系统访问本地网络之外的其他网络时所使用的路由器地址网关的 IP 地址
connection.id用于重命名连接表示新连接名称的字符串
802-11-wireless.ssid该属性用于重命名 Wi-Fi 网络表示新 Wi-Fi SSID 的字符串
connection.autoconnect设备联网时开启/关闭自动连接功能的切换开关onoff

6 建立和终止网络连接

启用网络连接,以实现设备与资源的访问及连接。

6.1 启用网络连接

可能存在特定连接被禁用或所有连接均被禁用的情况。要激活所有连接,请运行以下命令:

> sudo nmcli networking on

请注意,此命令不会激活手动禁用的连接。如要激活此类连接,请按照以下步骤操作:

过程 6︰ 激活现有连接
  1. 查看现有连接的列表:

    > sudo nmcli connection show
  2. 使用名称或 UUID 启用连接:

    > sudo nmcli connection up uuid CONNECTION-UUID
  3. 检查连接状态:

    > sudo nmcli connection show --active

6.2 禁用网络连接

您可以使用 nmcli 命令禁用网络连接,从而使系统暂时与外部网络断开。

要禁用特定连接,请按照以下步骤操作:

  1. 查看活跃连接的列表:

    > sudo nmcli connection show --active
      
    NAME                UUID                                  TYPE      DEVICE       
    Wired connection 2  7b0c32ee-851e-3015-a658-f4372b426273  ethernet  enp6s0f3u1u4
    lo                  8041ed2a-e4ae-4bf7-a0db-d4b513b9d745  loopback  lo           
    virbr0              1bec1271-4bb6-46a7-a50a-4b329fa318d3  bridge    virbr0       
    vnet0               ac196c81-0505-49f0-9328-b78e1746b4a9  tun       vnet0
  2. 终止特定连接:

    > sudo nmcli connection down CONNECTION-NAME/CONNECTION-UUID

    例如:

    > sudo nmcli connection down virbr0

要暂时禁用所有连接,请运行:

> sudo nmcli networking off
注意
注意:仅为临时更改

上述两种情况下(启用所有连接、禁用特定连接),所做更改仅在系统重引导前有效。系统重引导后,NetworkManager 及连接将恢复活跃状态。

7 监视网络连接

使用 nmcli 命令可查看由 NetworkManager 管理的网络连接的状态、活动及详细信息。

下面列出了用于执行网络连接基本监控任务的命令。

查看活跃连接的列表
> nmcli connection show --active
查看 NetworkManager 的状态
> nmcli monitor

该命令将显示网络状态和连接的实时动态。

查看特定网络连接的详细信息
> nmcli connection monitor CONNECTION-NAME

每次更改连接时,NetworkManager 就会列显一行。

监控网络设备的状态
> nmcli device monitor

该命令将显示所有网络设备及其设备名称、类型、状态和连接名称的列表。

查看 Wi-Fi 连接的信号强度
> nmcli device wifi list

该命令将显示可用 Wi-Fi 网络及其 SSID、信号强度(以 % 表示)和安全类型的列表。

8 NetworkManager 日志记录

NetworkManager 的活动由 journald 系统日志记录机制进行记录。NetworkManager 日志存储在 /var/log/syslog 中,可通过 journalctl 命令查看日志详细信息。

NetworkManager 记录的活动类型因当前日志记录级别而异。可用日志级别说明如下:

  • ERR:仅记录错误消息,例如连接失败。

  • WARN:记录警告与错误消息,例如身份验证问题。

  • INFO:记录通知性消息,是所有日志记录领域的默认级别。

  • DEBUG:记录详细的调试信息,例如详细的 DHCP 协商过程。

  • TRACE:记录极详细(通常不重要)的事件,例如数据包级别的详细信息。

要检查当前的日志记录级别,请运行:

> nmcli general logging

                                                                                                                                                                                                                    
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

输出显示所有领域的日志记录级别为 INFO — 这是默认设置。您可修改特定领域的日志记录级别,修改后命令仅会输出已修改的领域。

要修改所有领域的日志记录级别,请运行:

> sudo general logging level LEVEL domains ALL

例如,要将更改还原为默认设置,请运行:

> sudo nmcli general logging level INFO domains ALL

要更改特定领域的日志记录级别,例如,要为 DNSFIREWALL 设置 DEBUG 级别,请运行:

> sudo nmcli general logging level DEBUG domains FIREWALL,DNS

下面列出了使用 journald 管理 NetworkManager 日志的命令。

管理 NetworkManager 日志
查看日志

要查看 NetworkManager 日志,请运行:

> sudo journalctl -u NetworkManager

要实时查看 NetworkManager 日志,请运行:

> sudo journalctl -u NetworkManager -f

如果只想查看特定日志,请使用 grep 过滤 journalctl 输出。例如,要查看与 DHCP 相关的日志,请运行:

> sudo journalctl -u NetworkManager | grep DHCP
保存日志

要将 NetworkManager 日志保存到文件中,例如保存到 networkmanager.log,请运行:

> sudo journalctl -u NetworkManager > networkmanager.log

要将特定时间的 NetworkManager 日志保存到文件中,例如保存到 networkmanager_timerange.log,请运行:

> sudo journalctl -u NetworkManager --since "YYYY-MM-DD HH:MM:SS" --until "YYYY-MM-DD HH:MM:SS" > networkmanager_timerange.log

要使用实时监控功能保存 NetworkManager 日志,并在日志生成时保存,请运行:

> sudo journalctl -u NetworkManager -f >> live_networkmanager.log

9 nmcli 命令参考信息

本节汇总了 nmcli 命令的选项和子命令,您可使用它们与 NetworkManager 守护程序交互以管理网络。

nmcli 命令的一般语法如下:

# nmcli OPTIONSSUBCOMMANDSUBCOMMAND_ARGUMENTS

其中,OPTIONS 已在第 9.1 节 “nmcli 命令选项”中予以介绍,SUBCOMMAND 可为下列其中一项:

connection

用于配置网络连接。有关详细信息,请参见第 9.2 节 “connection 子命令”

device

用于网络设备管理。有关详细信息,请参见第 9.3 节 “device 子命令”

general

显示状态和权限。有关详细信息,请参见第 9.4 节 “general 子命令”

monitor

监控 NetworkManager 的活动,以及监控连接和设备的状态变化。此子命令不采用任何参数。

networking

查询网络状态。有关详细信息,请参见第 9.5 节 “networking 子命令”

9.1 nmcli 命令选项

除了子命令及其参数之外,nmcli 命令还可采用以下选项:

-a|--ask

该命令会停止运行以请求输入任何缺少的参数,例如,请求输入口令以连接到网络。

-c|--color {yes|no|auto}

控制颜色输出:yes 表示启用颜色,no 表示禁用颜色,auto 表示仅在将标准输出定向到终端时才创建颜色输出。

-m|--mode {tabular|multiline}

tabular 模式(每行描述一个条目,列定义条目的特定属性)和 multiline 模式(每个条目包含多行,每个属性单独占一行)之间切换。默认模式为 tabular 模式。

-h|--help

列显帮助。

-w|--wait seconds

设置等待 NetworkManager 完成操作的超时期限。对于需要较长时间才能完成的命令(例如连接激活),建议使用此选项。

9.2 connection 子命令

使用 connection 命令可以管理连接或查看有关特定连接的任何信息。nmcli connection 提供以下命令来管理网络连接:

show

列出连接:

> nmcli connection show

还可以使用此命令来显示有关指定连接的细节:

> nmcli connection show CONNECTION_ID

其中 CONNECTION_ID 是任意标识符:连接名称、UUID 或路径

up

激活提供的连接。可以使用该命令来重新加载连接。在对连接执行任何更改后,也需要运行此命令。

> sudo nmcli connection up [--active] [CONNECTION_ID]

指定 --active 后,只会显示活动配置文件。默认设置是同时显示活跃连接和静态配置。

down

停用连接。

> sudo nmcli connection down CONNECTION_ID

其中,CONNECTION_ID 是任意标识符:连接名称、UUID 或路径

如果您停用连接,则稍后不会重新连接,即使该连接具有 autoconnect 标志。

modify

更改或删除连接的属性。

> sudo nmcli connection modify CONNECTION_ID SETTING.PROPERTY PROPERTY_VALUE

其中:

  • CONNECTION_ID 是任意标识符:连接名称、UUID 或路径

  • SETTING.PROPERTY 是属性的名称,例如 ipv4.addresses

  • PROPERTY_VALUESETTING.PROPERTY 的所需值

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

> sudo nmcli connection modify ethernet1 connection.autoconnect no
add

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

> sudo nmcli connection add CONNECTION_ID save YES|NO SETTING.PROPERTY PROPERTY_VALUE

至少应指定 connection.type 或使用 type。以下示例会添加绑定到 DHCP eth0 接口的以太网连接,并禁用该连接的 autoconnect 标志:

> sudo nmcli connection add type ethernet autoconnect no ifname eth0
edit

使用交互式编辑器编辑现有连接。

> sudo nmcli connection edit CONNECTION_ID
clone

克隆现有连接。极简语法如下:

> sudo nmcli connection clone CONNECTION_ID NEW_NAME

其中 CONNECTION_ID 是要克隆的连接。

delete

删除现有连接:

> sudo nmcli connection delete CONNECTION_ID
monitor

监控提供的连接。每次更改连接时,NetworkManager 就会列显一行。

> sudo nmcli connection monitor CONNECTION_ID
reload

从磁盘重新加载所有连接文件。由于 NetworkManager 不会监控对连接文件执行的更改,因此每当您对文件进行更改时,都需要使用此命令。此命令不采用任何其他子命令。

load

要加载/重新加载特定的连接文件,请运行:

> sudo nmcli connection load CONNECTION_FILE

有关上述命令的详细信息,请参见 nmcli 文档

9.3 device 子命令

使用 device 子命令可以显示和管理网络接口。nmcli device 命令可识别以下命令:

status

列显所有设备的状态。

> nmcli device status
show

显示有关设备的详细信息。如果未指定设备,则会显示所有设备。

> mcli device show [DEVICE_NAME]
connect

连接设备。NetworkManager 会尝试查找可激活的适当连接。如果没有兼容的连接,则会创建新的配置文件。

> sudo nmcli device connect DEVICE_NAME
modify

对特定设备上处于活动状态的配置执行临时更改。更改不会存储在连接配置文件中。

> sudo nmcli device modify DEVICE_NAME [+|-] SETTING.PROPERTY VALUE

有关可能的 SETTING.PROPERTY 值,请参见 nm-settings-nmcli(5)

以下示例在设备 con1 上启动 IPv4 共享连接共享。

> sudo nmcli dev modify con1 ipv4.method shared
disconnect

断开设备连接,并阻止设备在未经人工干预的情况下自动激活其他连接。

> sudo nmcli device disconnect DEVICE_NAME
delete

从系统中删除接口。可以使用该命令来仅删除绑定和网桥等软件设备。无法使用此命令删除硬件设备。

> sudo nmcli device delete DEVICE_NAME
wifi

列出所有可用的接入点。

> nmcli device wifi
wifi connect

连接到按 SSID 或 BSSID 指定的 Wi-Fi 网络。该命令接受以下选项:

  • password - 安全网络的口令

  • ifname - 用于激活的接口

  • name - 可为连接命名

> sudo nmcli device wifi connect SSID [password PASSWORD_VALUE] [ifname INTERFACE_NAME]

要使用口令 pass$word2#@@ 连接到 Wi-Fi GUESTWiFi,请运行:

> sudo nmcli device wifi connect GUESTWiFi password pass$word2#@@

9.4 general 子命令

可以使用此命令查看 NetworkManager 状态和权限,以及更改主机名和日志记录级别。nmcli general 可识别以下命令:

status

显示 NetworkManager 的整体状态。如果未为 nmcli general 命令指定命令,则默认会使用 status。

> nmcli general status
hostname

如果未提供新主机名作为参数,则会显示当前主机名。如果指定了新主机名,则值将用于设置新主机名。

> sudo nmcli general hostname [HOSTNAME]

例如,要设置 MyHostname,请运行:

> sudo nmcli general hostname MyHostname
permissions

显示您的 NetworkManager 操作(例如启用或禁用网络、修改连接等)权限。

> nmcli general permissions
logging

显示和更改 NetworkManager 日志记录级别和域。在未指定任何参数的情况下,该命令会显示当前日志记录级别和域。

> sudo nmcli general logging [level LEVEL 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

9.5 networking 子命令

使用该子命令可以查询网络的状态。此外,使用此命令可以启用或禁用网络。nmcli networking 命令接受以下命令:

on/off

启用或禁用网络。off 命令停用 NetworkManager 管理的所有接口。

> sudo nmcli networking on
connectivity

显示网络连接状态。如果使用 check,NetworkManager 将执行新的状态检查。否则会显示上次检测到的状态。

> nmcli networking connectivity

可能的状态如下:

  • none:主机未连接到任何网络。

  • portal:主机位于强制门户之后,无法访问完整互联网。

  • limited:主机已连接到网络,但无法访问互联网。

  • full:主机已连接到网络,且可完全访问互联网。

  • unknown:NetworkManager 无法确定网络状态。

10 查错

了解如何调试和排除 NetworkManager 安装及配置过程中出现的问题。

10.1 网络未运行

如果网络无法正常工作,可能是由 NetworkManager 本身造成。如要检查这一情况,请按以下步骤操作:

  1. 检查 NetworkManager 是否已启用并处于活跃状态:

    > sudo systemctl status network
  2. 如果 NetworkManager 处于禁用状态,请将其启用:

    > sudo systemctl enable NetworkManager
  3. 如果 NetworkManager 处于非活跃状态,请将其重启:

    > sudo restart NetworkManager

10.2 Wi-Fi 连接问题

如果您遇到 Wi-Fi 连接问题,请按照以下说明操作:

  1. 查看 Wi-Fi 连接的列表:

    > sudo nmcli device wifi list
  2. 如果列出了特定设备,请确保其 Wi-Fi 连接处于活跃状态:

    > sudo nmcli connection show --active
  3. 如果未列出 Wi-Fi 连接,请验证 Wi-Fi 状态:

    > sudo nmcli device status
    1. 如果状态为 disconnected,则激活相应连接。

      > sudo nmcli connection up CONNECTION_NAME
    2. 如果状态为 unavailable,请重启 NetworkManager:

      > sudo systemctl restart NetworkManager
  4. 检查 NetworkManager 日志中的错误消息。

    > sudo journalctl -u NetworkManager -n 100
  5. Wi-Fi 设备可能会被拦截:

    1. 检查设备是否被拦截:

      > sudo rfkill list
       
      phy0: Wireless LAN
      Soft blocked: yes
      Hard blocked: no
    2. 取消拦截设备:

      > sudo rfkill unblock all
  6. IPv4 静态地址可能配置错误,要检查这一情况,请重置为使用 DHCP:

    > sudo nmcli connection modify SSID ipv4.method auto
  7. 尝试再次激活连接:

    > sudo nmcli connection up SSID
  8. 尝试重新连接到 Wi-Fi 网络:

    > sudo nmcli device wifi connect SSID password PASSWORD

10.3 网络绑定问题

要排查网络绑定问题,请验证连接状态,检查绑定接口的状态,然后使用 nmcli 命令重启网络服务。

过程 7︰ 网络绑定查错
  1. 列出并查看连接状态:

                nmcli connection status
  2. 检查网络设备的状态,包括绑定接口。

                nmcli device status
  3. 检查 /proc/net/bonding/bond0 中的绑定接口状态

    此文件提供了有关绑定模式、活跃从属设备的信息及其他相关详细信息。

  4. 如果连接处于非活跃状态,请激活连接:

                nmcli con up connectionname
  5. 根据需要修改连接。

                nmcli con edit connectionname
  6. 重启连接。

    > sudo  nmcli connection up bond0

10.4 网络捆绑问题

验证 /var/log/messages 中与网络捆绑相关的错误消息。

您可以执行以下操作排查网络捆绑问题:分析设备和网络捆绑连接详细信息、启用被禁用的设备,以及根据需要修改绑定模式。进行更改后,请重新加载网络捆绑连接并重启 NetworkManager。

过程 8︰ 网络捆绑查错
  1. 查看设备列表:

                nmcli device
  2. 查看网络捆绑连接详细信息:

                nmcli connection show teamname
  3. 启用接口:

                nmcli connection modify teamname bond.options "mode=active-backup"
  4. 重新加载网络捆绑连接:

                nmcli connection reload teamname
  5. 重启 NetworkManager。

    > sudo systemctl restart NetworkManager.service