2015-05-27 09:34:50 +02:00
|
|
|
---
|
|
|
|
layout: post
|
|
|
|
comments: true
|
|
|
|
title: "My systemd-networkd setup"
|
|
|
|
category: [english]
|
|
|
|
tags: [english, systemd-networkd]
|
|
|
|
---
|
|
|
|
|
|
|
|
*This is happy post so probably useless, but my blog is always so
|
|
|
|
unhappy… Anyway, systemd-networkd on my hosts.*
|
|
|
|
|
|
|
|
I am running systemd-networkd on wired hosts as I am not so sure how it
|
|
|
|
works with wireless hosts and I am using network manager with WLAN
|
|
|
|
connections.
|
|
|
|
|
|
|
|
The hosts mentioned here are
|
|
|
|
* Zaldaryn which runs Ubuntu MATE 15.04
|
|
|
|
* Rbtpzn which currently runs Antergos and is the oldest PC I have and
|
|
|
|
it's also the first one ever where I installed Ubuntu 8.04 in 2008.
|
|
|
|
|
|
|
|
First you create network connection, I call them with the adapter name,
|
|
|
|
e.g. Rbtpzn has `/etc/systemd/network/enp0s18.network` and Zaldaryn
|
|
|
|
`/etc/systemd/network/eth0.network`.
|
|
|
|
|
|
|
|
It appears that I have been experimenting with the two hosts, so the
|
|
|
|
files differ. Here is Zaldaryn which looks more proper or direct copy
|
|
|
|
from Arch Wiki:
|
|
|
|
|
|
|
|
```
|
|
|
|
[Match]
|
|
|
|
Name=eth0
|
|
|
|
|
|
|
|
[Network]
|
|
|
|
DNS=127.0.0.1
|
|
|
|
|
|
|
|
[Address]
|
|
|
|
Address=172.16.1.6
|
|
|
|
|
|
|
|
[Route]
|
|
|
|
Gateway=172.16.0.1
|
|
|
|
```
|
|
|
|
|
|
|
|
and Rbtpzn
|
|
|
|
|
|
|
|
```
|
|
|
|
[Match]
|
|
|
|
Name=enp0s18
|
|
|
|
|
|
|
|
[Network]
|
|
|
|
Address=172.16.1.2/16
|
|
|
|
Gateway=172.16.0.1
|
|
|
|
# DNS has no effect unless systemd-resolved is used
|
|
|
|
# systemctl enable systemd-resolved && systemctl start systemd-resolved
|
|
|
|
# ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
|
|
|
|
DNS=127.0.0.1
|
|
|
|
DNS=::1
|
|
|
|
DNS=8.8.4.4
|
|
|
|
NTP=pool.ntp.org
|
|
|
|
```
|
|
|
|
|
|
|
|
As you can see, they are quite different, Zaldaryn has everything neatly
|
|
|
|
separated and Rbtpzn has everything in the same block.
|
|
|
|
|
|
|
|
Match specifies which network interface is in question, Address is IP
|
|
|
|
address of the host. I am not sure where I took NTP and as the Rbtpzn block
|
|
|
|
says, you must use systemd-resolved for the DNS settings to do anything,
|
|
|
|
but that is easy, just run as root (or prefix all three commands
|
|
|
|
with `sudo`):
|
|
|
|
|
2015-06-07 18:07:26 +02:00
|
|
|
*update on 2015-06-07: to use NTP, you use systemd-timesyncd which is
|
|
|
|
enabled with `timedatectl set-ntp true`.*
|
|
|
|
|
2015-05-27 09:34:50 +02:00
|
|
|
```
|
|
|
|
systemctl enable systemd-resolved && systemctl start systemd-resolved
|
|
|
|
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
|
|
|
|
```
|
|
|
|
|
|
|
|
The address can also have CIDR specified which probably should be done, but
|
|
|
|
it appears that systemd-networkd can guess it correctly as everything works
|
|
|
|
with Zaldaryn which doesn't have it specified.
|
|
|
|
|
|
|
|
I am also using `systemd-networkd-wait-online.service`
|
|
|
|
(`systemctl enable systemd-networkd-wait-online.service`) so
|
2015-06-07 10:11:53 +02:00
|
|
|
`network.target` means that I have IP address before boot continues.
|
|
|
|
<s>There is 90 second timeout, but I still don't feel like trying this with wireless host as I would have 90 seconds longer boot time in new
|
|
|
|
environments.</s>
|
|
|
|
|
|
|
|
*Update on 2015-06-07: on wireless hosts I am using Network Manager and
|
|
|
|
it appears that `NetworkManager-wait-online.service`
|
|
|
|
(`systemctl enable NetworkManager-wait-online.service)` works well
|
|
|
|
and I shouldn't be in new environments so often that the 90 seconds timeout
|
|
|
|
would cause more harm than good.*
|
2015-05-27 09:34:50 +02:00
|
|
|
|
|
|
|
Currently the only thing using network.target for me is Reflector service
|
|
|
|
from Archwiki which updates mirrorlist with the fastest last synced mirrors
|
|
|
|
on boot on Rbtpzn.
|
|
|
|
|
|
|
|
Sources/further reading
|
|
|
|
* https://wiki.archlinux.org/index.php/Systemd-networkd
|
|
|
|
* http://www.freedesktop.org/software/systemd/man/systemd.network.html
|
|
|
|
* https://wiki.freedesktop.org/www/Software/systemd/NetworkTarget/
|
|
|
|
* https://wiki.archlinux.org/index.php/Reflector#Systemd_Service
|