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.

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

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

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.


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,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.