Static addressing with systemd-networkd
2025-03-04 - Dual IPv4 and IPv6 configuration
Tag: systemd
Introduction
I like to keep up with what established operating systems or Linux distributions
are doing even though I am not using them all everyday. While trying out
OpenSUSE again recently, I gave a first try ever to using systemd-networkd
.
Configuration
Here is an example of how to configure your network statically with
systemd-networkd
. The quirk is that there is no way to specify two Gateway
attributes in a Network
block. Since you can have multiple Address
blocks,
this is an inconsistency that required some reading of the manual before it
clicked.
Here is what ended up working for my /etc/systemd/network/20-wired.network
:
[Match]
MACAddress=fa:16:3e:82:71:b7
[Network]
Address=37.187.244.19/32
Address=2001:41d0:401:3100::fd5/64
DNS=1.1.1.1
[Route]
Destination=0.0.0.0/0
Gateway=37.187.244.1
GatewayOnLink=yes
Metric=10
[Route]
Destination=::/0
Gateway=2001:41d0:401:3100::1
Metric=10
The GatewayOnLink
attribute might not be needed for you. I am using it because
this is an OVH box and this provider likes to reduce instances chatter by
issuing /32
netmasks on DHCP. Though I could use a more standard netmask in
this static configuration, I choose to respect their preference.
Conclusion
In the end systemd-networkd
works well and I have no complaints other than
this quirkiness.