Fixing a slow start-up of WireGuard in Debian 12
Posted: 2023-06-14 · Last updated: 2023-12-02
I don't know exactly what changed, but after upgrading from Debian 11 "bullseye" to Debian 12 "bookworm", my WireGuard profiles started only very slowly. Usually, I use the wg-quick@profile.service
units, which are enable
d so that they start automatically once my system boots.
I debugged this issue by running systemd-analyze blame
. This revealed a clear culprit: The unit systemd-networkd-wait-online.service
took 2 minutes to start! Looking into the logs using journalctl -bu systemd-networkd-wait-online.service
gave me the bad news:
Jun 10 17:12:48 grossmann systemd[1]: Starting systemd-networkd-wait-online.service - Wait for Network to be Configured...
Jun 10 17:14:48 grossmann systemd-networkd-wait-online[839]: Timeout occurred while waiting for network connectivity.
Jun 10 17:14:48 grossmann systemd[1]: systemd-networkd-wait-online.service: Main process exited, code=exited, status=1/FAILURE
Jun 10 17:14:48 grossmann systemd[1]: systemd-networkd-wait-online.service: Failed with result 'exit-code'.
Jun 10 17:14:48 grossmann systemd[1]: Failed to start systemd-networkd-wait-online.service - Wait for Network to be Configured.
Since I use NetworkManager, there is nothing for systemd-networkd-wait-online.service
to wait for. It's a superfluous step in the network readiness target. Checking which packages depend on the service (systemctl list-dependencies --reverse systemd-networkd-wait-online.service
) confirmed that it was this particular service holding me back.
I solved this issue by simply running systemctl disable systemd-networkd-wait-online.service
and a reboot confirmed that this resolved my problems. Note that I did not need to change any units; by disabling this particular part of the target, the other network readiness checks continue to run, just not this one that is unnecessary given my setup.