===== Настройка сетевой конфигурации с помощью 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~~