Pourquoi la suppression d'une adresse IP inutilisée d'une interface supprime-t-elle les connexions sans lien avec cette adresse?


35

Hier, j'ai réinstallé rapidement un serveur (physique) dans le centre de données. Comme je n'avais que peu de temps et sans accès facile à notre base de données, je lui ai simplement attribué une adresse IP dont je savais qu'elle était disponible et qui me permettrait d'accéder plus tard à l'attribution. la bonne adresse et continuez à approvisionner depuis un endroit plus chaud.

Aujourd'hui, je me suis connecté au serveur (à l'adresse 172.16.130.10/22) et j'ai procédé comme suit:

ip addr add 172.16.128.67/22 dev eth0

À partir d'un terminal de mon poste de travail local, j'ai vérifié qu'il répondait à un ping sur la nouvelle adresse et que je me connectais via celle-ci:

$ ping 172.16.128.67
PING 172.16.128.67 (172.16.128.67) 56(84) bytes of data.
64 bytes from 172.16.128.67: icmp_req=2 ttl=62 time=3.61 ms
64 bytes from 172.16.128.67: icmp_req=3 ttl=62 time=4.87 ms
^C
$ ssh 172.16.128.67

Jusqu'ici tout allait bien, j'étais connecté via la nouvelle adresse IP et l'ancienne n'était plus nécessaire. Je suis allé de l'avant et l'ai enlevé:

ip addr del 172.16.130.10/22 dev eth0

Mais dès que j'ai commencé Enterma session SSH, j'ai gelé et je ne pouvais plus me connecter. J'ai dû demander à un opérateur sur site de redémarrer le serveur pour moi.

Où est-ce que je me suis trompé? Pourquoi la suppression de cette adresse tuerait-elle ma connexion?


2
En plus de l'excellente réponse de Mathews: dans de nombreux systèmes Unix (et analogues), toute modification apportée à la ou aux adresses IP liées déconnectera brièvement toutes les sessions ouvertes sur cette interface (même celles utilisant une autre adresse). Cela vous jetterait donc hors de votre session SSH, mais vous pouvez vous reconnecter immédiatement dans ce cas.
Tonny

Je crois que ce problème existe uniquement avec IPv4. Je ne pense pas que cela se serait passé si vous utilisiez IPv6.
Kasperd

Réponses:


53

Sous Linux, les adresses IP ont la notion d'adresses «primaire» et «secondaire». Le principal est généralement la première adresse que vous ajoutez au système. La suppression de l'adresse principale entraîne également l'opération implicite de vider la liste complète des adresses secondaires.

Vous pouvez éviter ce problème en définissant le sysctl net.ipv4.conf.all.promote_secondariessur 1 comme suit :

sysctl -w net.ipv4.conf.all.promote_secondaries=1

Cela modifie le comportement de telle sorte que lorsqu'une adresse IP principale est supprimée, les adresses restantes ne seront pas vidées mais une nouvelle adresse IP sera promue en tant qu'adresse principale.


6
Merci! Je viens de comprendre cela aussi:An IP address becomes secondary if another address within the same prefix (network) already exists. The first address within the prefix is primary and is the tag address for the group of all the secondary addresses. When the primary address is deleted all of the secondaries are purged too.
GnP
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.