Настройка IP-сети с помощью nmcli

Ричард Грегори, Питер Бой (pboy) Version F36 onwards Last review: 2023-08-28
Как настроить сеть с помощью утилиты командной строки nmcli (NetworkManager Command Line Interface).

Начало работы с nmcli

Утилита командной строки nmcli (NetworkManager Command Line Interface) используется для управления NetworkManager и отчётов о состоянии сети. Её можно использовать в качестве замены nm-applet или других графических клиентов. nmcli используется для создания, отображения, редактирования, удаления, активации и деактивации сетевых подключений, а также для управления и отображения состояния сетевых устройств.

Утилита nmcli может использоваться как пользователями, так и скриптами для управления NetworkManager:

  • Для серверов, безголовых машин и терминалов nmcli можно использовать для прямого управления NetworkManager без GUI, включая создание, редактирование, запуск и остановку сетевых подключений и просмотр состояния сети.

  • Для скриптов nmcli поддерживает сжатый формат вывода, который лучше подходит для обработки скриптами. Это способ интегрировать настройку сети вместо ручного управления сетевыми подключениями.

Базовый формат команды nmcli следующий:

$ nmcli [OPTIONS] OBJECT { COMMAND | help }

где OBJECT может быть одним из следующих вариантов: general, networking, radio, connection, device, agent и monitor. Вы можете использовать любой префикс этих вариантов в своих командах. Например, nmcli con help, nmcli c help, nmcli connection help выдают одинаковый результат.

Некоторые полезные необязательные OPTIONS для начала работы:

-t, terse

Этот режим можно использовать для обработки скриптами, так как вы видите сжатый вывод, отображающий только значения.

Example 1. Просмотр сжатого вывода
$ nmcli -t device
ens3:ethernet:connected:Profile 1
lo:loopback:unmanaged:
-f, field

Этот параметр указывает, какие поля могут отображаться в выводе. Например, NAME,UUID,TYPE,AUTOCONNECT,ACTIVE,DEVICE,STATE. Вы можете использовать одно или несколько полей. Если хотите использовать несколько, не ставьте пробел после запятой для разделения полей.

Example 2. Указание полей в выводе
$ nmcli -f DEVICE,TYPE device
DEVICE  TYPE
ens3    ethernet
lo      loopback

или даже лучше для написания скриптов:

$ nmcli -t -f DEVICE,TYPE device
ens3:ethernet
lo:loopback
-p, pretty

Этот параметр заставляет nmcli выдавать удобочитаемый вывод. Например, значения выравниваются и печатаются заголовки.

Example 3. Просмотр вывода в режиме pretty
$ nmcli -p device
=====================
  Status of devices
=====================
DEVICE  TYPE      STATE      CONNECTION
--------------------------------------------------------------
ens3    ethernet  connected  Profile 1
lo      loopback  unmanaged  --
-h, help

Prints help information.

Инструмент nmcli имеет встроенную контекстно-зависимую справку. Чтобы вывести список доступных параметров и имён объектов:

$ nmcli help

Чтобы вывести список доступных действий, связанных с указанным объектом:

$ nmcli _object_ help

Например,

$ nmcli c help

Дополнительные ресурсы

Краткая подборка примеров nmcli

В этом разделе приведена краткая подборка примеров nmcli.

Предварительные требования

Проверка общего состояния NetworkManager ====
$ nmcli general status
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN
connected  full          enabled  enabled  enabled  enabled

В сжатом режиме:

$ nmcli -t -f STATE general connected
$ nmcli general logging
  LEVEL  DOMAINS
  INFO   PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,WIFI_SCAN,IP4,IP6,A
UTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,
WIMAX,INFINIBAND,FIREWALL,ADSL,BOND,VLAN,BRIDGE,DBUS_PROPS,TEAM,CONCHECK,DC
B,DISPATCH
$ nmcli connection show
  NAME       UUID                                  TYPE      DEVICE
Profile 1  db1060e9-c164-476f-b2b5-caec62dc1b05  ethernet    ens3
ens3       aaf6eb56-73e5-4746-9037-eed42caa8a65  ethernet    --
$ nmcli connection show --active
  NAME       UUID                                  TYPE      DEVICE
Profile 1  db1060e9-c164-476f-b2b5-caec62dc1b05  ethernet     ens3
$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION
ens3    ethernet  connected  Profile 1
lo      loopback  unmanaged  --

Вы также можете использовать следующие сокращения команд nmcli:

Table 1. Сокращения некоторых команд nmcli

[options="header"]

команда nmcli

сокращение

nmcli general status

nmcli g

nmcli general logging

nmcli g log

nmcli connection show

nmcli con show

nmcli connection show --active

nmcli con show -a

nmcli device status

nmcli dev

Дополнительные ресурсы

  • Дополнительные примеры см. на странице руководства *nmcli-examples*(5).

== Параметры nmcli

Ниже приведены некоторые важные параметры свойств nmcli:

connection.type

Тип подключения. Допустимые значения: adsl, bond, bond-slave, bridge, bridge-slave, bluetooth, cdma, ethernet, gsm, infiniband, olpc-mesh, team, team-slave, vlan, wifi, wimax. Каждый тип подключения имеет специфичные для типа параметры команды. Например:

  • Подключение gsm требует имени точки доступа, указанного в apn.

    $ nmcli c add connection.type gsm apn pass:quotes[_access_point_name_]
  • Устройство wifi требует идентификатора набора служб, указанного в ssid.

    $ nmcli c add connection.type wifi ssid _My identifier_

Список TYPE_SPECIFIC_OPTIONS можно посмотреть на странице руководства *nmcli*(1).

connection.interface-name

Имя устройства, относящееся к подключению.

$ nmcli con add connection.interface-name _eth0_ type _ethernet_
connection.id

Имя, используемое для профиля подключения. Если вы не укажете имя подключения, оно будет сгенерировано следующим образом:

_connection.type -connection.interface-name_

connection.id — это имя профиля подключения, и его не следует путать с именем интерфейса, обозначающим устройство (wlan0, ens3, em1). Однако пользователи могут называть подключения в честь интерфейсов, но это не одно и то же. Для устройства может быть доступно несколько профилей подключения. Это особенно полезно для мобильных устройств или при переключении сетевого кабеля между разными устройствами. Вместо редактирования конфигурации создайте разные профили и применяйте их к интерфейсу по мере необходимости. Параметр id также относится к имени профиля подключения.

Наиболее важные параметры для команд nmcli, таких как show, up, down:

id

Идентификационная строка, назначаемая пользователем профилю подключения. Id можно использовать в командах nmcli connection для идентификации подключения. Поле NAME в выводе команды всегда обозначает id подключения. Оно относится к тому же имени профиля подключения, что и con-name.

uuid

Уникальная идентификационная строка, назначаемая системой профилю подключения. uuid можно использовать в командах nmcli connection для идентификации подключения.

Дополнительные ресурсы

  • Полный список см. на странице руководства *nmcli*(1).