Red Hat Training

A Red Hat training course is available for RHEL 8

25.4. 使用 nmcli 在离线模式中创建密钥文件连接配置集

红帽建议您使用 NetworkManager 工具,如 nmclinetwork RHEL 系统角色或 nmstate API 来管理 NetworkManager 连接。但是,您也可以使用 nmcli --offline connection add 命令以离线模式创建不同的连接配置集。

脱机模式可确保 nmcli 在没有 NetworkManager 服务的情况下运行,以通过标准输出生成 keyfile 连接配置集。此功能在以下情况中很有用:

  • 您需要创建需要预先部署的连接配置集。例如在容器镜像中,或者作为 RPM 软件包。
  • 您需要在 NetworkManager 服务不可用的环境中创建连接配置集。例如,您需要使用 chroot 实用程序。或者,当您想通过 Kickstart %post 脚本创建或修改 RHEL 系统的网络配置时。

您可以创建以下连接配置集类型:

  • 静态以太网连接
  • 动态以太网连接
  • 网络绑定
  • 网桥
  • VLAN 或任何支持的连接类型
警告

手动创建或更新配置文件可能会导致意外或无法正常工作的网络配置。

先决条件

  • NetworkManager 服务已停止。

步骤

  1. 以 keyfile 格式创建新连接配置集。例如,对于不使用 DHCP 的以太网设备的连接配置文件,请运行类似的 nmcli 命令:

    # nmcli --offline connection add type ethernet con-name Example-Connection ipv4.addresses 192.0.2.1/24 ipv4.dns 192.0.2.200 ipv4.method manual > /etc/NetworkManager/system-connections/output.nmconnection
    注意

    使用 con-name 键指定的连接名称被保存到生成的配置集的 id 变量中。当您使用 nmcli 命令稍后管理这个连接时,请按如下所示指定连接:

    • 如果没有省略 id 变量,请使用连接名称,如 Example-Connection
    • 当没有使用 id 变量时,请使用没有 .nmconnection 后缀的文件名,如 output
  2. 对配置文件设置权限,以便只有 root 用户可以读和更新它:

    # chmod 600 /etc/NetworkManager/system-connections/output.nmconnection
    # chown root:root /etc/NetworkManager/system-connections/output.nmconnection
  3. 启动 NetworkManager 服务:

    # systemctl start NetworkManager.service
  4. 可选:如果您将配置文件中的 autoconnect 变量设为 false,请激活连接:

    # nmcli connection up Example-Connection

验证

  1. 验证 NetworkManager 服务是否正在运行:

    # systemctl status NetworkManager.service
    ● NetworkManager.service - Network Manager
       Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
       Active: active (running) since Wed 2022-08-03 13:08:32 CEST; 1min 40s ago
         Docs: man:NetworkManager(8)
     Main PID: 7138 (NetworkManager)
        Tasks: 3 (limit: 22901)
       Memory: 4.4M
       CGroup: /system.slice/NetworkManager.service
               └─7138 /usr/sbin/NetworkManager --no-daemon
    
    Aug 03 13:08:33 example.com NetworkManager[7138]: <info>  [1659524913.3600] device (vlan20): state change: secondaries -> activated (reason 'none', sys-iface-state: 'assume')
    Aug 03 13:08:33 example.com NetworkManager[7138]: <info>  [1659524913.3607] device (vlan20): Activation: successful, device activated.
    ...
  2. 验证 NetworkManager 是否可以从配置文件中读取配置集:

    # nmcli -f TYPE,FILENAME,NAME connection
    TYPE      FILENAME                                                    NAME
    ethernet /etc/NetworkManager/system-connections/output.nmconnection Example-Connection
    ethernet  /etc/sysconfig/network-scripts/ifcfg-enp1s0                 enp1s0
    ...

    如果输出没有显示新创建的连接,请验证密钥文件权限和您所用的语法是否正确。

  3. 显示连接配置文件:

    # nmcli connection show Example-Connection
    connection.id:                          Example-Connection
    connection.uuid:                        232290ce-5225-422a-9228-cb83b22056b4
    connection.stable-id:                   --
    connection.type:                        802-3-ethernet
    connection.interface-name:              --
    connection.autoconnect:                 yes
    ...