Изменение IP-адреса удаленного хоста без потери контроля (Linux)

10

Как изменить основной IP-адрес удаленного хоста, не отключаясь вообще (не находясь в состоянии «без IP-адреса»).

Этот вопрос плохо обсуждается в Интернете (согласно моим исследованиям). Лучший ресурс, который я нашел, немного хитрый.

ПРИМЕР: изменить 10.0.0.11/24 на 10.0.0.15/24

1. ssh root@10.0.0.11
2. ip addr add 10.0.0.15/24 dev eth0 
3. logout

4. ssh root@10.0.0.15
5. ip addr del 10.0.0.11/24 dev eth0 

Проблема: последняя команда удаляет оба IP-адреса, и соединение теряется, поскольку 10.0.0.11 является основным, и удаляет свои вторичные адреса (к которым относится 10.0.0.15) при удалении.

Я знаю , что я мог «обмануть», добавив 10.0.0.11/ 25 (вместо 24 ). Тем не менее, я думаю, что теоретически возможно сделать это правильно.

Как вы думаете?

Totor
источник
это не чит, если вы используете / 32 маску ...
zb
но это не сработает, потому что / 32 не может общаться ни с чем, кроме себя ...
Totor
хорошо, но / 25 тоже не сработает.
ЗБ

Ответы:

11

Вам нужно установить promote_secondariesопцию на интерфейсе или на всех интерфейсах:

echo 1 > /proc/sys/net/ipv4/conf/eth0/promote_secondaries

или

sysctl net.ipv4.conf.eth0.promote_secondaries=1

Изменение eth0к , allчтобы он работает на всех интерфейсах.

Эта опция существует с 2.6.12 .

Я проверил это с помощью фиктивного интерфейса, и он работал там.

CAMH
источник
Именно то, что мне было нужно, спасибо! Смотрите оригинальный коммит .
Тотор
1
Обратите внимание, что эта опция доступна с 2.6.12 , поэтому до 2.6.16.
Тотор