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

Раздел для тем в стадии оформления.
Аватара пользователя
symon2014
Сообщения: 1523
Зарегистрирован: 29 авг 2016, 02:17
Решено: 18
Откуда: Феодосия
Благодарил (а): 46 раз
Поблагодарили: 408 раз

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

Сообщение symon2014 » 11 окт 2016, 04:25

Как заменить менеджер сетевых соединений 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, вы можете обратиться к его официальной странице руководства с полным списком поддерживаемых секций и ключей файлов конфигурации.
:sry:
Debian (8.8) , LMDE2 , LM 18.2 Mate .

Вернуться в «Песочница»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей