Renew DHCP lease in systemd-networkd
Solution 1:
Starting from systemd version 244, you can renew DHCP lease in systemd-networkd with the following command:
networkctl renew DEVICES...
Ubuntu 20.04 shipped with systemd 245.4 and is the first version of Ubuntu where this command is available.
Solution 2:
I found a freedesktop.org mailing list post from Tom Gundersen in August 2014 that answers my question, at least as of the time it was written:
> Is there a way to force a DHCPv4 release/renew with systemd-networkd?
We don't currently allow dynamic interaction with networkd, but you can force renew the release by either restarting networkd or unplugging/replugging the cable (or switching your wifi off/on if that's what you are using).
-t
So apparently if you do one of these two things, systemd-networkd
will renew your DHCP lease.
Solution 3:
I have found that if you do a restart on systemd-networkd
, it ignores the previous lease and just starts over with a clean request.
If you're also using a dhcpd
that does a ping check you end up with a second. That might be an interaction with how I've set up the network config. We use Critical because otherwise systemd-network
sends a DHCPRELEASE
on shutdown and, most critically, also forgets the lease it had before. So rebooting two systemd-networkd
servers at the same time has a very high chance of both of them losing their IP addresses.
I'm unsure what the conditions that cause this to happen are, however, I've found that if you send a -HUP
to systemd-networkd
, and then start the service (not restart) it will use the leases that are in /var/run/systemd/netif
as you would expect.