Как я могу очистить IP-адрес интерфейса Ethernet, не выключая и не перезагружая интерфейс?

78

Что такое команда Linux для очистки IP-адреса интерфейса без его отключения и / или перезапуска сетевых служб. Кажется странным, если ifconfig может изменить IP-адрес, но не имеет возможности его очистить, или я ошибаюсь?

jackhab
источник
1
@ Энди: Я думаю, вы неправильно поняли вопрос. @jackhab хочет отменить назначение адреса из интерфейса, а не устанавливать его 0.0.0.0- это просто то, как это делается ifconfig.
Гравитация
@ Grawity Cheers. Отмена назначения адреса означает отключение сетевого адаптера для всех целей и задач?
Энди
@ Энди: Не обязательно. Можно все еще смотреть входящие пакеты. Кроме того, сетевая карта может иметь несколько адресов (хотя в данном случае это не применимо).
Гравитация
См. Также serverfault.com/questions/407676/…
pevik

Ответы:

134

Используйте ipот iproute2. (Вы также должны указать длину префикса.)

ip addr del 10.22.30.44/16 dev eth0

Чтобы удалить все адреса (если у вас есть несколько):

ip addr flush dev eth0
grawity
источник
Работает, но когда я хочу сделать постоянное изменение не-dev, я получаю сообщение об ошибке "eth0 is garbage" (смеется). Я думаю, мне нужно вручную отредактировать этот файл, просто не могу вспомнить имя прямо сейчас
Housemd
24

Так же просто, как ifconfig eth0 0.0.0.0. Они должны были поместить это в руководство.

jackhab
источник
9

Чтобы удалить все адреса из всех интерфейсов, которые я использовал для цикла:

for i in $(ls /sys/class/net/) ; do
    /usr/sbin/ip addr flush $i &
done
эри
источник
1

Возможно, вы просто хотите получить новый IP-адрес от маршрутизатора [DHCP-enabled]? В этом случае позвоните

dhclient eth0

CodyBugstein
источник
Это сработало, в то время как назначение IP-адреса не помогло работе сети. Спасибо.
Rich_F