web-dev-qa-db-fra.com

Supprimer IP avec la commande ip sous linux

Si j'ajoute deux adresses IP comme celle-ci:

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

puis j'essaie d'en supprimer un comme celui-ci:

ip addr del 1.1.1.2/24 dev eth2

LES DEUX IP seront supprimées et je ne sais pas comment les gérer.

Quelqu'un sait comment le résoudre?

12
Hamed JML

La suppression d'une adresse IP principale d'une interface supprimera par défaut toutes les autres adresses du même sous-réseau.

Ceci est une réponse à un bug REHL 11367 signalé par l'utilisateur lain qui a fourni une réponse le 12 mars 13 ...

Vous ajoutez plusieurs adresses dans le même sous-réseau, donc la deuxième et les suivantes deviennent secondaires. Cela peut être vu dans la sortie "ip addr show", notez le mot-clé "secondaire" à côté de ces adresses.

Par défaut, lors de la suppression d'une adresse principale, le noyau supprime également tous les secondaires respectifs.

Si vous souhaitez que l'un des secondaires soit promu en tant que nouveau principal lors de la suppression principale, définissez le sysctl net.ipv4.conf.eth9.promote_secondaries.

10
bvs

Cela se produit car vous utilisez le masque réseau/24 lors de la suppression. Il est appliqué pour répondre à votre saisie. Essayez ce qui suit:

ip addr del 1.1.1.2/32 dev eth2

Le masque/32 définit exactement un hôte.

6
Gevial

Je n'ai pas d'eth2 pour vérifier cela, mais cela fonctionne correctement sur eth0 et je ne vois aucune raison pour que eth2 soit magique. Je suppose que vous utilisez ip addr show dev eth2 comme ifconfig eth2 ne semble pas montrer les adresses supplémentaires ajoutées par ip.

Une chose que j'ai remarquée est que l'ordre de création/suppression des adresses est important. La deuxième adresse et les adresses suivantes ajoutées au sein du même réseau seront supprimées si l'adresse principale est supprimée. Considérer ...

    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

Si vous supprimez 1.1.1.1, les adresses 1.2 et 1.3 seront également supprimées. Si vous supprimez une autre adresse, seule cette adresse sera supprimée.

2
user9517

J'essaierais ce qui suit:

ip addr del 1.1.1.2 dev eth2

0
brain

Le réponse de @bvs a pointé exactement dans la bonne direction du problème et l'a résolu pour moi. Voici quelques détails sur les commandes précises. Comme pour beaucoup, l'interface par défaut est eth0, Je prends cela dans les commandes suivantes, qui doivent être remplacées par eth2 pour la question d'origine.

Pour une solution temporaire (jusqu'au redémarrage), utilisez

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

pour une solution permanente qui persiste après les redémarrages, créez un fichier /etc/sysctl.d/ip-promote.conf (ou autre nom de fichier se terminant par .conf) avec le contenu suivant:

# 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
0
freiheitsnetz