Аналоги network manager linux

Обновлено: 07.07.2024

Оригинал: How to switch from NetworkManager to systemd-networkd on Linux
Автор: Dan Nanni
Дата публикации: 31 августа 2015 г.
Перевод: А.Панин
Дата перевода: 25 июля 2016 г.

Как заменить менеджер сетевых соединений NetworkManager на systemd-networkd в Linux

Процесс внедрения компонентов системы инициализации systemd в различные дистрибутивы Linux вызывает неоднозначные оценки и зачастую сопровождается полемикой между ее сторонниками и противниками. Тем не менее, на сегодняшний день в большинстве наиболее популярных дистрибутивов Linux используемой по умолчанию системой инициализации является именно systemd.

Называемая автором "постоянно совершенствуемой, никогда не завершающей свое развитие и изменяющейся по мере развития технологий", система инициализации systemd была спроектирована не как отдельный демон инициализации, а как сложная система и платформа для управления системными службами, которая предоставляет развивающуюся экосистему с эквивалентами основных системных демонов, библиотек и утилит.

Одним из многих дополнительных компонентов systemd является менеджер сетевых соединений systemd-networkd, который отвечает за конфигурацию сетевых интерфейсов в рамках экосистемы systemd. С помощью sytemd-networkd вы можете настроить интерфейсы устройств, работающих с сетями, в которых используются как серверы DHCP, так и статическая адресация. Он также может использоваться для настройки виртуальных сетевых интерфейсов, позволяющих реализовать мосты, туннели или виртуальные сети. systemd-networkd не может непосредственно работать с беспроводными сетями, но вы всегда можете воспользоваться службой wpa_supplicant для настройки адаптеров беспроводных сетей, после чего передать управление сетевыми интерфейсами этих адаптеров systemd-networkd.

Во многих дистрибутивах Linux для управления сетевыми соединениями использовался и используется по сей день широко известный менеджер сетевых соединений NetworkManager. При сравнении менеджеров сетевых соединений NetworkManager и systemd-networkd несложно прийти к выводу о том, что последний является менее стабильным и функциональным. Например, он не обладает логикой, реализованной в менеджере сетевых соединений NetworkManager и позволяющей поддерживать постоянное соединение вашего компьютера с сетью по доступному в данный момент сетевому интерфейсу из заданного пользователем множества сетевых интерфейсов. Он не позволяет использовать хуки во время активации и деактивации сетевых интерфейсов для создания дополнительных сценариев. При этом systemd-networkd отлично интегрирован с остальными компонентами systemd (такими, как системная служба resolved, предназначенная для разрешения доменных имен по протоколу DNS, системная служба timesyncd, предназначенная для синхронизации времени по протоколу NTP и системная служба udevd, предназначенная для отслеживания состояния аппаратных устройств), поэтому со временем он может начать играть более важную роль в окружении systemd.

Если вас не смущает направление развития системы инициализации systemd, вы вполне можете рассмотреть возможность замены менеджера сетевых соединений NetworkManager на systemd-networkd. Если же вы являетесь убежденным противником systemd и довольны работой NetworkManager или базовых компонентов вашего дистрибутива для управления сетевыми соединениями, вам ничего не придется делать.

Те из читателей, которые все же решили попробовать systemd-networkd в работе, смогут найти в данной статье описание методики замены менеджера сетевых соединений NetworkManager на systemd-networkd в Linux.

Начальные требования

Компонент systemd-networkd поставляется в составе пакета systemd начиная с версии 210. Исходя из этого, он может быть задействован в таких дистрибутивах, как Debian 8 "Jessie" (systemd 215), Fedora 21 (systemd 217), Ubuntu 15.04 (systemd 219) или их более новых версиях.

Если вы работаете с другим дистрибутивом, вам стоит проверить версию пакета systemd перед тем, как приступать к выполнению описанных в статье операций.

Переход с NetworkManager на systemd-networkd

Процесс перехода с NetworkManager на systemd-networkd (как и обратный процесс) не связан с какими-либо трудностями.

Во-первых, следует деактивировать системную службу NetworkManager и активировать системную службу systemd-networkd следующим образом:

Вам также потребуется активировать системную службу systemd-resolved, которая используется systemd-networkd для разрешения доменных имен. Данная системная служба по своей сути является кэштрующим DNS-сервером:

После запуска системная служба systemd-resolved создаст свой собственный файл resolv.conf в одной из поддиректорий директории /run/systemd . Однако, обычной практикой является сохранение этого файла по пути /etc/resolv.conf , причем многие сетевые приложения все еще используют именно файл /etc/resolv.conf . Исходя из этого, вам придется создать символьную ссылку с именем /etc/resolv.conf следующим образом:

