Estou com dificuldades para descrever o erro, desculpe pela longa explicação:
Eu tenho uma solução de AutoSSH reversa de estabilidade, funcionando e bem-sucedida, pregada entre uma placa beagle de cliente e um servidor. A placa beagle está em uma conexão 3G GCN NATed, o servidor tem um verdadeiro endereço IPv4 roteavel. Eu permito conexões diretas com meus serviços tendo "GatewayPorts Yes" configurado no arquivo sshd_config do Servidor (ou seja, diretamente através do Servidor atuando como um proxy).
Esta solução funciona muito bem e é muito durável contra todos os tipos de desconexões ... exceto isto: As sessões reversas do AutoSSH ainda estão ativas mesmo durante o erro, ainda que a porta do gateway no Servidor fique em silêncio. Eu acho que o erro está totalmente contido no servidor. o cliente AutoSSH nunca vê o erro e não tenta corrigi-lo.
Aqui está a saída de netstat -anp no servidor. Eu tenho três sessões autoSSH reversas pregadas nas portas 64,65,66. Observe como a porta 64 está ausente do lado de escuta do servidor, o que está ocorrendo atualmente no erro. Eu simplifiquei e anonimizei a saída. Na realidade, as portas reversas estão bem acima dos 30.000s.
IP do servidor do AutoSSH: 1.1.1.1
ISP IP do AutoSSH Client BeagleBoard (lembre-se de que o dispositivo está irremediavelmente atrás de um GNC e NAT): 2.2.2.2
Eu usando um dos serviços proxy do AutoSSH: 3.3.3.3
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 1.1.1.1:22 2.2.2.2:46154 ESTABLISHED -
tcp 0 0 1.1.1.1:22 2.2.2.2:54006 ESTABLISHED -
tcp 0 0 1.1.1.1:22 2.2.2.2:39334 ESTABLISHED -
tcp 0 0 1.1.1.1:65 3.3.3.3:29860 ESTABLISHED -
tcp6 0 0 :::65 :::* LISTEN -
tcp6 0 0 :::66 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
* a porta de notas 64 está faltando, mas há três sessões reverseSSH pregadas a partir do cliente AutoSSH. Não consigo acessar os serviços da porta 64 até que eu redefina manualmente a sessão ReverseSSH.
A única maneira de recuperar isso é matar os túneis SSH existentes por qualquer método que eu escolher (espere o provedor 3G matar a sessão SSH estabelecida, matando os processos ssh no cliente, ignorando porta de rede, reinicializando o SSHD no servidor, reinicializando o cliente ou servidor, etc.). O AutoSSH recupera automaticamente e o serviço ReverseSSHed reaparece no lado LISTENING:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 1.1.1.1:22 2.2.2.2:46154 ESTABLISHED -
tcp 0 0 1.1.1.1:22 2.2.2.2:54006 ESTABLISHED -
tcp 0 0 1.1.1.1:22 2.2.2.2:39334 ESTABLISHED -
tcp 0 0 1.1.1.1:65 3.3.3.3:29860 ESTABLISHED -
tcp6 0 0 :::64 :::* LISTEN -
tcp6 0 0 :::65 :::* LISTEN -
tcp6 0 0 :::66 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
* a porta de notas 64 retornou depois de todas as conexões serem retornadas.
Acontece aleatoriamente em todos os serviços do ReverseSSHed. Em média, cerca de uma vez por dia para qualquer um dos três serviços.
Alguma ideia do que poderia estar causando isso ou onde começar a procurar nos registros? Os logs do SSH não indicam uma falha.
Obrigado pela sua percepção.