Jak symulować niepodłączony kabel sieciowy lub wyłączony serwer?

14

Symulowałem opóźnienie sieci za pomocą netem i to świetnie. Teraz chcę zasymulować niepodłączony kabel sieciowy lub gdy serwer nie działa. Potrzebuję tego, aby ułatwić testowanie mojej aplikacji i nie mogłem znaleźć w Internecie niczego, co by mi pomogło. Moje serwery są wirtualnymi instancjami CentOS i znajdują się w Virtualbox. Chcę to zrobić ze strony php.

SafeY
źródło

Odpowiedzi:

17

Po prostu obniż interfejs. Na przykład z eth0:

ip link set eth0 down

Aby przywrócić interfejs:

ip link set eth0 up
Chris Down
źródło
dziękuję, czytam o tym tutaj
SafeY
1
to działa pomyślnie, ale ip link set eth0 upnie działa :( i potrzebuję ich obu
SafeY
@NancySmith „Nie działa” nie ma znaczenia. Jakie komunikaty o błędach występują? Czy przypisałeś adres IP i maskę sieci?
Chris Down,
Mam na myśli, że użyłem ip link set eth0 downprzez php i ping pokazuje, że mój serwer jest nieosiągalny. potem chciałem przywrócić go z powrotem, wykonałem ip link set eth0 upprzez php i serwer nadal nie działał.
SafeY
3
@NancySmith Utwórz inny interfejs sieciowy, który nie ma dostępu do niczego, z czym się łączy (używając tras itp.). SSH do hosta za pomocą tego interfejsu. Wyłącz interfejs, przez który nie łączysz się z SSH.
Chris Down,
7

Podczas korzystania z najlepiej głosowanej odpowiedzi na maszynie, którą łączysz za pośrednictwem SSH, rozłączysz sieć i nie będziesz mieć możliwości jej przywrócenia. Poniżej przedstawiono sposób obniżenia i przywrócenia go podczas połączenia SSH.

Przykład użycia interfejsu ens32:

Jeśli uruchomisz:

ip link set ens32 down

A jeśli łączysz się przez SSH, nie będziesz mógł go ponownie uruchomić, ponieważ wyłączyłeś sieć, a zatem nie możesz SSH do twojego serwera.

Używam następującego skryptu, aby zasymulować 20 sekund przestoju:

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

Zapisz go jako downtime.sh, upewnij się, że plik ma uprawnienia do wykonywania, a następnie uruchom:

sudo ./downtime.sh
Kpić
źródło
1
dobry towar. Również odpowiedni link dla tych, którzy nie są pewni, który interfejs wyłączyć: unix.stackexchange.com/questions/125400/…
Jeutnarg
1
erm ... Jestem początkującym Linuksem, ale myślę, że może tu być zła rada: jeśli nie zrobisz tego skryptu, zdarzy się, że go wykonasz, sesja umrze (z powodu rozłączenia) i skrypt się zatrzyma ( i nigdy nie odnawia interfejsu sieciowego). Myślę, że lektura około nohup powinna być cenna!
DraxDomax
@DraxDomax to, co mówisz, brzmi logicznie, ale nie miałem żadnych problemów z tym, że nie wróciło. Podczas gdy miałem problemy z zaakceptowaną odpowiedzią.
Kpiąc z
@Mocking Przepraszamy, nie mogłem edytować komentarza. To niekoniecznie „zła rada”. To właściwie ładna proaktywna odpowiedź, ponieważ 90% osób, które znajdą to pytanie, próbuje zrobić to samo: „Muszę sprawdzić, czy moje oprogramowanie działa po odłączeniu komputera. Nie mam dostępu do hosta wirtualizacji” . Właściwie skorzystałem z twojego skryptu (tylko mój adapter był br0) - w moim przypadku nie działał (SSH z MacOS na CentOS) i musiałem zadzwonić do naszego informatyka, aby ponownie uruchomić sieć.
DraxDomax
1

W oknie konsoli Virtualbox powinieneś rozwinąć menu Maszyna. W ramach tego jest kilka działań. Jednym z nich jest wyłączenie zasilania. Musisz wybrać ten, aby natychmiast wyłączyć zasilanie. Jest to najbliższe szarpnięcie przewodu zasilającego fizycznego serwera.

MelBurslan
źródło
Chcę to zrobić ze strony internetowej. niestety wiem, jak wyłączyć maszyny.
SafeY
i nie chcę tego sfałszować. tak naprawdę nie wyłączaj się i uruchom ponownie.
SafeY
Sądząc po wspomnianej wzmiance netem, zakładam, że tak naprawdę chodzi o odłączenie kabla sieciowego od serwera, a nie kabla zasilającego (chociaż nie jest to jasne).
Chris Down,
Przeredaguję