Настройка сетевых соединений с помощью systemd-networkd

Давайте начнем с создания директории /etc/systemd/network:

Подключение к сети с сервером DHCP

Для начала настроим соединение с сетью с сервером DHCP. Для этого нам придется создать следующий конфигурационный файл. Имя файла может быть произвольным, но следует помнить о том, что перед загрузкой конфигурационных файлов менеджер сетевых соединений осуществляет сортировку их имен в лексическом порядке.

Как несложно увидеть выше, каждый файл конфигурации сетевого соединения содержит одну или несколько "секций", причем перед каждой из секций присутствует заголовок [XXX]. Каждая секция содержит одну или большее количество пар ключ/значение. Секция [Match] описывает сетевое устройство или множество устройств, настройка которых осуществляется с помощью данного файла конфигурации. Например, данный файл конфигурации относится к любому сетевому интерфейсу, имя которого начинается с enp3 (например, enp3s0 , enp3s1 , enp3s2 и.т.д.). Именно к этим интерфейсам применяется конфигурация сетевого соединения на основе сервера DHCP, описанная в секции [Network] .

Подключение к сети со статической адресацией

Если вы хотите установить статический IP-адрес для сетевого интерфейса, вы можете создать следующий файл конфигурации:

Как вы можете догадаться, для сетевого интерфейса enp3s0 будет установлен статический IP-адрес 192.168.10.50/24 , адрес основного шлюза 192.168.10.1 и адрес сервера доменных имен 8.8.8.8 . В данном случае имеется одна тонкость, которая заключается в том, что фактически имя сетевого интерфейса enp3s0 совпадает с шаблоном имени сетевого интерфейса, который был задан ранее при настройке соединения с сетью с сервером DHCP. Однако, ввиду того, что файл конфигурации с именем "10-static-enp3s0.network" будет обработан перед файлом конфигурации с именем "20-dhcp.network" в соответствии с порядком следования символов, статическая конфигурация сетевого соединения будет иметь приоритет перед конфигурацией сетевого соединения с использованием сервера DHCP в случае сетевого интерфейса enp3s0 .

После того, как вы закончите создание файлов конфигурации, вам придется перезапустить системную службу systemd-networkd или перезагрузить систему.

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

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

Настройка виртуальных сетевых устройств с помощью systemd-networkd

Ниже я продемонстрирую методику настройки сетевого интерфейса для организации сетевого моста.

Настройка сетевого моста в Linux

Если вы желаете настроить сетевой мост в Linux (представленный сетевым интерфейсом br0 ) и добавить физический сетевой интерфейс ( eth1 ) в этот мост, вы можете создать следующий конфигурационный файл:

Наконец, нужно будет перезапустить системную службу systemd-networkd:

Впоследствии вы сможете воспользоваться инструментом brctl для проверки корректности создания интерфейса сетевого моста br0 .

Заключение

Хотя systemd и считается системой инициализации для Linux, без сомнения рано или поздно в ее составе должен был появиться инструмент для управления сетевыми соединениями, аналогичный systemd-networkd. На данном этапе, однако, менеджер сетевых соединений systemd-networkd больше подходит для серверов, которые работают с относительно стабильными конфигурациями сетевых интерфейсов. В случае настольных компьютеров и ноутбуков, которые работают с непостоянными конфигурациями проводных и беспроводных соединений, менеджер сетевых соединений NetworkManager все так же остается предпочтительным выбором.

Если вы хотите узнать немного больше о менеджере сетевых соединений systemd-networkd, вы можете обратиться к его официальной странице руководства с полным списком поддерживаемых секций и ключей файлов конфигурации.

Предыстория.
Мой старенький ноут грузится за 1 мин 30 сек. Даже для HDD это многовато. Проведя анализ по статье Ускорение загрузки, выяснил, что максимальное время загрузки происходит за счет монтирования /dev/loop* устройств snap пакетов. От них избавиться просто — найти замену из репозиториев или aur. Далее, сравнимые с ними по длительности загрузки оказались avahi и NetworkManager. С первым просто отключаем, не знаю кто им пользуется (почитал в гугле). А вот отказ от NetworkManager это уже история :

Включаем resolved, который отвечает за настройку DNS серверов:

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

Даем символическую ссылку на файл /etc/resolv.conf

Не забываем удалить апплет сети из автозагрузки.
Осталось настроить динамическое получение ip адреса при загрузке:

Сохраняем.
enp* значит, что сеть нужно подымать только для устройств, имена которых начинаются на enp. Cеть настроена. Но это только для сетевой карты. У кого нет Wi-Fi, можно на этом остановиться. У кого есть, читаем дальше. Некоторые настройки взяты отсюда:
Как заменить менеджер сетевых соединений NetworkManager на systemd-networkd в Linux
Как подключиться к WPA/WPA2 WiFi сети используя командную строку Linux.
Узнайте имя вашего WiFi устройства.

