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.