Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры


UnixForum
Беспроводные выключатели nooLite купить дешевый 
компьютер родом из Dhgate.com


Lines Club

Ищем достойных соперников.

Библиотека сайта или "Мой Linux Documentation Project"

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

Оригинал: 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 перед тем, как приступать к выполнению описанных в статье операций.

$ systemctl --version

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

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

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

$ sudo systemctl disable NetworkManager
$ sudo systemctl enable systemd-networkd

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

$ sudo systemctl enable systemd-resolved
$ sudo systemctl start systemd-resolved

После запуска системная служба 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, вы можете обратиться к его официальной странице руководства с полным списком поддерживаемых секций и ключей файлов конфигурации.


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют