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ć?

Hamed JML
źródło
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.

bvs
źródło
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.

Gevial
źródło
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.

użytkownik9517
źródło
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

mózg
źródło
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
freiheitsnetz
źródło