Выхлоп команды будет что-то вроде:

Далее рестартанем systemd-networkd

Убедитесь, что устройство активно.

Должно быть ‘UP‘ внутри скобок в первой строке вывода. Если это не так, то выполните

И еще раз проверте активизацию интерфейса.
Проверяем статус.

Если вывод команды

то подключения к сети нет.
Сканируем сеть на предмет обнаружения доступных WiFi точек.

Вывод команды приблизительно будет такой:

В выводе две важные части: SSID и протокол безопасности (WPA / WPA2 vc WEP). SSID из приведенного выше примера это berligostr. Протокол безопасности РСН, который также называют WPA2. Протокол безопасности важен, потому что он определяет, какой инструмент вы используете для подключения к сети.
Подключаемся к WPA/WPA2 WiFi сети. Для этого выполняем два действия. Сначала вы генерируете конфигурационный файл для wpa_supplicant, который содержит pre-shared key («пароль») для WiFi сети.
Дальнейшие действия подсказала статья на вики WPA supplicant (Русский)
Cоздаем

Сконфигурируйте для соединения с известной сетью

Полученный выхлоп вставляете в конец /etc/wpa_supplicant/example.conf
Где MYSSID — имя вашей Wi-Fi сети, passphrase — ваш пароль для подключения к ней
Подключаетесь к сети

Все работает? Тогда делаем автозапуск соединения при загрузке (systemd).
Делаем копию файла /etc/wpa_supplicant/example.conf и переименовываем его в /etc/wpa_supplicant/wpa_supplicant-wlp2s0.conf
Запускаем

Вот, собственно, и все.
Перезагрузка для проверки.
В результате всех манипуляций время загрузки уменьшилось до 35 сек. Неплохо так, в 3 раза для старенького бука.
ЗЫ. Скорее всего, более грамотные могут добавить что-то или немного оптимизировать клацание по клаве, буду благодарен за замечания и правки.

NetworkManager - популярный инструмент управления сетевыми подключениями в Linux, имеет удобный графический интерфейс как для Gnome, так и для KDE, но бывают ситуации когда окружение рабочего стола не запускается, и нужно поднимать сеть из консоли, или нужно настроить сеть на сервере где не установлено рабочее окружение.

В этой инструкции будет рассмотрена настройка Network Manager в консоли с помощью утилиты nmcli. С настройкой в графическом интерфейсе вы разберетесь без каких-либо инструкций, поэтому была выбрана именно эта тема. Также поговорим о том, как посмотреть информацию о сетевых интерфейсах в системе.

Собираем информацию о системе

Чтобы получить информацию обо всех установленных в системе сетевых интерфейсах используйте команду:


Для просмотра статистики переданных и полученных пакетов для интерфейса, например, enp24s0, наберите:

ip -s link show enp24s0


А чтобы посмотреть таблицу маршрутизации:

ip route show match 0/0

Синтаксис и опции nmcli

Утилита nmcli - многофункциональный и гибкий инструмент командной строки для настройки сети с помощью Network Mananger из консоли. Сначала рассмотрим ее синтаксис:

$ nncli опции объект команда

Чаще всего в nmcli мы будем использовать такие объекты:

  • device - управление сетевыми интерфейсами;
  • connection - управление соединениями;
  • networking - управление сетью в целом;
  • general - показывает состояние всех сетевых протоколов и NetworkManager в целом;
  • radio - управление сетевыми протоколами, wifi, ethernent и т д.

Команды для каждого объекта разные, а опции нам не будут интересны. Дальше рассмотрим примеры nmcli network manager.

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

1. Запустить NetworkManager

Первым делом нужно запустить NetworkManager из консоли:

sudo systemctl start NetworkManager

Теперь смотрим состояние интерфейсов с помощью nmcli:

nmcli general status


Еще мы можем посмотреть имя хоста:

nmcli general hostname


Получаем состояние интерфейсов

nmcli device status

2. Список подключений

Теперь самое интересное, управление сетью nmcli. Смотрим список доступных подключений:

nmcli connection show


Здесь вы можете видеть одно проводное подключение для интерфейса enp24s0. С помощью следующей команды можно посмотреть информацию о нём:

nmcli connection show "Проводное соединение 2"


3. Управление подключениями

Чтобы подключится к сети с помощью нужного подключения используйте команду up:

nmcli connection up "Проводное соединение 2"

Команды можно сокращать, например:

nmcli conn up "Проводное соединение 2"


А для деактивации подключения используйте команду down:

