Как заменить менеджер сетевых соединений 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 перед тем, как приступать к выполнению описанных в статье операций.
$ systemctl --version
Переход с NetworkManager на systemd-networkd
Процесс перехода с NetworkManager на systemd-networkd (как и обратный процесс) не связан с какими-либо трудностями.
Во-первых, следует деактивировать системную службу NetworkManager и активировать системную службу systemd-networkd следующим образом:
$ sudo systemctl disable NetworkManager
$ sudo systemctl enable systemd-networkd
После запуска системная служба systemd-resolved создаст свой собственный файл resolv.conf в одной из поддиректорий директории /run/systemd. Однако, обычной практикой является сохранение этого файла по пути /etc/resolv.conf, причем многие сетевые приложения все еще используют именно файл /etc/resolv.conf. Исходя из этого, вам придется создать символьную ссылку с именем /etc/resolv.conf следующим образом:
$ sudo rm /etc/resolv.conf
$ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
Настройка сетевых соединений с помощью systemd-networkd
Для настройки сетевых соединений, которые будут устанавливаться с помощью менеджера сетевых соединений systemd-networkd, вам придется добавить информацию о каждом из этих соединений в текстовый файл с расширением .network. Все конфигурационные файлы рассматриваемого менеджера сетевых соединений должны храниться в директории /etc/systemd/network, откуда они впоследствии будут загружаться. В том случае, если в директории будет сохранено множество конфигурационных файлов, systemd-networkd отсортирует их имена в лексическом порядке, после чего загрузит и обработает их по очереди.
Давайте начнем с создания директории /etc/systemd/network:
$ sudo mkdir /etc/systemd/network
Подключение к сети с сервером DHCP
Для начала настроим соединение с сетью с сервером DHCP. Для этого нам придется создать следующий конфигурационный файл. Имя файла может быть произвольным, но следует помнить о том, что перед загрузкой конфигурационных файлов менеджер сетевых соединений осуществляет сортировку их имен в лексическом порядке.
$ sudo vi /etc/systemd/network/20-dhcp.network
[Match]
Name=enp3*
[Network]
DHCP=yes
Как несложно увидеть выше, каждый файл конфигурации сетевого соединения содержит одну или несколько "секций", причем перед каждой из секций присутствует заголовок [XXX]. Каждая секция содержит одну или большее количество пар ключ/значение. Секция [Match] описывает сетевое устройство или множество устройств, настройка которых осуществляется с помощью данного файла конфигурации. Например, данный файл конфигурации относится к любому сетевому интерфейсу, имя которого начинается с enp3 (например, enp3s0, enp3s1, enp3s2 и.т.д.). Именно к этим интерфейсам применяется конфигурация сетевого соединения на основе сервера DHCP, описанная в секции [Network].
Подключение к сети со статической адресацией
Если вы хотите установить статический IP-адрес для сетевого интерфейса, вы можете создать следующий файл конфигурации:
$ sudo vi /etc/systemd/network/10-static-enp3s0.network
[Match]
Name=enp3s0
[Network]
Address=192.168.10.50/24
Gateway=192.168.10.1
DNS=8.8.8.8
Как вы можете догадаться, для сетевого интерфейса 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 или перезагрузить систему.
$ sudo systemctl restart systemd-networkd
Вы можете проверить состояние описанных системных служб с помощью следующих команд:
$ systemctl status systemd-networkd
$ systemctl status systemd-resolved
Настройка виртуальных сетевых устройств с помощью systemd-networkd
Демон systemd-networkd также позволяет настраивать виртуальные сетевые устройства для организации сетевых мостов, виртуальных локальных сетей, туннелей, оверлейных сетей, агрегированных соединений и.т.д. Вы должны настраивать виртуальные устройства с помощью конфигурационных файлов с расширением .netdev.
Ниже я продемонстрирую методику настройки сетевого интерфейса для организации сетевого моста.
Настройка сетевого моста в Linux
Если вы желаете настроить сетевой мост в Linux (представленный сетевым интерфейсом br0) и добавить физический сетевой интерфейс (eth1) в этот мост, вы можете создать следующий конфигурационный файл:
$ sudo vi /etc/systemd/network/bridge-br0.netdev
[NetDev]
Name=br0
Kind=bridge
После этого вам придется настроить интерфейс сетевого моста br0 и вспомогательный сетевой интерфейс eth1 с помощью конфигурационных файлов с расширением .network следующего содержания:
$ sudo vi /etc/systemd/network/bridge-br0-slave.network
[Match]
Name=eth1
[Network]
Bridge=br0
$ sudo vi /etc/systemd/network/bridge-br0.network
[Match]
Name=br0
[Network]
Address=192.168.10.100/24
Gateway=192.168.10.1
DNS=8.8.8.8
Наконец, нужно будет перезапустить системную службу systemd-networkd:
$ sudo systemctl restart systemd-networkd
Впоследствии вы сможете воспользоваться инструментом brctl для проверки корректности создания интерфейса сетевого моста br0.
Заключение
Хотя systemd и считается системой инициализации для Linux, без сомнения рано или поздно в ее составе должен был появиться инструмент для управления сетевыми соединениями, аналогичный systemd-networkd. На данном этапе, однако, менеджер сетевых соединений systemd-networkd больше подходит для серверов, которые работают с относительно стабильными конфигурациями сетевых интерфейсов. В случае настольных компьютеров и ноутбуков, которые работают с непостоянными конфигурациями проводных и беспроводных соединений, менеджер сетевых соединений NetworkManager все так же остается предпочтительным выбором.
Если вы хотите узнать немного больше о менеджере сетевых соединений systemd-networkd, вы можете обратиться к его официальной странице руководства с полным списком поддерживаемых секций и ключей файлов конфигурации.
Как заменить менеджер сетевых соединений NetworkManager на systemd-networkd в Linux
-
Автор темы
-
- Сообщения: 1650
- Зарегистрирован: 10 сен 2016, 07:16
- Решено: 19
- Откуда: Москва
- Благодарил (а): 698 раз
- Поблагодарили: 187 раз
Как заменить менеджер сетевых соединений NetworkManager на systemd-networkd в Linux
1. Как узнать что у меня именно сейчас работает? Подозреваю, что глюки с сетью которые я имею вызваны тем, что у меня установлены оба менеджера.
2. В статье описано как запустить system-network вместо NetworkManager'а. А как провернуть обратную задачу? (установить NM вместо s-n)
2. В статье описано как запустить system-network вместо NetworkManager'а. А как провернуть обратную задачу? (установить NM вместо s-n)
-
- Сообщения: 7068
- Зарегистрирован: 27 авг 2016, 17:03
- Решено: 30
- Откуда: Voskresensk
- Благодарил (а): 1368 раз
- Поблагодарили: 741 раз
Как заменить менеджер сетевых соединений NetworkManager на systemd-networkd в Linux
StarMAUGLI, Сhkservice - Утилита для управления systemd-юнитами (Пост Chocobo #49050)
Смотрим что включено и запущено. И делаем соответствующие действия (Оставляем активированным и включенным нужное и выключаем и дезактивируем ненужное). Вкл network-манагер, выкл - другой
Смотрим что включено и запущено. И делаем соответствующие действия (Оставляем активированным и включенным нужное и выключаем и дезактивируем ненужное). Вкл network-манагер, выкл - другой
-
- Сообщения: 1650
- Зарегистрирован: 10 сен 2016, 07:16
- Решено: 19
- Откуда: Москва
- Благодарил (а): 698 раз
- Поблагодарили: 187 раз
Как заменить менеджер сетевых соединений NetworkManager на systemd-networkd в Linux
Dja, уж послал, так послал: 497 строк в этом чексервисе... еще что ли три сервиса где-нибудь нарыть для ровного счета?
ОК
В любом случае - спасибо. Буду пробовать.
ОК
В любом случае - спасибо. Буду пробовать.
-
- Сообщения: 7068
- Зарегистрирован: 27 авг 2016, 17:03
- Решено: 30
- Откуда: Voskresensk
- Благодарил (а): 1368 раз
- Поблагодарили: 741 раз
Как заменить менеджер сетевых соединений NetworkManager на systemd-networkd в Linux
StarMAUGLI, ну так никто не мешает взять 2 строки с первого поста.
Я думаю должно быть что-то типа
Но там в интерфейсе это сделать проще.
Я думаю должно быть что-то типа
Код: Выделить всё
sudo systemctl stop systemd-networkd
sudo systemctl disable systemd-networkd
sudo systemctl enable NetworkManager
sudo systemctl start NetworkManager
-
- Сообщения: 1650
- Зарегистрирован: 10 сен 2016, 07:16
- Решено: 19
- Откуда: Москва
- Благодарил (а): 698 раз
- Поблагодарили: 187 раз
Как заменить менеджер сетевых соединений NetworkManager на systemd-networkd в Linux
и это все?
Что бы наоборот включить вон целая статья на много букв.
-
- Сообщения: 7068
- Зарегистрирован: 27 авг 2016, 17:03
- Решено: 30
- Откуда: Voskresensk
- Благодарил (а): 1368 раз
- Поблагодарили: 741 раз
Как заменить менеджер сетевых соединений NetworkManager на systemd-networkd в Linux
Как видим так и есть.symon2014 писал(а): ↑11 окт 2016, 04:25Процесс перехода с NetworkManager на systemd-networkd (как и обратный процесс) не связан с какими-либо трудностями.
Во-первых, следует деактивировать системную службу NetworkManager и активировать системную службу systemd-networkd следующим образом:
$ sudo systemctl disable NetworkManager
$ sudo systemctl enable systemd-networkd
-
- Сообщения: 1650
- Зарегистрирован: 10 сен 2016, 07:16
- Решено: 19
- Откуда: Москва
- Благодарил (а): 698 раз
- Поблагодарили: 187 раз
Как заменить менеджер сетевых соединений NetworkManager на systemd-networkd в Linux
Dja, вроде теперь работает NM
посмотрю как будет в течение времени (лучше/хуже?)
посмотрю как будет в течение времени (лучше/хуже?)
-
- Сообщения: 1650
- Зарегистрирован: 10 сен 2016, 07:16
- Решено: 19
- Откуда: Москва
- Благодарил (а): 698 раз
- Поблагодарили: 187 раз
Как заменить менеджер сетевых соединений NetworkManager на systemd-networkd в Linux
После перехода на systemd-networkd (выполнения рекомендаций статьи) открываю системный монитор, а там все равно висит Network Manager. Можно ли его в этом случае "прибить" средствами самого системного монитора? сеть не отвалится?
UPD: Не дождался ответа. Попробовал. Оказалось - можно. Все продолжило работать. Последнее время нетворк-менеджер все равно все время рвал связь.
UPD: Не дождался ответа. Попробовал. Оказалось - можно. Все продолжило работать. Последнее время нетворк-менеджер все равно все время рвал связь.
-
- Сообщения: 4723
- Зарегистрирован: 21 июн 2017, 15:09
- Решено: 107
- Благодарил (а): 54 раза
- Поблагодарили: 2101 раз
Как заменить менеджер сетевых соединений NetworkManager на systemd-networkd в Linux
1. NetworkManager довольно лояльно относится к соединениям настроенным не через него а чем то другим. Просто показывает их, но не управляет.
2. Раздел про мосты в инструкции - совершенно бесполезен в текущем виде. Пример моста с одним интерфейсом = сферический куб в киселе. С равным итогом можно весь текущий раздел сократить до одной фразы "Так же с помощью systemd-networkd можно настраивать мосты."
2. Раздел про мосты в инструкции - совершенно бесполезен в текущем виде. Пример моста с одним интерфейсом = сферический куб в киселе. С равным итогом можно весь текущий раздел сократить до одной фразы "Так же с помощью systemd-networkd можно настраивать мосты."
-
- Сообщения: 5994
- Зарегистрирован: 16 дек 2017, 18:59
- Решено: 40
- Откуда: Феодосия
- Благодарил (а): 32 раза
- Поблагодарили: 758 раз
Как заменить менеджер сетевых соединений NetworkManager на systemd-networkd в Linux
Откопали потерянный мной в прошлой жизни и брошенный в Песочнице некропост.