Eu tenho um problema com um de nossos clientes tentando iniciar uma conexão TCP com nosso servidor, mas ele falha.
Em tcpdump
, vejo que o dispositivo do cliente envia um pacote SYN
para o qual o nosso servidor responde corretamente com SYN ACK
. Imediatamente depois disso, nosso servidor recebe um pacote RST
. Após alguns segundos, o procedimento é repetido. Estranhamente, a conexão é estabelecida corretamente de tempos em tempos (a cada 2 dias, aproximadamente às 8:30 da manhã).
Eu tentei redirecionar os pacotes para outro servidor, mas obtenho o mesmo problema com esse servidor.
Hoje tentei me conectar ao contrário. Nosso cliente atualmente não tem uma porta aberta em seu firewall, mas eu tentei me conectar de qualquer maneira para ver o que acontece. Eu usei ssh
para tentar a conexão de diferentes máquinas, aqui está o que eu descobri:
Do meu computador pessoal (Mac OS X 10.10): ssh: connect to host x.x.x.x port 22: Connection refused
Do servidor que está recebendo os pacotes SYN
(Debian 8): ssh: connect to host x.x.x.x port 22: No route to host
De outro servidor em um centro de hospedagem diferente (Debian 7): ssh: connect to host x.x.x.x port 22: No route to host
De outro servidor em uma empresa maior (Debian 7): ssh: connect to host x.x.x.x port 22: Operation timed out
A resposta que recebo do meu computador pessoal em casa é o que eu esperava se a porta não estivesse aberta no firewall, mas estou confuso com as diferentes saídas que recebo dos diferentes servidores.
O ping do IP do cliente de qualquer uma dessas máquinas funciona bem.
Eu poderia estar vendo um problema de roteamento aqui, onde meus SYN-ACK
packages são roteados incorretamente e, portanto, (quase) nunca chegam ao cliente? Você tem alguma sugestão sobre como lidar com o problema? Devo entrar em contato com o provedor do cliente ou talvez com o provedor do meu servidor?
Obrigado pela sua ajuda.
UPDATE 1:
Eu fiz mais pesquisas sobre Jeff's Questions. Aqui estão meus resultados:
%código%
No momento, estou esperando o cliente me conceder acesso à rede dele, portanto, não posso ver se ele recebe o
IP TTL SYN: 55
IP TTL RST: 59
ou se ele envia o SYN-ACK
Traceroute:
%código%
O traceroute do meu computador em casa é o mesmo nos dois últimos saltos. Ambos os traceroutes têm 5 saltos.
Não há firewall ou balanceador de carga no servidor.
As tabelas de roteamento ficam bem nos servidores que recebem o RST
. Eles consistem principalmente na rota padrão e na rota de sub-rede local funcionando sem problemas em todas as outras ocasiões.