===== Настройка сетевой конфигурации с помощью systemd-networkd в Debian GNU/Linux =====
{{:unix-linux:debian:pasted:20171124-194401.png }} В составе базовых служб **systemd** имеется служба **systemd-networkd**, позволяющая унифицировать процедуры настройки сетевой конфигурации в разных современных операционных системах Linux. Функционал systemd-networkd доступен в systemd версии **210** и выше.
В рассматриваемом нами примере, в **Debian GNU/Linux 12 (Bookworm)** входит systemd более новой версии:
# systemctl --version
systemd 252 (252.6-1)
...
Перед настройкой и активацией systemd-networkd нам потребуется отключить применение сетевых настроек из классического для Debian файла ''/etc/network/interfaces''. Для этого достаточно просто переименовать данный конфигурационный файл.
# mv /etc/network/interfaces /etc/network/interfaces.save
При желании само содержимое файла можно привести в его изначальный вид с настройкой получения адреса по DHCP для основного сетевого интерфейса и закомментировать все настройки. Не будет лишним добавить в файл предупреждение для других администраторов о том, что сетевая конфигурация должна настраиваться в systemd-networkd.
## This file describes the network interfaces available on your system
## and how to activate them. For more information, see interfaces(5).
#source /etc/network/interfaces.d/*
## The loopback network interface
#auto lo
#iface lo inet loopback
## The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp
# -------- WARNING ----------
#
# Do not edit this file!
#
# This server's network configuration is configured using systemd-networkd
# To configure the network, use the configuration files in the /etc/systemd/network
Настраиваемые нами конфигурационные файлы **systemd-networkd** должны размещаться в каталоге ''/etc/systemd/network''.
Можно создавать файлы следующих типов:
* ***.link** – конфигурация физических параметров интерфейсов (имя, MAC, MTU и т.д.). [[https://www.freedesktop.org/software/systemd/man/systemd.link.html|Подробнее...]]
* ***.network** – конфигурация сети (DHCP/статический IP, MAC, MTU, маршруты, DNS и т.д.). [[https://www.freedesktop.org/software/systemd/man/systemd.network.html|Подробнее...]]
* ***.netdev** – для настройки виртуальных интерфейсов (VLAN, мосты, туннели, VPN и т.п.). [[https://www.freedesktop.org/software/systemd/man/systemd.netdev.html|Подробнее...]]
Файлы ***.link** в обязательном порядке создавать необходимости нет. Они нужны лишь в тех случаях, когда мы хотим каким-либо образом изменить физические параметры интерфейсов. Например, если нас по какой-то причине не устраивает системное именование интерфейсов, управляемое udev (''/usr/lib/udev/rules.d/*-net-*.rules''), то мы можем прописать новое правило именования интерфейса, отталкиваясь, например, от его MAC адреса, адреса на шине PCI, имени драйвера и т.д.
Пример конфигурационного файла ''/etc/systemd/network/90-nic1-port0.link'', в котором мы меняем имя интерфейса с определённым MAC адресом:
[Match]
MACAddress=04:01:50:23:1f:02
[Link]
Name=nic1-port0
Пример конфигурационного файла ''/etc/systemd/network/80-lan0-dhcp.network'' для настройки интерфейса ''eth0'' с помощью **DHCP**:
[Match]
Name=eth0
[Network]
DHCP=ipv4
LinkLocalAddressing=no
Опция ''LinkLocalAddressing'' поможет избежать появления в системе IPv6 адреса, если есть желание [[unix-linux:debian:how-to-turn-off-ipv6-in-debian-linux|отключить IPv6]] в системе полностью.
Обратите внимание на то, что если мы изменили имя интерфейса с помощью *.link-файла, как в примере выше, то при последующей настройке этого интерфейса в *.network-файле в параметре ''Name'' должно фигурировать именно изменённое имя интерфейса.
Пример конфигурационного файла ''/etc/systemd/network/80-lan0-dhcp.network'' для настройки IPv4/v6 на всех интерфейсах, имена которых подпадают под маску ''eth*'' с помощью **DHCP**:
[Match]
Name=eth*
[Network]
DHCP=ipv4
DHCP=ipv6
Пример конфигурационного файла ''/etc/systemd/network/50-lan0-static.network'' для статической настройки интерфейса enp8s0:
[Match]
Name=enp8s0
[Network]
Description=Local network
Address=192.168.1.20/24
Gateway=192.168.1.1
DNS=192.168.1.1 192.168.2.1
Domains=sub1.holding.com sub2.holding.com
LinkLocalAddressing=no
То есть, для минимальной конфигурации сети, например, с указанием статического IP на основном интерфейсе сервера, нам достаточно настроить один *.network-файл.
Обратите внимание на то, что указываемая в файлах *.network конфигурация DNS предполагает наличие службы [[unix-linux:debian:bookworm:configuring-systemd-resolved-caching-dns-client-on-debian-12|systemd-resolved]]. Если выполняется настройка чистой, только что установленной системы Debian 12, то в этой системе нет службы systemd-resolved. Поэтому для первичной работы механизма разрешения имён может потребоваться создание и настройка классического файла /etc/resolv.conf (он по умолчанию в новой системе тоже отсутствует).
Включаем автоматический запуск службы **systemd-networkd** при старте системы (при этом автоматически будет произведена связка зависимостей с другими системными службами systemd):
# systemctl enable systemd-networkd
{{ :unix-linux:debian:bookworm:pasted:20230620-150352.png }}
Запускаем службу:
# systemctl start systemd-networkd
Проверяем статус интерфейсов:
# networkctl list
{{ :unix-linux:debian:bookworm:pasted:20230620-150606.png }}
Проверяем статус настроек сети
# networkctl status
{{ :unix-linux:debian:bookworm:pasted:20230620-153144.png }}
Проверяем лог службы:
# journalctl -u systemd-networkd.service
----
Дополнительные источники информации:
* [[https://wiki.debian.org/SystemdNetworkd|Debian Wiki : Systemd-Networkd]]
* [[https://habr.com/ru/companies/ruvds/articles/309010/|Преимущества systemd-networkd на виртуальных серверах Linux]]
* [[https://www.freedesktop.org/software/systemd/man/systemd-networkd.html|systemd-networkd.service, systemd-networkd — Network manager]]
----
Проверено на следующих конфигурациях:
^ Версия ОС ^ Версия systemd ^
|Debian GNU/Linux Bullseye 12.0 | 252.6-1 amd64 |
----
{{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 20.06.2023 15:33
{{tag>Linux Debian "Debian 12" "Debian Bookworm" systemd systemd-networkd networkd networking}}
~~DISCUSSION~~