Como simular um cabo de rede desconectado ou um servidor inativo?

14

Simulei a latência da rede com o netem e é ótimo. Agora eu quero simular um cabo de rede desconectado ou quando o servidor cair. Eu preciso disso para facilitar o teste do meu aplicativo e não consegui encontrar nada na Web que me ajudasse. Meus servidores são instâncias virtuais do CentOS e estão no Virtualbox. Eu quero fazer isso a partir de uma página da web php.

SafeY
fonte

Respostas:

17

Apenas abaixe a interface. Por exemplo, com eth0:

ip link set eth0 down

Para trazer a interface de volta:

ip link set eth0 up
Chris Down
fonte
obrigado, eu estou lendo sobre isso aqui
Safey
1
que está trabalhando com êxito, mas ip link set eth0 upnão está funcionando :( e eu preciso de ambos
Safey
@NancySmith "Não está funcionando" não tem significado. Quais mensagens de erro ocorrem? Você atribuiu um IP e uma máscara de rede?
Chris Baixo
Quero dizer que usei ip link set eth0 downvia php e ping mostra que meu servidor está inacessível. então eu queria recuperá-lo ", eu executei ip link set eth0 upvia php e servidor ainda inativo.
Safey
3
@NancySmith Crie outra interface de rede que não tenha acesso ao que estiver conectando (usando rotas, etc.). SSH para o host usando essa interface. Desative a interface pela qual você não está se conectando ao SSH.
perfil completo de Chris Down
7

Ao usar a resposta mais votada em uma máquina conectada via SSH, você derrubará a rede e não terá como recuperá-la. A seguir, é uma maneira de reduzi-lo e recuperá-lo enquanto estiver em uma conexão SSH.

Exemplo usando a interface ens32:

Se você executar:

ip link set ens32 down

E você está se conectando através do SSH, não poderá trazê-lo novamente, pois desativou sua rede e, portanto, não pode fazer o SSH no servidor.

Eu uso o seguinte script para simular 20 segundos de tempo de inatividade:

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

Salve-o como downtime.sh, verifique se o arquivo possui direitos de execução e execute:

sudo ./downtime.sh
Zombando
fonte
1
coisa boa. Além disso, link relevante para aqueles que não tem certeza sobre qual interface para baixo: unix.stackexchange.com/questions/125400/...
Jeutnarg
1
erm ... Eu sou um novato no Linux, mas acho que pode haver alguns conselhos ruins aqui: se você não copia esse script, o que acontece é que você o executa, sua sessão morre (devido à desconexão) e o script para ( e nunca revive a interface da rede). Eu acho que algumas leituras sobre o nohup devem ser valiosas!
DraxDomax
@DraxDomax o que você diz parece lógico, mas não tive nenhum problema com o fato de ele não voltar. Considerando que tive problemas com a resposta aceita.
Zombando
@Mocking Desculpe, não consegui editar meu comentário. Não é necessariamente "um mau conselho". Na verdade, é uma boa resposta proativa, porque 90% das pessoas que encontrarão essa pergunta estão tentando fazer a mesma coisa: "Preciso testar se meu software funciona após a desconexão da máquina. Não tenho acesso ao host de virtualização" . Na verdade, eu recorri ao seu script (apenas meu adaptador era br0) - não funcionou no meu caso (SSH do MacOS para o CentOS) e tive que ligar para o pessoal de TI para trazer a rede novamente.
DraxDomax
1

Na janela do console do seu VirtualBox, você deve ter um menu Machine suspenso. Sob esse, existem várias ações. Um deles é o desligamento. Você precisa selecionar esse para desligar imediatamente. Essa é a coisa mais próxima de puxar o cabo de alimentação de um servidor físico.

MelBurslan
fonte
Eu quero fazer isso de uma página da web. eu sei como desligar máquinas.
precisa
e eu não quero fingir. não desligue e inicie novamente.
precisa
A julgar pela menção de netem, suponho que a pergunta seja realmente sobre desconectar o cabo de rede de um servidor, e não o cabo de alimentação (embora não esteja claro).
Chris Baixo
Vou editar a minha pergunta para torná-la mais clara, graças
Safey