️ systemd-networkd — Network Configuration

If you like this project, consider supporting me on Buy Me a Coffee ☕️

systemd-networkd — systemd Network Manager

systemd-networkd is systemd's native network configuration manager. It's ideal for servers and minimal systems where GUI tools are unnecessary. Configuration is done through .network and .netdev files.

Installation & Configuration

Enable systemd-networkd / Включение systemd-networkd

sudo systemctl enable --now systemd-networkd  # Enable and start / Включить и запустить
sudo systemctl enable --now systemd-resolved  # Enable DNS resolution / Включить DNS
sudo systemctl status systemd-networkd        # Check status / Проверить статус

Configuration Paths / Пути конфигурации

Log Locations / Расположение логов

journalctl -u systemd-networkd -f  # Follow networkd logs / Смотреть логи

Core Management / Основное управление

Status Commands / Команды статуса

networkctl status                   # Overall network status / Общий статус сети
networkctl list                     # List all interfaces / Список интерфейсов
networkctl status <INTERFACE>       # Interface details / Детали интерфейса
networkctl lldp                     # Show LLDP neighbors / Показать LLDP соседей

Sample Output:

IDX LINK   TYPE     OPERATIONAL SETUP     
  1 lo     loopback carrier     unmanaged
  2 enp0s3 ether    routable    configured

Reload Configuration / Перезагрузить конфигурацию

sudo networkctl reload              # Reload all configs / Перезагрузить конфигурации
sudo systemctl restart systemd-networkd  # Restart service / Перезапустить сервис

Network Configuration Files

DHCP Configuration / Конфигурация DHCP

/etc/systemd/network/20-wired.network

[Match]
Name=enp0s3  # Interface name / Имя интерфейса

[Network]
DHCP=yes  # Enable DHCP / Включить DHCP
sudo systemctl restart systemd-networkd  # Apply config / Применить конфигурацию

Static IP Configuration / Статический IP

/etc/systemd/network/20-wired.network

[Match]
Name=enp0s3

[Network]
Address=192.168.1.100/24  # Static IP / Статический IP
Gateway=192.168.1.1       # Gateway / Шлюз
DNS=8.8.8.8               # DNS server / DNS сервер
DNS=8.8.4.4

Multiple IP Addresses / Несколько IP адресов

/etc/systemd/network/20-wired.network

[Match]
Name=enp0s3

[Network]
Address=192.168.1.100/24
Address=192.168.1.101/24  # Second IP / Второй IP
Address=2001:db8::1/64    # IPv6 / IPv6 адрес
Gateway=192.168.1.1
DNS=8.8.8.8

Static Routes / Статические маршруты

/etc/systemd/network/20-wired.network

[Match]
Name=enp0s3

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1

[Route]
Destination=10.0.0.0/8    # Route to 10.0.0.0/8 / Маршрут к 10.0.0.0/8
Gateway=192.168.1.254     # Via gateway / Через шлюз

Advanced Networking / Продвинутые настройки

Bridge Configuration / Настройка моста

Step 1: Create bridge device / Создать устройство моста

/etc/systemd/network/10-bridge.netdev

[NetDev]
Name=br0  # Bridge name / Имя моста
Kind=bridge

Step 2: Configure bridge / Настроить мост

/etc/systemd/network/20-bridge.network

[Match]
Name=br0

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8

Step 3: Add interface to bridge / Добавить интерфейс в мост

/etc/systemd/network/30-bridge-member.network

[Match]
Name=enp0s3  # Physical interface / Физический интерфейс

[Network]
Bridge=br0  # Add to bridge / Добавить в мост
sudo systemctl restart systemd-networkd  # Apply / Применить

Step 1: Create bond device / Создать устройство bond

/etc/systemd/network/10-bond.netdev

[NetDev]
Name=bond0
Kind=bond

[Bond]
Mode=active-backup  # Bond mode / Режим bond
PrimaryReselectPolicy=always
MIIMonitorSec=100ms

Step 2: Configure bond / Настроить bond

/etc/systemd/network/20-bond.network

[Match]
Name=bond0

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1

Step 3: Add interfaces to bond / Добавить интерфейсы в bond

/etc/systemd/network/30-bond-member1.network

[Match]
Name=enp0s3  # First interface / Первый интерфейс

[Network]
Bond=bond0
PrimarySlave=true  # Primary member / Основной член

