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