pacote TCP que está ausente no log de strace

1

Alguém pode me dar idéias sobre a seguinte situação (Linux 2.6.18-348.4.1.el5):

  1. Em algum momento, o tcpdump mostra o pacote [FIN, ACK] enviado da porta do servidor para o cliente local
  2. strace log mostra nenhuma atividade de soquete executada nesse identificador de soquete para aquela porta perto desse momento (o log de strace mostra corretamente o restante da comunicação para esse cliente)
  3. Firewall e SELinux estão parados
  4. O problema é 100% reproduzível com condições complexas que exigem que o servidor execute solicitações de rede para autenticação Kerberos de outra conexão de cliente.

Quais são as possíveis causas que podem levar o tcpdump a mostrar o pacote que está faltando no strace? Parece mais com problema de servidor, problema de configuração de TCP ou algum problema de serviço de firewall?

    
por noonex 10.07.2014 / 11:23

2 respostas

0

kasperd estava certo sobre strace não mostrar todos os threads do processo (de alguma forma eu tinha certeza que anexar ao processo iria monitorar todos os threads). Então auditd confirmou que é meu aplicativo fechando o socket (porque algum misterioso "signal 33" acontece e recv () não manipula corretamente o EINTR. Vou fazer outra pergunta sobre isso) .

    
por 22.07.2014 / 18:52
0

Algo aciona o fechamento da conexão no lado do servidor. Muito provavelmente, é a aplicação no servidor remoto que desliga a conexão. Possíveis razões são o recurso de desconexão ociosa no servidor, erros de software, etc.

Se o servidor remoto estiver por trás do NAT, ele também pode ser causado pela expiração da entrada NAT no dispositivo que faz o NAT.

Você deve executar tcpdump no servidor e ver se o pacote FIN é originado desse servidor. Se for, então o provável culpado é o aplicativo. Se não, então é do firewall.

    
por 10.07.2014 / 12:48