¿Cómo simular un cable de red desconectado o un servidor inactivo?

14

He simulado latencia de red con netem y es genial. Ahora quiero simular el cable de red desconectado o cuando el servidor se cae. Necesito esto para facilitar las pruebas de mi aplicación y no pude encontrar nada en la web que me ayudara. Mis servidores son instancias virtuales de CentOS y están en Virtualbox. Quiero hacer esto desde una página web php.

SafeY
fuente

Respuestas:

17

Solo baja la interfaz. Por ejemplo, con eth0:

ip link set eth0 down

Para recuperar la interfaz:

ip link set eth0 up
Chris Down
fuente
gracias, estoy leyendo sobre esto aquí
SafeY
1
eso funciona correctamente pero ip link set eth0 upno funciona :( y los necesito a los dos
SafeY
@NancySmith "No funciona" no tiene sentido. ¿Qué mensajes de error ocurren? ¿Asignó una IP y una máscara de red?
Chris Down
Quiero decir que lo usé a ip link set eth0 downtravés de php y ping muestra que mi servidor es inalcanzable. luego quise recuperarlo "arriba", ejecuté a ip link set eth0 uptravés de php y el servidor aún está abajo.
SafeY
3
@NancySmith Cree otra interfaz de red que no tenga acceso a lo que sea que esté conectando (usando rutas, etc.). SSH al host usando esa interfaz. Baje la interfaz a través de la cual no se está conectando a SSH.
Chris Down
7

Al utilizar la respuesta más votada en una máquina que se está conectando a través de SSH, desactivará la red y no tendrá medios para volver a activarla. La siguiente es una forma de desactivarlo y volverlo a activar mientras está en una conexión SSH.

Ejemplo usando la interfaz ens32:

Si tu corres:

ip link set ens32 down

Y se está conectando a través de SSH, no podrá volver a abrirlo ya que ha deshabilitado su red y, por lo tanto, no puede SSH a su servidor.

Utilizo el siguiente script para simular 20 segundos de tiempo de inactividad:

#!/bin/sh
ip link set ens32 down
sleep 20
ip link set ens32 up

Guárdelo como downtime.sh, asegúrese de que el archivo tenga derechos de ejecución y luego ejecute:

sudo ./downtime.sh
Burlón
fuente
1
buen material. Además, enlace relevante para aquellos que no están seguros de qué interfaz desactivar
Jeutnarg
1
erm ... Soy un novato en Linux, pero creo que puede haber algunos malos consejos aquí: si no haces nada con este script, lo que sucede es que lo ejecutas, tu sesión muere (debido a la desconexión) y el script se detiene ( y nunca revive la interfaz de red). ¡Creo que leer un poco sobre nohup debería ser valioso!
DraxDomax
@DraxDomax lo que dices suena lógico pero no he tenido ningún problema con que no vuelva a aparecer. Mientras que he tenido problemas con la respuesta aceptada.
Burlándose del
@Mocking Lo siento, no pude editar mi comentario. No es necesariamente un "mal consejo". En realidad, es una buena respuesta proactiva porque el 90% de las personas que encontrarán esta pregunta están tratando de hacer lo mismo: "Necesito probar si mi software funciona después de la desconexión de la máquina. No tengo acceso al host de virtualización" . En realidad, recurrí a su script (solo mi adaptador era br0), no funcionó en mi caso (SSH de MacOS a CentOS) y tuve que llamar a nuestro chico de TI para que la red volviera a funcionar.
DraxDomax
1

En la ventana de la consola de virtualbox, debe tener un menú desplegable de la máquina. Debajo de eso hay varias acciones. Uno de los cuales es el apagado. Debe seleccionar ese para un apagado inmediato. Esto es lo más parecido a tirar del cable de alimentación de un servidor físico.

MelBurslan
fuente
Quiero hacer esto desde una página web. ásperamente sé cómo apagar máquinas.
SafeY
y no quiero fingirlo en realidad no se apaga y se inicia de nuevo.
SafeY
A juzgar por la mención de netem, supongo que la pregunta es realmente sobre desconectar el cable de red de un servidor, y no el cable de alimentación (aunque no está claro).
Chris Down
Editaré