Wie simuliert man ein nicht angeschlossenes Netzwerkkabel oder einen ausgefallenen Server?

14

Ich habe die Netzwerklatenz mit netem simuliert und es ist großartig. Jetzt möchte ich ein nicht angeschlossenes Netzwerkkabel simulieren oder wenn der Server ausfällt. Ich brauche dies, um das Testen meiner Anwendung zu vereinfachen, und ich konnte im Web nichts finden, was mir helfen könnte. Meine Server sind virtuelle CentOS-Instanzen und befinden sich in Virtualbox. Ich möchte dies von einer PHP-Webseite aus tun.

SafeY
quelle

Antworten:

17

Bringen Sie einfach die Schnittstelle nach unten. Zum Beispiel mit eth0:

ip link set eth0 down

So rufen Sie die Schnittstelle wieder auf:

ip link set eth0 up
Chris Down
quelle
danke, ich lese hier darüber
SafeY
1
das funktioniert erfolgreich, funktioniert aber ip link set eth0 upnicht :( und ich brauche sie beide
SafeY
@ NancySmith "Funktioniert nicht" ist nicht aussagekräftig. Welche Fehlermeldungen treten auf? Hast du eine IP und eine Netzmaske vergeben?
Chris Down
Ich meine, dass ich ip link set eth0 downüber PHP und Ping verwendet habe, zeigt, dass mein Server nicht erreichbar ist. dann wollte ich es wieder "up" holen, ich habe ip link set eth0 upvia php und server noch down ausgeführt.
SafeY
3
@NancySmith Erstellen Sie eine andere Netzwerkschnittstelle, die keinen Zugriff auf das hat, mit dem sie verbunden ist (über Routen usw.). SSH an den Host über diese Schnittstelle. Fahren Sie die Schnittstelle herunter, über die Sie keine Verbindung zu SSH herstellen.
Chris Down
7

Wenn Sie auf einem Computer, den Sie über SSH verbinden, die Antwort mit der höchsten Bewertung verwenden, wird das Netzwerk heruntergefahren und Sie haben keine Möglichkeit, es erneut hochzufahren. Das Folgende ist eine Möglichkeit, es bei einer SSH-Verbindung herunterzufahren und wieder hochzufahren.

Beispiel mit Schnittstelle ens32:

Wenn du läufst:

ip link set ens32 down

Wenn Sie eine Verbindung über SSH herstellen, können Sie diese nicht erneut aufrufen, da Sie Ihr Netzwerk deaktiviert haben und daher keine Verbindung über SSH zu Ihrem Server herstellen können.

Ich verwende das folgende Skript, um 20 Sekunden Ausfallzeit zu simulieren:

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

Speichern Sie es als downtime.sh, stellen Sie sicher, dass die Datei über Ausführungsrechte verfügt, und führen Sie dann Folgendes aus:

sudo ./downtime.sh
Verspottung
quelle
1
gutes Zeug. Relevanter Link für diejenigen, die sich nicht sicher sind, welche Schnittstelle herunterzufahren ist: unix.stackexchange.com/questions/125400/…
Jeutnarg
1
ähm ... Ich bin ein Linux-Neuling, aber ich denke, dass es hier einige schlechte Ratschläge geben kann: Wenn Sie dieses Skript nicht ausführen, wird die Sitzung abgebrochen (aufgrund einer Unterbrechung) und das Skript wird angehalten ( und belebt nie die Netzschnittstelle wieder). Ich denke, ein bisschen Lesen in der Nähe von nohup sollte wertvoll sein!
DraxDomax
@ DraxDomax, was Sie sagen, klingt logisch, aber ich hatte keine Probleme damit, dass es nicht wieder auftaucht. Während ich Probleme mit der akzeptierten Antwort hatte.
Verspottung
@Spott Sorry, ich konnte meinen Kommentar nicht bearbeiten. Es ist nicht unbedingt "schlechter Rat". Tatsächlich ist es eine nette proaktive Antwort, da 90% der Leute, die diese Frage finden, versuchen, dasselbe zu tun: "Ich muss testen, ob meine Software nach dem Trennen der Maschine funktioniert. Ich habe keinen Zugriff auf den Virtualisierungshost." . Eigentlich habe ich auf Ihr Skript zurückgegriffen (nur mein Adapter war br0) - es hat in meinem Fall nicht funktioniert (SSH von MacOS zu CentOS) und ich musste unseren IT-Mitarbeiter anrufen, um das Netz wieder aufzurufen.
DraxDomax
1

In Ihrem VirtualBox-Konsolenfenster sollte sich ein Pulldown-Menü für Computer befinden. Darunter gibt es mehrere Aktionen. Eines davon ist Ausschalten. Sie müssen diesen für ein sofortiges Ausschalten auswählen. Dies kommt dem Ziehen des Netzkabels eines physischen Servers am nächsten.

MelBurslan
quelle
Ich möchte dies von einer Webseite aus tun. Sicher weiß ich, wie man Maschinen ausschaltet.
SafeY
und ich will es nicht vortäuschen. nicht wirklich heruntergefahren und wieder hochfahren.
SafeY
Gemessen an der Erwähnung von netemgehe ich davon aus , dass es sich bei der Frage wirklich um das Abziehen des Netzwerkkabels von einem Server und nicht um das Stromkabel handelt (obwohl dies nicht klar ist).
Chris Down
Ich werde meine Frage bearbeiten, um es klarer zu machen, danke
SafeY