How do I force Linux to reacquire a new IP address from the DHCP server?

Solution 1:

You can also use this command:

dhclient -r interface

Where interface is the device you want to get a new address for.

dhclient -r eth0

The -r flag forces dhclient to first release any leases you have, you can then use this command to request a new lease:

dhclient eth0

From man dhclient:

   -r     Tell  dhclient  to  release the current lease it has from the 
          server.  This is not required by the DHCP protocol, but some 
          ISPs require their clients to notify the server if they wish 
          to release an assigned IP address.

Solution 2:

Either of the following should get it to renew.

/etc/init.d/networking restart

or

ifdown eth0; ifup eth0

I wouldn't recommend running either over an SSH connection, although you'll probably get away with the first one if it doesn't come back with a new ip address.


Solution 3:

Would comment p.campbell, but I have only 1 reputation and therefore cannot, first I review installed interfaces:

ip addr

release IP from selected interface (e.g. eth0, eth1, enp1s0, sit0, wlan0,...):

sudo dhclient -r *interface*

request new IP from DHCP server (alert on error):

sudo dhclient -1 *interface*

check IP:

ip addr

Ubuntu 16.04 LTS confirmed


Solution 4:

If you're using the dhcpcd tool then:

dhcpcd -k interface
dhcpcd interface

The first says to stop the daemon, and the second says to start it again.


Solution 5:

If the MAC address of the interface isn't changed, the DHCP server may assign it the same address when renewing. Therefore, a simple release and renew with dhclient may not acquire a new address. Change the MAC address and acquire a new IP address with the following commands. Don't forget to write the original down if you need to revert back to it at a later time.

ifconfig <interface> down
ifconfig <interface> hw ether <MAC address>
ifconfig <interface> up