systemd-networkd is a system daemon that manages network configurations on Linux systems using systemd. It provides a lightweight alternative to NetworkManager, particularly suited for servers and embedded systems. With simple configuration files, systemd-networkd handles Ethernet, WiFi, bridges, VLANs, and complex network setups efficiently.
📑 Table of Contents
Key Features
- Simple Configuration – INI-style .network files
- DHCP Client/Server – Built-in DHCP functionality
- Static Configuration – Easy static IP setup
- Virtual Networks – Create bridges, VLANs, bonds, and tunnels
- Link Management – Configure device settings with .link files
- Minimal Dependencies – Lightweight with low resource usage
Configuration
# /etc/systemd/network/20-wired.network
[Match]
Name=eth0
[Network]
DHCP=yes
# Static IP configuration
# /etc/systemd/network/20-static.network
[Match]
Name=eth0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
DNS=8.8.4.4
Enable and Use
# Enable systemd-networkd
sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd
# Enable resolved for DNS
sudo systemctl enable systemd-resolved
sudo systemctl start systemd-resolved
# Check status
networkctl status
networkctl list
# View specific interface
networkctl status eth0
Advanced Configuration
# Bridge configuration
# /etc/systemd/network/10-bridge.netdev
[NetDev]
Name=br0
Kind=bridge
# /etc/systemd/network/20-bridge.network
[Match]
Name=br0
[Network]
DHCP=yes
Use Cases
systemd-networkd is ideal for servers, containers, embedded systems, minimal installations, and any environment where NetworkManager is too heavy.
Was this article helpful?