Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


unix-linux:debian:bookworm:how-to-setup-network-configuration-with-systemd-networkd-on-debian-linux-12

Настройка сетевой конфигурации с помощью systemd-networkd в Debian GNU/Linux

В составе базовых служб 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.

interfaces
## 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 и т.д.). Подробнее...
  • *.network – конфигурация сети (DHCP/статический IP, MAC, MTU, маршруты, DNS и т.д.). Подробнее...
  • *.netdev – для настройки виртуальных интерфейсов (VLAN, мосты, туннели, VPN и т.п.). Подробнее...

Файлы *.link в обязательном порядке создавать необходимости нет. Они нужны лишь в тех случаях, когда мы хотим каким-либо образом изменить физические параметры интерфейсов. Например, если нас по какой-то причине не устраивает системное именование интерфейсов, управляемое udev (/usr/lib/udev/rules.d/*-net-*.rules), то мы можем прописать новое правило именования интерфейса, отталкиваясь, например, от его MAC адреса, адреса на шине PCI, имени драйвера и т.д.

Пример конфигурационного файла /etc/systemd/network/90-nic1-port0.link, в котором мы меняем имя интерфейса с определённым MAC адресом:

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:

80-lan0-dhcp.network
[Match]
Name=eth0
 
[Network]
DHCP=ipv4
LinkLocalAddressing=no

Опция LinkLocalAddressing поможет избежать появления в системе IPv6 адреса, если есть желание отключить IPv6 в системе полностью.

Обратите внимание на то, что если мы изменили имя интерфейса с помощью *.link-файла, как в примере выше, то при последующей настройке этого интерфейса в *.network-файле в параметре Name должно фигурировать именно изменённое имя интерфейса.

Пример конфигурационного файла /etc/systemd/network/80-lan0-dhcp.network для настройки IPv4/v6 на всех интерфейсах, имена которых подпадают под маску eth* с помощью DHCP:

80-lan0-dhcp.network
[Match]
Name=eth*
 
[Network]
DHCP=ipv4
DHCP=ipv6

Пример конфигурационного файла /etc/systemd/network/50-lan0-static.network для статической настройки интерфейса enp8s0:

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

Дополнительные источники информации:


Проверено на следующих конфигурациях:

Версия ОС Версия systemd
Debian GNU/Linux Bullseye 12.0 252.6-1 amd64

Автор первичной редакции:
Алексей Максимов
Время публикации: 20.06.2023 15:33

Обсуждение

Ваш комментарий:
 
unix-linux/debian/bookworm/how-to-setup-network-configuration-with-systemd-networkd-on-debian-linux-12.txt · Последнее изменение: 23.11.2023 14:53 — Алексей Максимов

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki