Видаліть 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

ІНТИ ІЗ буде видалено, і я не знаю, як з цим впоратися.

Хтось знає, як це вирішити?


Ваша вимога не зрозуміла. Чи можете ви сказати, який очікуваний результат тут?
— Гуру

Мені потрібно сказати ip, щоб видалити один IP, не обидва
— Hamed JML

Додайте ip addr showвихід
— Gevial

Відповіді:


10

Видалення первинної IP-адреси з інтерфейсу за замовчуванням видалить усі інші адреси в тій самій підмережі.

Це відповідь на помилку REHL 1136733, про яку повідомив користувач, який надав відповідь 12-березня-13 ...

Ви додаєте кілька адрес у одній підмережі, таким чином друга та наступні вони стають вторинними. Це можна побачити у висновку "ip addr show", зверніть увагу на ключове слово "вторинне" поруч із цими адресами.

За замовчуванням при видаленні первинної адреси ядро ​​видаляє також усі відповідні вторинники.

Якщо ви хочете, щоб один з вторинних був підвищений як новий первинний при первинному видаленні, встановіть net.ipv4.conf.eth9.promote_secondaries sysctl.


sudo systemctl net.ipv4.conf.eth0.promote_secondariesНевідома операція net.ipv4.conf.eth0.promote_secondaries.
— Laryx Decidua

@LaryxDecidua systemctl зовсім інша команда від sysctl
— yahol

7

Це відбувається тому, що ви використовуєте / 24 мережеву маску при видаленні. Він застосовується до адреси, яку ви вводите. Спробуйте наступне:

ip addr del 1.1.1.2/32 dev eth2

Маска / 32 визначає рівно один хост.


Це не працює, оскільки я дав систему / 24 маска не / 32.
— Hamed JML

Спробуйте взагалі без ip addr del 1.1.1.2 dev eth2
— мережних

Знову видаліть обидва IP !!
— Hamed JML

Дивно. На моєму тестуванні CentOS вікно видалення без маски було успішним. Хоча видалення з / 24 також вплинуло лише на одну адресу. Який дистрибутив ви використовуєте?
— Gevial

1
Я використовую Ubuntu 12.04
— Hamed JML

2

У мене немає ети2, щоб це перевірити, але він працює правильно на 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.