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.