Supprimer IP avec la commande ip sous linux


12

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?


Votre exigence n'est pas claire. Pouvez-vous dire quelle est la sortie attendue ici?
Guru

Je dois dire ip juste pour supprimer une IP pas les deux
Hamed JML

Veuillez ajouter la ip addr showsortie
Gevial

Réponses:


10

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 de Rehl 1136733 rapporté par le Lain utilisateur qui a fourni une réponse le 12-Mar-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 primaire lors de la suppression principale, définissez le sysctl net.ipv4.conf.eth9.promote_secondaries.


sudo systemctl net.ipv4.conf.eth0.promote_secondariesOpération inconnue net.ipv4.conf.eth0.promote_secondaries.
Laryx Decidua

@LaryxDecidua systemctl est une commande entièrement différente de sysctl
yahol

7

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.


Cela ne fonctionne pas car j'ai donné le masque réseau / 24 non / 32.
Hamed JML

Essayez sans masque de réseau du tout:ip addr del 1.1.1.2 dev eth2
Gevial

Encore une fois, il supprime les deux IP !!
Hamed JML

Étrange. Lors de mes tests, la suppression de la boîte CentOS sans masque de réseau a réussi. Bien que la suppression avec / 24 n'ait affecté qu'une seule adresse. Quelle distro utilisez-vous?
Gevial

1
J'utilise Ubuntu 12.04
Hamed JML

2

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 eth2as ifconfig eth2ne 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.


Alors, comment puis-je supprimer la première adresse sans en supprimer d'autres?
Hamed JML

0

J'essaierais ce qui suit:

ip addr del 1.1.1.2 dev eth2


0

La réponse de @bvs indiquait exactement 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 eth2pour 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 un 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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.