Назад | Перейти на главную страницу

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

Если я добавлю два таких 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

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

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

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

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

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

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

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

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

ip addr del 1.1.1.2/32 dev eth2

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

У меня нет 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. Если вы удалите любой другой адрес, будет удален только этот адрес.

Я бы попробовал следующее:

IP-адрес del 1.1.1.2 dev eth2

В ответ @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