Usuń adres IP za pomocą polecenia ip w systemie Linux


12

Jeśli dodam dwa takie adresy IP:

ip addr add 1.1.1.1/24 dev eth2
ip addr add 1.1.1.2/24 dev eth2

a następnie próbuję usunąć jeden z takich:

ip addr del 1.1.1.2/24 dev eth2

ZARÓWNO adresy IP zostaną usunięte i nie wiem, jak sobie z tym poradzić.

Czy ktoś wie jak to rozwiązać?


Twoje wymaganie nie jest jasne. Czy możesz powiedzieć, jaka jest oczekiwana wydajność?
— Guru,

Muszę powiedzieć ip tylko po to, aby usunąć jedno IP, a nie oba
— Hamed JML

Dodaj ip addr showwynik
— Gevial

Odpowiedzi:


10

Usunięcie podstawowego adresu IP z interfejsu spowoduje domyślnie usunięcie wszystkich innych adresów w tej samej podsieci.

To jest odpowiedź na błąd REHL 1136733 zgłoszony przez użytkownika Lain, który udzielił odpowiedzi w dniu 12 marca 13 ...

Dodajesz wiele adresów w tej samej podsieci, dzięki czemu drugi i kolejne stają się pomocnicze. Można to zobaczyć w wynikach „ip addr show”, zwróć uwagę na słowo kluczowe „wtórne” obok tych adresów.

Domyślnie podczas usuwania adresu podstawowego jądro usuwa również wszystkie odpowiednie elementy pomocnicze.

Jeśli chcesz, aby jeden z drugorzędnych programów był promowany jako nowy podstawowy przy usuwaniu pierwotnym, ustaw net.ipv4.conf.eth9.promote_secondaries sysctl.


sudo systemctl net.ipv4.conf.eth0.promote_secondariesNieznana operacja net.ipv4.conf.eth0.promote_secondaries.
— Laryx Decidua

@LaryxDecidua systemctl to zupełnie inna komenda niż sysctl
— yahol

7

Dzieje się tak, ponieważ podczas usuwania używasz maski sieci / 24. Jest stosowany do adresu, który podałeś. Spróbuj wykonać następujące czynności:

ip addr del 1.1.1.2/32 dev eth2

Maska / 32 definiuje dokładnie jednego hosta.


To nie działa, ponieważ podałem system / 24 netmask not / 32.
— Hamed JML

Spróbuj w ogóle bez ip addr del 1.1.1.2 dev eth2
— maski

Ponownie usuń oba adresy IP !!
— Hamed JML

Dziwne. Podczas moich testów usunięcie pola CentOS bez maski sieci powiodło się. Chociaż usunięcie za pomocą / 24 wpłynęło również tylko na jeden adres. Jakiej dystrybucji używasz?
— Gevial

1
Używam Ubuntu 12.04
— Hamed JML

2

Nie mam eth2, aby to sprawdzić, ale działa poprawnie na eth0 i nie widzę powodu, dla którego eth2 powinien być magiczny. Zakładam, że używasz, ip addr show dev eth2ponieważ ifconfig eth2nie wyświetla dodatkowych adresów dodanych przez ip.

Zauważyłem tylko, że kolejność tworzenia / usuwania adresów jest ważna. Drugi i kolejne adresy dodane w tej samej sieci zostaną usunięte, jeśli adres podstawowy zostanie usunięty. Zastanów się ...

    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

Jeśli usuniesz 1.1.1.1, adresy 1.2 i 1.3 również zostaną usunięte. Jeśli usuniesz inny adres, tylko ten adres zostanie usunięty.


Jak mogę usunąć pierwszy adres bez usuwania innych?
— Hamed JML

0

Spróbowałbym następujących rzeczy:

ip addr 1.1.1.2 dev eth2


0

Odpowiedź @bvs wskazał we właściwym kierunku problemu i rozwiązać go dla mnie. Oto kilka szczegółów na temat precyzyjnych poleceń. Jak dla wielu domyślnym interfejsem eth0, biorę to w poniższych poleceniach, które należy zastąpić eth2pierwotnym pytaniem.

Do tymczasowego rozwiązania (do ponownego uruchomienia) użyj

sudo sysctl -w net.ipv4.conf.eth0.promote_secondaries=1

w przypadku trwałego rozwiązania, które utrzymuje się po ponownym uruchomieniu, utwórz plik /etc/sysctl.d/ip-promote.conf(lub inną nazwę pliku kończącą się na .conf) o następującej treści:

# 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.