️ systemd-networkd — Network Configuration

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


tags:

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

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

/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

/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

/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

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

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

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

linux systemd-networkd — systemd Network Manager Installation &amp; Configuration Enable systemd-networkd Configuration Paths Log Locations Core Management Status Commands Reload Configuration Network Configuration Files DHCP Configuration Static IP Configuration Multiple IP Addresses Static Routes Advanced Networking Bridge Configuration Bond (Link Aggregation) VLAN Configuration Troubleshooting &amp; Tools Common Issues Debug Mode Verify Configuration Syntax Comparison Tables systemd-networkd vs NetworkManager Bond Modes 📚 Documentation Links