Зміна 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 ). Однак я думаю, що теоретично це можливо зробити правильно.

Як ти гадаєш?


це не обман, якщо ви використовуєте / 32 маску ...
zb

але це не спрацювало, тому що а / 32 не може спілкуватися ні з чим, крім самого себе ...
Totor

ок, але / 25 теж не вийде, ніж.
zb

Відповіді:


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 .

Я тестував це за допомогою фіктивного інтерфейсу, і він там працював.


Саме те, що мені було потрібно, дякую! Дивіться оригінальний коміт .
Тотор

1
Зверніть увагу, що ця опція доступна з 2.6.12 , тобто до 2.6.16.
Тотор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.