112

What is the Linux command to clear IP addresses of an interface without bringing it down and/or restarting network services?

Seems strange that ifconfig is able to change IP addresses but has no option to remove them, or am I wrong?

5
  • 1
    @Andy: I think you misunderstood the question. @jackhab wants to unassign an address from the interface, not set it to 0.0.0.0 -- it's just how it is done with ifconfig. Commented Jun 17, 2010 at 10:36
  • @grawity Cheers. Unassigning an address is switching the NIC off to all intents and purposes?
    – Andy
    Commented Jun 17, 2010 at 11:03
  • @Andy: Not necessarily. One could still watch incoming packets. Also, a NIC can have multiple addresses (though it doesn't apply in this case). Commented Jun 17, 2010 at 21:33
  • 1
    See also serverfault.com/questions/407676/…
    – pevik
    Commented Jul 17, 2017 at 9:02
  • To clear the IPs of all interfaces that are up you can use ip addr flush up
    – ws6079
    Commented May 19, 2020 at 9:19

4 Answers 4

192

Use ip from iproute2. (You need to also specify the prefix length though.)

ip addr del 10.22.30.44/16 dev eth0

To remove all addresses (in case you have multiple):

ip addr flush dev eth0
2
  • Works, but when I do want to a non-dev permanent change, I get an error saying "eth0 is garbage" (lol). i guess i need to manually edit that file, just can't remember the name right now
    – The Onin
    Commented Apr 11, 2017 at 2:22
  • 1
    When setting up a kubernetes cluster I accidently ran a command that created an interface and used an IP address that was being used so I needed to delete that IP address but leave the interface around. This command fixed my problem. I used sudo ip addr del 192.168.0.1/24 dev weave. See unix.stackexchange.com/questions/646326/…
    – PatS
    Commented Apr 23, 2021 at 2:45
31

As simple as ifconfig eth0 0.0.0.0. They should have put it in the manual.

1
  • Yes, they should have put it in the manual. But man ifconfig doesn't explain this.
    – Jesse
    Commented Jul 5 at 20:50
19

To remove all adreses from all interfaces i used for loop:

for i in $(ls /sys/class/net/) ; do
    /usr/sbin/ip addr flush $i &
done
2

Perhaps you are just looking to get a new IP from the [DHCP-enabled] router? In this case call

dhclient eth0

2
  • THAT worked, whereas assigning an IP didn't somehow get the network working. Thank you.
    – Rich_F
    Commented Sep 25, 2019 at 11:56
  • 1
    The only problem here is that now you coulld have two ips assigned as dhclient just asks for one more IP not checking if one is already there nor deleting the old ips. So delete the unused IP first before you call dhclient
    – sebisnow
    Commented Jul 1, 2020 at 8:08

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .