Eliminar IP con comando ip en linux


12

Si agrego dos IP como esta:

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

y luego trato de eliminar uno de estos:

ip addr del 1.1.1.2/24 dev eth2

AMBAS IP se eliminarán y no sé cómo manejarlo.

¿Alguien sabe cómo resolverlo?


Su requerimiento no está claro. ¿Puedes decir cuál es la salida esperada aquí?
Guru

Necesito decir ip solo para eliminar una IP, no ambas
Hamed JML

Agregue ip addr showsalida
Gevial

Respuestas:


10

Eliminar una dirección IP principal de una interfaz, por defecto, eliminará todas las demás direcciones en la misma subred.

Esta es una respuesta a un error REHL 1136733 informado por el usuario lain que proporcionó una respuesta el 12-mar-13 ...

Está agregando varias direcciones en la misma subred, por lo que la segunda y las posteriores se convierten en secundarias. Esto se puede ver en la salida "ip addr show", tenga en cuenta la palabra clave "secundaria" al lado de esas direcciones.

De forma predeterminada, al eliminar una dirección principal, el núcleo elimina también todas las secundarias respectivas.

Si desea que uno de los secundarios se promocione para ser un nuevo primario en la eliminación primaria, configure el sysctl net.ipv4.conf.eth9.promote_secondaries.


sudo systemctl net.ipv4.conf.eth0.promote_secondariesOperación desconocida net.ipv4.conf.eth0.promote_secondaries.
Laryx Decidua

@LaryxDecidua systemctl es un comando completamente diferente de sysctl
yahol

7

Esto sucede porque usa la máscara de red / 24 cuando la elimina. Se aplica a la dirección que ingresas. Intenta lo siguiente:

ip addr del 1.1.1.2/32 dev eth2

La máscara / 32 define exactamente un host.


Esto no funciona como le di al sistema / 24 netmask no / 32.
Hamed JML

Probar sin máscara de red:ip addr del 1.1.1.2 dev eth2
Gevial

¡De nuevo, elimine ambas IP!
Hamed JML

Extraño. En mi prueba, la eliminación del cuadro CentOS sin máscara de red fue exitosa. Aunque eliminar con / 24 también afectó solo a una dirección. ¿Qué distro está usando?
Gevial

1
Estoy usando Ubuntu 12.04
Hamed JML

2

No tengo un eth2 para verificar esto, pero funciona correctamente en eth0 y no veo ninguna razón por la cual eth2 deba ser mágico. Supongo que está utilizando, ip addr show dev eth2ya ifconfig eth2que no parece mostrar las direcciones adicionales agregadas por ip.

Una cosa que he notado es que el orden en que crea / elimina las direcciones es importante. La segunda y posteriores direcciones agregadas dentro de la misma red se eliminarán si se elimina la dirección principal. Considerar ...

    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 elimina 1.1.1.1, las direcciones 1.2 y 1.3 también se eliminarán. Si elimina cualquier otra dirección, solo se eliminará esa dirección.


Entonces, ¿cómo puedo eliminar la primera dirección sin eliminar otras?
Hamed JML

0

Intentaría lo siguiente:

ip addr del 1.1.1.2 dev eth2


0

La respuesta de @bvs señaló exactamente la dirección correcta del problema y lo resolvió por mí. Aquí hay algunos detalles sobre los comandos precisos. Como para muchos la interfaz predeterminada es eth0, estoy tomando eso en los siguientes comandos, que deben ser reemplazados por eth2la pregunta original.

Para una solución temporal (hasta el reinicio) use

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

para una solución permanente que persiste después de reiniciar, cree un archivo /etc/sysctl.d/ip-promote.conf(u otro nombre que termine .conf) con el siguiente contenido:

# 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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.