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