nmcli conn down "Проводное соединение 2"


4. Создание DHCP соединения

Чтобы создать новое подключение используйте команду add. Например создадим новое подключение с именем dhcp:

nmcli connection add con-name "dhcp" type ethernet ifname enp24s0

Команде надо передать параметр type - тип устройства, в нашем случае ethernet (Проводное соединение), а также ifname - название сетевого интерфейса, в этом примере enp24s0. По умолчанию используется тип подключения DHCP, поэтому больше ничего настраивать не надо и вы можете уже активировать это подключение как описано выше.

5. Создание соединения с статическим адресом

Для статического подключения настроек больше, вам надо передать команде add ip адрес, который будет использоваться в качестве основного в параметре ip4, а также шлюз с помощью параметра gw4:

nmcli connection add con-name "static" ifname enp2s0 autoconnect no type ethernet ip4 192.168.0.210 gw4 192.168.0.1


6. Настройка подключения

Продолжим настройку нашего статического соединения. Обычно оно уже может работать, но вы можете захотеть добавить DNS сервер. Для этого используется команда modify:

nmcli conn modify "static" ipv4.dns 8.8.8.8

И ещё один DNS сервер с помощью оператора +:

nmcli conn modify "static" +ipv4.dns 8.8.4.4

Для добавления дополнительной информации в поле используйте символ +. Например, вот так можно добавить еще один ip адрес:

nmcli conn modify "static" +ipv4.addresses 192.168.0.240/24

Обратите внимание, что IP адрес должен быть из той же подсети, что и ваш шлюз иначе может ничего не работать. Теперь можете активировать подключение:

nmcli connection up static

7. Настройка Wifi

В графическом интерфейсе это делается одной галочкой, здесь одной командой. Смотрим состояние wifi:

nmcli radio wifi

nmcli radio wifi on

nmcli radio wifi off

Такой командой можно посмотреть список доступных сетей wifi:

nmcli device wifi list

Команда для подключения к новой сети wifi выглядит не намного сложнее. Например, давайте подключимся к сети TP-Link с паролем 12345678:

nmcli device wifi connect "TP-Link" password 12345678 name "TP-Link Wifi"

Выводы

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

zolt85

UPDATE
На Linux Mint 20 и Ubuntu 20.04 asbru-cm не подключается к серверам по RDP. Летом 2020 года я снова поставил Remmina. Она стала сильно хороша и многие ее недостатки были исправлены. Присмотритесь к ней.

PAC забросили и теперь он не работает на Ubuntu18.04 и Linux Mint 19. Добрые люди сделали форк и назвали Ásbrú Connection Manager Да, я давно нашел его форк. Спасибо за ответ, это будет полезно многим. Пользуюсь реминой, иногда сильно она меня огорчает, но сделать ничего не могу.

pklyuev

Когда "огорчает" пользуюсь xfreerdp из консоли (в редких случаях, например, пробросить смарт-карту в удаленную сессию)

terminator для ssh
запуск xfreerdp, vncviewer из консоли.

Везде аутентификация по ключу.

Пробовал пару раз remmina, стошнило и больше gui не пользую

Из консоли запускать сильно не хочется, так я могу хранить все данные о подключениях в файле и вручную запускать каждое соединение, но очень неудобно и именно от этого спасает менеджер подключений. Кроме реммины ничего под описание не попадает.
Но ssh-ем лучше нативным пользоваться. ssh конечно из консоли, но если бы эта консоль вызывалась из менеджера, да еще и с вкладками :)

mars_unique

Манагинг вкладок групп и прочее решается при помощи терминала.
ssh - ssh
telnet - telnet
vnc - gnu vnc viewer
rdp - freeRDP
  • Сохранение паролей с возможностью их просмотра по мастер паролю
  • Доступ на открытие программы или чтение базы подключений по мастер паролю

Храненине паролей - грабит караваны.
И все-же если есть подобная нужда, включая базу подключений можно вести в sqlite к примеру, а если сильно хочется гуя, рекомендовал бы zenity

Не соглашусь с Вами.
Естественно, менеджер запускает терминал, если коннект идет по SSH, пусть стартует freeRDP, если надо на винду. Но делает он это из своей оболочки. Тут же стоит вопрос управления и удобства, а не правильности выбранных инструментов.

Если одно-два подключения, то можно и запомнить их данные, и даже вызывать каждый раз их консоли. Если же число более 10, то это ненужная информация в голове и затраты времени на подключение. Задача менеджера помогать упорядочивать все эти данные и делать доступ комфортным. PAC Manager же прекрасно работает с KeePass, котораый достает учетные данные к подключению по мастер паролю из зашифрованного хранилища.

Читайте также: