Удалить IP с помощью команды ip в Linux


12

Если я добавлю два IP-адреса, как это:

ip addr add 1.1.1.1/24 dev eth2
ip addr add 1.1.1.2/24 dev eth2

и затем я пытаюсь удалить один из таких:

ip addr del 1.1.1.2/24 dev eth2

ОБА IPs будут удалены, и я не знаю, как с этим справиться.

Кто-нибудь знает, как это решить?


Ваше требование не ясно. Можете ли вы сказать, каков ожидаемый результат здесь?
Гуру

Мне нужно сказать ip, чтобы удалить один IP, а не оба из них
Hamed JML

Пожалуйста, добавьте ip addr showвывод
Gevial

Ответы:


10

Удаление основного IP-адреса из интерфейса по умолчанию удалит все остальные адреса в той же подсети.

Это ответ на ошибку REHL 1136733, о которой сообщил пользователь lain, предоставивший ответ 12-марта-13 ...

Вы добавляете несколько адресов в одну подсеть, поэтому второй и последующие адреса становятся вторичными. Это можно увидеть в выводе «ip addr show», обратите внимание на ключевое слово «вторичный» рядом с этими адресами.

По умолчанию при удалении основного адреса ядро ​​удаляет также все соответствующие дополнительные адреса.

Если вы хотите, чтобы один из вторичных серверов стал первичным при первичном удалении, установите sysctl net.ipv4.conf.eth9.promote_secondaries.


sudo systemctl net.ipv4.conf.eth0.promote_secondariesНеизвестная операция net.ipv4.conf.eth0.promote_secondaries.
Ларикс Децидуа

@LaryxDecidua systemctl - команда, совершенно отличная от sysctl
yahol

7

Это происходит потому, что при удалении вы используете / 24 маску сети. Применяется для адресации вашего ввода. Попробуйте следующее:

ip addr del 1.1.1.2/32 dev eth2

Маска / 32 определяет ровно один хост.


Это не работает, поскольку я дал системе / 24 маска не / 32.
Хамед JML

Попробуйте вообще без маски:ip addr del 1.1.1.2 dev eth2
Gevial

Опять удалите оба IP-адреса !!
Хамед JML

Странный. На моем тестировании удаление ящика CentOS без маски было успешным. Хотя удаление с / 24 также затронуло только один адрес. Какой дистрибутив вы используете?
Гевиал

1
Я использую Ubuntu 12.04
Hamed JML

2

У меня нет eth2, чтобы проверить это, но он корректно работает с eth0, и я не вижу причин, почему eth2 должен быть волшебным. Я предполагаю, что вы используете, ip addr show dev eth2поскольку ifconfig eth2не отображаются дополнительные адреса, добавленные ip.

Одна вещь, которую я заметил, это то, что порядок создания / удаления адресов важен. Второй и последующие адреса, добавленные в той же сети, будут удалены, если будет удален основной адрес. Рассматривать ...

    inet 1.1.1.1/24 scope global eth0
    inet 1.1.2.3/24 scope global eth0
    inet 1.1.1.2/24 scope global secondary eth0
    inet 1.1.1.3/24 scope global secondary eth0

Если вы удалите 1.1.1.1, то адреса 1.2 и 1.3 также будут удалены. Если вы удалите любой другой адрес, будет удален только этот адрес.


Итак, как я могу удалить первый адрес, не удаляя другие?
Hamed JML


0

Ответ @bvs указал точно в правильном направлении проблемы и решить ее для меня. Вот некоторые подробности о точных командах. Что касается многих по умолчанию интерфейс eth0, я принимаю это в следующих командах, которые должны быть заменены eth2на оригинальный вопрос.

Для временного решения (до перезагрузки) используйте

sudo sysctl -w net.ipv4.conf.eth0.promote_secondaries=1

для постоянного решения, которое сохраняется после перезагрузки, создайте файл /etc/sysctl.d/ip-promote.conf(или другое имя файла, заканчивающееся на .conf) со следующим содержимым:

# The following makes that a second IP on the eth0 interface
# is promoted as primary IP instead of being removed.
net.ipv4.conf.eth0.promote_secondaries=1
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.