A sessão SSH através do OpenVPN é interrompida / bloqueada após algumas linhas

12

Eu tenho um grande número de PCs sem ventilador idênticos executando o debian 6 (ARM). A maioria deles está conectada via comcast e funciona bem. Existem alguns que estão conectados aos modems 'WiMax' e estão tendo problemas de comunicação.

Especificamente: se eu fizer um shsh para um desses e tentar um comando como 'ps -ax', retornarei cerca de 3 linhas e a sessão será bloqueada. Se eu deixar descansar, eventualmente ele será encerrado com uma 'sessão fechada por pares'.

O que eu tentei:

  • ssh -vvv → nenhuma mensagem de erro
  • ssh <user@host> 'command'→ isso às vezes retornará a saída completa do comando. Às vezes, ele não se conecta.

Sugestões sobre outras coisas para tentar?

Descobri que posso executar alguns comandos com sucesso: por exemplo, pressionar Return uma dúzia de vezes ou mais está ok. cd ~e depois lffunciona como faz df -h. Posso executar dfmuitas vezes com êxito, mas assim que tento algo com mais saída (por exemplo ls /etc), ele trava.

Faz diferença que estou tentando me comunicar entre esses dois hosts usando o OpenVPN?

ethrbunny
fonte
Verifique se o MTU do caminho não é menor que o MTU da interface configurada. O SSH não fragmenta, portanto, com o bit DF definido, os pacotes são descartados. Leia isso para uma explicação muito mais detalhada.
Aaron Copley
1
Tentei configurar o MTU em todas as interfaces para 1400 sem efeito aparente. Testado com ping -c 1 -s $((5000-28)) -M do machine-ipo qual devolvido 1500 - mesmo como máquina
ethrbunny
1
tracepath -n <ip>confirma isso: 1500 é permitido o caminho todo.
ethrbunny
1
Perdoe minha ignorância, mas como -Tajuda nesse caso?
Aaron Copley
2
<Lê o segundo parágrafo> É um problema no MTU. Sim, problema no MTU. Veja esta discussão para uma explicação. Não estou votando para fechar como duplicado, porque há um ponto que o outro segmento não discute: o que você precisa alterar na configuração da VPN para corrigir o problema.
Gilles 'SO- stop be evil'

Respostas:

11

Você tem os sintomas de um problema no MTU : algumas conexões TCP congelam, de forma mais ou menos reproduzível para um determinado comando ou URL, mas sem um padrão geral facilmente discernível. Um sintoma revelador é que as sessões interativas do ssh funcionam bem desde que você não execute comandos com saída grande. Consulte Não é possível acessar sites https selecionados no Linux sobre PPPoE para obter uma explicação.

O OpenVPN possui várias opções relacionadas ao MTU - procure por “mtu” no manual. Não tenho experiência suficiente para ter certeza de qual opção você precisa alterar. (É até possível que você possa alterar alguma coisa na configuração do modem Wimax.) A opção mais provável de alterar é mssfix: tente diminuir o valor até resolver o problema. O padrão é 1450; algo como cerca de 1400 pode resolver o seu problema. Tente openvpn --fragment 1200 -mssfix; se ajudar, aumente o valor até que comece a quebrar.

Gilles 'SO- parar de ser mau'
fonte
Estou começando definindo mssfix 1200no servidor e reiniciando. Por enquanto, tudo bem. Se isso funcionar, aumentarei para 1300 ou 1400 e verei o que acontece. Muitos clientes para alterar todas as configurações remotas, portanto, o lado do servidor terá que fazer.
precisa saber é o seguinte
Eu sabia que era MTU!
Aaron Copley
3

A resposta de Gilles está completamente correta, mas também há outra causa potencial para isso.

Houve um erro na versão 2.3.0 do OpenVPN que desconectava os clientes ao enviar grandes quantidades de dados: https://community.openvpn.net/openvpn/ticket/263

Esse problema ocorreu apenas ao usar o TCP. O UDP não foi afetado completamente.

Patrick
fonte
3

Tínhamos o mesmo problema e era realmente um problema de MTU. No entanto, para nós, o problema não estava na configuração openVPN, mas na interface tun0.

Como resolvemos isso: primeiro encontre o tamanho máximo de pacote que passou, com

ping <host> -s 1500 -M do

e reduzindo o valor de 1500 até que um valor estivesse passando (para nós, 1350).

Uma vez encontrado o valor correto, altere a interface tun0 com

sudo ip link set dev tun0 mtu 1350

como foi proposto por Sebastian aqui . Depois disso, a VPN estava indo bem.

Eino Gourdin
fonte