/etc/systemd/network/30-bond-member2.network

[Match]
Name=enp0s8  # Second interface / Второй интерфейс

[Network]
Bond=bond0

VLAN Configuration / Настройка VLAN

Step 1: Create VLAN device / Создать устройство VLAN

/etc/systemd/network/10-vlan10.netdev

[NetDev]
Name=vlan10
Kind=vlan

[VLAN]
Id=10  # VLAN ID / VLAN ID

Step 2: Configure VLAN / Настроить VLAN

/etc/systemd/network/20-vlan10.network

[Match]
Name=vlan10

[Network]
Address=192.168.10.100/24

Step 3: Attach VLAN to parent / Привязать VLAN к родительскому интерфейсу

/etc/systemd/network/30-parent.network

[Match]
Name=enp0s3  # Parent interface / Родительский интерфейс

[Network]
VLAN=vlan10  # Attach VLAN / Привязать VLAN

Troubleshooting & Tools / Устранение неполадок

Common Issues / Типичные проблемы

# Interface not managed / Интерфейс не управляется
networkctl status <INTERFACE>  # Check interface status / Проверить статус
sudo systemctl restart systemd-networkd  # Restart service / Перезапустить

# DNS not resolving / DNS не работает
sudo systemctl enable --now systemd-resolved  # Enable resolved / Включить resolved
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf  # Link resolv.conf / Привязать resolv.conf

# Configuration not applying / Конфигурация не применяется
sudo networkctl reload  # Reload configs / Перезагрузить конфигурации
journalctl -u systemd-networkd --no-pager | tail -50  # Check logs / Проверить логи

Debug Mode / Режим отладки

sudo systemctl edit systemd-networkd --full  # Edit service file / Редактировать файл сервиса
# Add: Environment=SYSTEMD_LOG_LEVEL=debug
sudo systemctl daemon-reload  # Reload daemon / Перезагрузить демон
sudo systemctl restart systemd-networkd  # Restart with debug / Перезапустить с отладкой
journalctl -u systemd-networkd -f  # Watch debug logs / Смотреть отладочные логи

Verify Configuration Syntax / Проверить синтаксис конфигурации

sudo systemd-analyze verify /etc/systemd/network/*.network  # Verify syntax / Проверить синтаксис

Comparison Tables / Таблицы сравнения

systemd-networkd vs NetworkManager / Сравнение с NetworkManager

Feature systemd-networkd NetworkManager
Target Use Case Servers, minimal systems / Серверы, минимальные системы Desktops, laptops / Десктопы, ноутбуки
WiFi Support Limited (wpa_supplicant) / Ограниченная Full / Полная
GUI Tools None / Нет nmtui, nm-connection-editor
Configuration Format .network files / .network файлы keyfile, ifcfg, nmconnection
Dependencies Minimal / Минимальные Many / Много
VPN Support Manual / Ручная Plugin-based / На основе плагинов

Bond Modes / Режимы Bond

Mode systemd-networkd Value Description (EN / RU)
Active-Backup active-backup Failover only / Только отказоустойчивость
Balance-RR balance-rr Round-robin load balance / Циклическая балансировка
802.3ad (LACP) 802.3ad LACP aggregation / LACP агрегация
Balance-XOR balance-xor XOR hash-based balance / Балансировка по хэшу

On this page

systemd-networkd — systemd Network Manager Installation &amp; Configuration Enable systemd-networkd / Включение systemd-networkd Configuration Paths / Пути конфигурации Log Locations / Расположение логов Core Management / Основное управление Status Commands / Команды статуса Reload Configuration / Перезагрузить конфигурацию Network Configuration Files DHCP Configuration / Конфигурация DHCP Static IP Configuration / Статический IP Multiple IP Addresses / Несколько IP адресов Static Routes / Статические маршруты Advanced Networking / Продвинутые настройки Bridge Configuration / Настройка моста Bond (Link Aggregation) / Объединение каналов VLAN Configuration / Настройка VLAN Troubleshooting &amp; Tools / Устранение неполадок Common Issues / Типичные проблемы Debug Mode / Режим отладки Verify Configuration Syntax / Проверить синтаксис конфигурации Comparison Tables / Таблицы сравнения systemd-networkd vs NetworkManager / Сравнение с NetworkManager Bond Modes / Режимы Bond