Пошаговые руководства, шпаргалки, полезные ссылки...
БлогФорумАвторы
Полезные Online-сервисы
Перечень Бесплатного ПО
Подписка на RSS-канал
В составе базовых служб 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. Для этого достаточно просто переименовать данный конфигурационный файл.
/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. Можно создавать файлы следующих типов:
/etc/systemd/network
Файлы *.link в обязательном порядке создавать необходимости нет. Они нужны лишь в тех случаях, когда мы хотим каким-либо образом изменить физические параметры интерфейсов. Например, если нас по какой-то причине не устраивает системное именование интерфейсов, управляемое udev (/usr/lib/udev/rules.d/*-net-*.rules), то мы можем прописать новое правило именования интерфейса, отталкиваясь, например, от его MAC адреса, адреса на шине PCI, имени драйвера и т.д.
/usr/lib/udev/rules.d/*-net-*.rules
Пример конфигурационного файла /etc/systemd/network/90-nic1-port0.link, в котором мы меняем имя интерфейса с определённым MAC адресом:
/etc/systemd/network/90-nic1-port0.link
[Match] MACAddress=04:01:50:23:1f:02 [Link] Name=nic1-port0
Пример конфигурационного файла /etc/systemd/network/80-lan0-dhcp.network для настройки интерфейса eth0 с помощью DHCP:
/etc/systemd/network/80-lan0-dhcp.network
eth0
[Match] Name=eth0 [Network] DHCP=ipv4 LinkLocalAddressing=no
Опция LinkLocalAddressing поможет избежать появления в системе IPv6 адреса, если есть желание отключить IPv6 в системе полностью.
LinkLocalAddressing
Обратите внимание на то, что если мы изменили имя интерфейса с помощью *.link-файла, как в примере выше, то при последующей настройке этого интерфейса в *.network-файле в параметре Name должно фигурировать именно изменённое имя интерфейса.
Name
Пример конфигурационного файла /etc/systemd/network/80-lan0-dhcp.network для настройки IPv4/v6 на всех интерфейсах, имена которых подпадают под маску eth* с помощью DHCP:
eth*
[Match] Name=eth* [Network] DHCP=ipv4 DHCP=ipv6
Пример конфигурационного файла /etc/systemd/network/50-lan0-static.network для статической настройки интерфейса enp8s0:
/etc/systemd/network/50-lan0-static.network
[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 предполагает наличие службы systemd-resolved. Если выполняется настройка чистой, только что установленной системы Debian 12, то в этой системе нет службы systemd-resolved. Поэтому для первичной работы механизма разрешения имён может потребоваться создание и настройка классического файла /etc/resolv.conf (он по умолчанию в новой системе тоже отсутствует).
Включаем автоматический запуск службы systemd-networkd при старте системы (при этом автоматически будет произведена связка зависимостей с другими системными службами systemd):
# systemctl enable systemd-networkd
Запускаем службу:
# systemctl start systemd-networkd
Проверяем статус интерфейсов:
# networkctl list
Проверяем статус настроек сети
# networkctl status
Проверяем лог службы:
# journalctl -u systemd-networkd.service
Дополнительные источники информации:
Проверено на следующих конфигурациях:
Автор первичной редакции: Алексей Максимов Время публикации: 20.06.2023 15:33