Comment simuler un câble réseau débranché ou un serveur en panne?


14

J'ai simulé la latence du réseau avec netem et c'est génial. Maintenant, je veux simuler un câble réseau débranché ou lorsque le serveur tombe en panne. J'en ai besoin pour faciliter le test de mon application et je n'ai rien trouvé sur le Web qui pourrait m'aider. Mes serveurs sont des instances CentOS virtuelles et ils sont sur Virtualbox. Je veux le faire à partir d'une page Web php.

Réponses:


17

Baissez simplement l'interface. Par exemple, avec eth0:

ip link set eth0 down

Pour réactiver l'interface:

ip link set eth0 up

merci, je lis à ce sujet ici
SafeY

1
qui fonctionne correctement mais ip link set eth0 upne fonctionne pas :( et j'ai besoin des deux
SafeY

@NancySmith "ne fonctionne pas" n'a pas de sens. Quels messages d'erreur se produisent? Avez-vous attribué une adresse IP et un masque de réseau?
Chris Down

Je veux dire que j'ai utilisé ip link set eth0 downvia php et ping montre que mon serveur est inaccessible. alors je voulais le récupérer "up", j'ai exécuté ip link set eth0 upvia php et serveur encore en panne.
SafeY

3
@NancySmith Créez une autre interface réseau qui n'a pas accès à ce à quoi elle se connecte (en utilisant des routes, etc.). SSH à l'hôte utilisant cette interface. Descendez l'interface par laquelle vous ne vous connectez pas à SSH.
Chris Down

7

Lorsque vous utilisez la réponse la plus votée sur une machine à laquelle vous vous connectez via SSH, vous réduisez le réseau et n'avez aucun moyen de le réactiver. Ce qui suit est un moyen de le désactiver et de le réactiver lors d'une connexion SSH.

Exemple d'utilisation de l'interface ens32:

Si vous exécutez:

ip link set ens32 down

Et vous vous connectez via SSH, vous ne pourrez pas le réactiver car vous avez désactivé votre réseau et ne pouvez donc pas SSH vers votre serveur.

J'utilise le script suivant pour simuler 20 secondes de temps d'arrêt:

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

Enregistrez-le sous downtime.sh, assurez-vous que le fichier dispose des droits d'exécution, puis exécutez:

sudo ./downtime.sh

1
Bon produit. Aussi, lien pertinent pour ceux qui ne savent
Jeutnarg

1
euh ... je suis un débutant linux mais je pense qu'il peut y avoir de mauvais conseils ici: si vous ne faites rien de ce script, ce qui se passe est que vous l'exécutez, votre session meurt (en raison de la déconnexion) et le script s'arrête ( et ne fait jamais revivre l'interface Internet). Je pense qu'une lecture autour de nohup devrait être utile!
DraxDomax

@DraxDomax ce que vous dites semble logique mais je n'ai eu aucun problème à ce qu'il ne revienne pas. Alors que j'ai eu des problèmes avec la réponse acceptée.
Se

@Mocking Désolé, je n'ai pas pu modifier mon commentaire. Ce n'est pas nécessairement un "mauvais conseil". C'est en fait une bonne réponse proactive car 90% des personnes qui trouveront cette question essaient de faire la même chose: "Je dois tester si mon logiciel fonctionne après la déconnexion de la machine. Je n'ai pas accès à l'hôte de virtualisation" . En fait, j'ai eu recours à votre script (juste mon adaptateur était br0) - cela ne fonctionnait pas dans mon cas (SSH de MacOS à CentOS) et j'ai dû appeler notre informaticien pour remonter le net.
DraxDomax

1

Sur la fenêtre de votre console Virtualbox, vous devriez avoir un menu Machine déroulant. Sous celui-ci, il y a plusieurs actions. L'un d'eux est Power off. Vous devez sélectionner celui-ci pour une mise hors tension immédiate. C'est la chose la plus proche de tirer le cordon d'alimentation d'un serveur physique.


Je veux le faire à partir d'une page Web. je sais sûrement comment éteindre les machines.
SafeY

et je ne veux pas faire semblant. pas vraiment arrêté et redémarrer.
SafeY

À en juger par la mention de netem, je suppose que la question est vraiment de débrancher le câble réseau d'un serveur, et non le câble d'alimentation (bien qu'il ne soit pas clair).
Chris Down

Je vais modifier ma question pour la rendre plus claire, merci
SafeY
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.