Ayer realicé una reinstalación rápida de un servidor (físico) en el centro de datos, y como tenía poco tiempo y no tenía fácil acceso a nuestra base de datos, simplemente le asigné una IP que sabía que estaba disponible y que me permitiría acceder más tarde para asignar la dirección correcta y continúe aprovisionando desde un lugar más cálido.
Hoy inicié sesión en el servidor (172.16.130.10/22) e hice lo siguiente:
ip addr add 172.16.128.67/22 dev eth0
Desde una terminal en mi estación de trabajo local, verifiqué que respondía al ping en la nueva dirección e inicié sesión a través de ella:
$ 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
Hasta ahora todo bien, estaba conectado a través de la nueva dirección IP y la anterior ya no era necesaria. Seguí adelante y lo quité:
ip addr del 172.16.130.10/22 dev eth0
Pero tan pronto como llegué a Entermi sesión SSH se congeló y ya no pude conectarme. Tuve que solicitar un operador en el sitio para reiniciar el servidor por mí.
¿Qué hice mal? ¿Por qué eliminar esa dirección mataría mi conexión?
Respuestas:
En Linux, las direcciones IP tienen una noción de direcciones 'primarias' y 'secundarias'. La principal suele ser la primera dirección que agrega al sistema. Eliminar la dirección primaria tiene la operación implícita de vaciar también la lista completa de direcciones secundarias.
Puede evitar este comportamiento estableciendo el sysctl
net.ipv4.conf.all.promote_secondaries
en 1 de la siguiente manera:Esto cambia el comportamiento de modo que cuando se elimina una IP primaria, no vaciará las direcciones restantes y en su lugar promoverá una nueva dirección IP como primaria.
fuente
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.