Entfernen Sie die IP mit dem Befehl ip unter Linux


12

Wenn ich zwei IPs wie diese hinzufüge:

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

und dann versuche ich eines davon zu löschen:

ip addr del 1.1.1.2/24 dev eth2

BEIDE IPs werden gelöscht und ich weiß nicht, wie ich damit umgehen soll.

Weiß jemand, wie man es löst?


Ihre Anforderung ist nicht klar. Können Sie sagen, was die erwartete Ausgabe hier ist?
Guru

Ich muss IP sagen, nur um eine IP zu löschen, nicht beide
Hamed JML

Bitte ip addr showAusgabe hinzufügen
Gevial

Antworten:


10

Durch das Löschen einer primären IP-Adresse von einer Schnittstelle werden standardmäßig alle anderen Adressen im selben Subnetz gelöscht.

Dies ist eine Antwort auf einen REHL-Fehler 1136733 , der von dem Benutzer gemeldet wurde, der am 12. März 13 eine Antwort gegeben hat ...

Sie fügen mehrere Adressen in dasselbe Subnetz ein, sodass die zweite und die nachfolgenden Adressen sekundär werden. Dies ist in der Ausgabe "ip addr show" zu sehen. Beachten Sie das Schlüsselwort "sekundär" neben diesen Adressen.

Standardmäßig löscht der Kernel beim Löschen einer Primäradresse auch alle entsprechenden Sekundäradressen.

Wenn Sie möchten, dass eines der Secondaries beim primären Löschen als neues Primary heraufgestuft wird, legen Sie das sysctl net.ipv4.conf.eth9.promote_secondaries fest.


sudo systemctl net.ipv4.conf.eth0.promote_secondariesUnbekannte Operation net.ipv4.conf.eth0.promote_secondaries.
Laryx Decidua

@ LaryxDecidua systemctl ist ein völlig anderer Befehl als sysctl
yahol

6

Dies geschieht, weil Sie beim Löschen die Netzwerkmaske / 24 verwenden. Es wird angewendet, um Ihre Eingabe zu adressieren. Versuche Folgendes:

ip addr del 1.1.1.2/32 dev eth2

Die / 32-Maske definiert genau einen Host.


Dies funktioniert nicht, da ich dem System / 24 Netzmaske nicht / 32 gegeben habe.
Hamed JML

Versuchen Sie es überhaupt ohne Netzmaske:ip addr del 1.1.1.2 dev eth2
Gevial

Wieder löscht es beide IPs !!
Hamed JML

Seltsam. Bei meinem Test war das Löschen der CentOS-Box ohne Netzmaske erfolgreich. Das Löschen mit / 24 betraf jedoch auch nur eine Adresse. Welche Distribution benutzt du?
Gevial

1
Ich benutze Ubuntu 12.04
Hamed JML

2

Ich habe kein eth2, um dies zu überprüfen, aber es funktioniert korrekt auf eth0 und ich sehe keinen Grund, warum eth2 magisch sein sollte. Ich nehme an, Sie verwenden ip addr show dev eth2as ifconfig eth2, um die zusätzlichen Adressen, die von ip hinzugefügt wurden, nicht anzuzeigen.

Eine Sache, die mir aufgefallen ist, ist, dass die Reihenfolge, in der Sie die Adressen erstellen / löschen, wichtig ist. Die zweite und nachfolgende Adresse, die innerhalb desselben Netzwerks hinzugefügt wurden, werden gelöscht, wenn die primäre Adresse gelöscht wird. Erwägen ...

    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

Wenn Sie 1.1.1.1 löschen, werden auch die Adressen 1.2 und 1.3 gelöscht. Wenn Sie eine andere Adresse löschen, wird nur diese Adresse gelöscht.


Wie kann ich also die erste Adresse löschen, ohne andere zu entfernen?
Hamed JML

0

Ich würde folgendes versuchen:

ip addr del 1.1.1.2 dev eth2


0

Die Antwort von @bvs zeigte genau in die richtige Richtung des Problems und löste es für mich. Hier finden Sie einige Details zu den genauen Befehlen. Wie für viele ist die Standardschnittstelle eth0, ich nehme das in den folgenden Befehlen, die eth2für die ursprüngliche Frage durch ersetzt werden müssen.

Für eine temporäre Lösung (bis zum Neustart) verwenden

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

Für eine dauerhafte Lösung, die nach einem Neustart bestehen bleibt, erstellen Sie eine Datei /etc/sysctl.d/ip-promote.conf(oder einen anderen Dateinamen, der mit endet .conf) mit folgendem Inhalt:

# 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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.