Come simulare un cavo di rete non collegato o un server inattivo?


14

Ho simulato la latenza di rete con netem ed è fantastico. Ora voglio simulare il cavo di rete scollegato o quando il server non funziona. Ne ho bisogno per rendere più semplice il test della mia applicazione e non sono riuscito a trovare nulla sul Web che mi possa aiutare. I miei server sono istanze CentOS virtuali e si trovano su Virtualbox. Voglio farlo da una pagina web php.

Risposte:


17

Abbassa semplicemente l'interfaccia. Ad esempio, con eth0:

ip link set eth0 down

Per ripristinare l'interfaccia:

ip link set eth0 up

grazie, sto leggendo qui
Sicuramente il

1
funziona correttamente ma ip link set eth0 upnon funziona :( e ho bisogno di entrambi
SafeY,

@NancySmith "Non funziona" non ha senso. Quali messaggi di errore si verificano? Hai assegnato un IP e una maschera di rete?
Chris Down,

Voglio dire che ho usato ip link set eth0 downtramite php e ping mostra che il mio server non è raggiungibile. poi volevo ripristinarlo "su", l'ho eseguito ip link set eth0 upvia php e il server era ancora inattivo.
SafeY,

3
@NancySmith Crea un'altra interfaccia di rete che non ha accesso a ciò a cui si sta connettendo (usando route, ecc.). SSH per l'host utilizzando tale interfaccia. Portare giù l'interfaccia che si sta non connette a SSH attraverso.
Chris Down,

7

Quando si utilizza la risposta più votata su un computer che si sta connettendo tramite SSH, si interromperà la rete e non si avrà alcun modo di ripristinarla. Di seguito è riportato un modo per disattivarlo e ripristinarlo durante una connessione SSH.

Esempio usando l'interfaccia ens32:

Se corri:

ip link set ens32 down

E ti stai connettendo tramite SSH, non sarai in grado di riattivarlo poiché hai disabilitato la tua rete e quindi non puoi SSH sul tuo server.

Uso il seguente script per simulare 20 secondi di downtime:

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

Salvalo come downtime.sh, assicurati che il file disponga dei diritti di esecuzione, quindi esegui:

sudo ./downtime.sh

1
roba buona. Inoltre, collegamento pertinente per coloro che non sono sicuri su quale interfaccia down: unix.stackexchange.com/questions/125400/…
Jeutnarg

1
erm ... Sono un principiante di Linux ma penso che qui ci possano essere dei cattivi consigli: se non si esegue questo script, ciò che succede è che lo si esegue, la sessione muore (a causa della disconnessione) e lo script si interrompe ( e non ravviva mai l'interfaccia di rete). Penso che leggere qualche nohup dovrebbe essere prezioso!
DraxDomax,

@DraxDomax quello che dici sembra logico, ma non ho avuto problemi a non tornare indietro. Considerando che ho avuto problemi con la risposta accettata.
Deridere il

@Mocking Siamo spiacenti, non ho potuto modificare il mio commento. Non è necessariamente un "cattivo consiglio". In realtà è una buona risposta proattiva perché il 90% delle persone che troveranno questa domanda stanno provando a fare la stessa cosa: "Devo verificare se il mio software funziona dopo la disconnessione della macchina. Non ho accesso all'host di virtualizzazione" . In realtà, ho fatto ricorso al tuo script (solo il mio adattatore era br0) - non ha funzionato nel mio caso (SSH da MacOS a CentOS) e ho dovuto chiamare il nostro ragazzo IT per riavviare la rete.
DraxDomax,

1

Nella finestra della tua console Virtualbox, dovresti avere un menu a discesa. Sotto quello ci sono diverse azioni. Uno dei quali è Spegnimento. Devi selezionarlo per uno spegnimento immediato. Questa è la cosa più vicina a strappare il cavo di alimentazione di un server fisico.


Voglio farlo da una pagina web. sicuramente so come spegnere le macchine.
Sicuro il

e non voglio fingere. non si spegne e si riavvia.
Sicuro il

A giudicare dalla menzione di netem, presumo che la domanda sia davvero quella di scollegare il cavo di rete da un server e non il cavo di alimentazione (anche se non è chiaro).
Chris Down,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.