17.08.2022

Использование NetworkManager из командной строки

NetworkManager - это программа для управления сетевыми соединениями в Linux. При первом знакомстве с ней у меня было желание сразу её удалить. Однако спустя несколько лет я установил себе Fedora, где это одно из основных средств управления сетью. Не буду рассуждать на тему нужности, удобности и уместности использования NetworkManager, а просто опишу как её можно использовать в режиме командной строки.

Просмотреть список текущих подключений можно с помощью команды nmcli connection show:

[~]$ nmcli connection show
NAME                  UUID                                  TYPE       DEVICE 
ELTEX-D950            164beab3-4cbc-473f-8978-3465f79e251c  wifi       wlp3s0 
enp0s3                64785acb-b64f-3f4f-91a8-1498e067afb3  ethernet   --     

В результате будет выведен список подключений. Некоторые из них создаются автоматически. Каждое соединение имеет своё имя (NAME) и уникальный идентификатор (UUID). При работе соединением через командную строку можно использовать как первое, так и второе. Однако имя соединения не обязано быть уникальным. В таком случае при указании имени соединения необходимо указывать его UUID.

Если необходимо изменить значения по умолчанию, то я предпочитаю создавать новое подключение. Сделать это для ethernet-соединений можно с помощью команды:

nmcli connection add type ethernet ifname enp0s3 con-name fsanet

Часть con-name fsanet задаёт для нового соединения имя fsanet. В качестве имени необходимо использовать своё значение. Можно полностью опустить эту часть, тогда новому соединению имя будет присвоено автоматически по определённому алгоритму, например, использую тип интерфейса и имя интерфейса (ethernet-enp0s3). Указание имени интерфейса также не требуется.

По умолчанию NetworkManager пытается автоматически получить данные для настройки сети. Чтобы изменить это поведение для IPv4, необходимо выполнить команду

nmcli connection modify fsanet ipv4.method manual

При этом необходимо установить адрес интерфейса вручную, например так

nmcli connection modify fsanet ipv4.address 192.168.1.2/24
nmcli connection modify fsanet ipv6.address fd11::2/64

Можно использовать адреса IPv4 и IPv6 используя префикс ipv4 и ipv6 соответственно. Не забывайте указывать маску сети, иначе интерфейсу будет присвоен адрес с маской 255.255.255.255 или длиной маски сети 128 для IPv6, что скажется на работоспособности сети. Подобным образом задаётся адрес интерфейса или несколько адресов, которые можно указать используя в качестве разделителя запятую

nmcli connection modify fsanet ipv6.address fd11::2/64,fd11::3/64

При задании адреса интерфейса все остальные адреса того же типа будут удалены. Если необходимо добавить ещё один или несколько, то необходимо добавить символ + перед параметром ipv4.address.

nmcli connection modify fsanet +ipv4.address 192.168.1.3/24

Используя знак минус можно удалить ранее добавленный адрес и сохранить остальные

nmcli connection modify fsanet -ipv4.address 192.168.1.3/24

Отключить соединение можно с помощью команды

nmcli connection down fsanet

Подключить

nmcli connection up fsanet

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

nmcli connection modify fsanet ipv4.method auto

Интерактивный редактор соединения можно запустить с помощью команды

nmcli connection edit fsanet

Распечатать список доступных параметров можно с помощью

print

Переход к параметрам, которые начинаются на ipv4

goto ipv4

Можно, например, включить автоматическое получение IPv4 адресов и сохранить это поведение с помощью следующей последовательности команд

nmcli ipv4> set method auto
nmcli ipv4> save

Другие полезные команды:

Wireguard

NetworkManager может управлять соединениями через Wireguard. Для этого необходимо импортировать конфигурацию, которая используется wg-quick, например, из файла wg0.conf, с помощью команды

nmcli connection import type wireguard file wg0.conf

Обратите внимание, что заметки могут обновляться со временем. Это может быть как исправление найденных ошибок, так и доработка содержания с целью более полного раскрытия темы. Информация об изменениях доступна в репозитории на github. Там же вы можете оставить в Issue ваши замечания по данной заметке.


Если данная заметка оказалась вам полезной, можете поблагодарить автора финансово на сервисе Boosty или любой суммой через сервис QIWI.