O Guia de tcpdump para Nginx: Resolvendo Erros Além dos Logs

tcpdump nginx. Às vezes, o Nginx é como um médico que diz que você está bem porque seus sinais vitais estão normais, mas você continua sentindo uma dor latente. O log de erro pode estar vazio e o log de acesso mostrar apenas um 499 ou um 504 genérico, enquanto o problema real está acontecendo em uma camada que o software sequer enxerga.

Para esses momentos, precisamos descer ao nível dos bits e bytes com o tcpdump.


Por que o log do Nginx falha?

O Nginx registra eventos na camada de aplicação (L7). Ele só loga o que o sistema operacional entrega para ele. Se o problema estiver no Three-way Handshake do TCP, em um firewall silencioso (como o CrowdSec ou Fail2Ban) ou em pacotes fragmentados, o Nginx simplesmente ficará esperando e nunca escreverá uma linha sequer no log.

O Fluxo da Verdade

  1. Rede (L3/L4): Onde o tcpdump vive. Ele vê o pacote chegando na interface.
  2. Stack do Kernel: Onde o sysctl.conf e o firewall processam os dados.
  3. Aplicação (L7): Onde o Nginx vive. Ele só vê o que sobreviveu às etapas acima.

Comandos Essenciais para Diagnóstico

1. Monitorando tráfego na porta 80/443

Se você suspeita que o tráfego nem está chegando ao servidor, use:

tcpdump -i any port 443 -n -vv
  • -i any: Escuta em todas as interfaces.
  • -n: Não resolve DNS (essencial para não sobrecarregar a CPU).
  • -vv: Verborragia extra para ver flags TCP (como SYN, ACK, FIN).

2. Capturando pacotes para análise no Wireshark

Ler texto no terminal é difícil para fluxos complexos. O ideal é salvar em um arquivo .pcap:

tcpdump -i eth0 port 443 -w troubleshooting.pcap

Depois, você pode baixar esse arquivo e abrir no Wireshark para ver a reconstrução colorida do fluxo TCP.

3. Filtrando por IP de um cliente específico

Se um usuário reclama de lentidão intermitente:

tcpdump -i any host 192.168.1.100 and port 443

Cenários onde o tcpdump é o Herói

O Mistério do “Connection Reset”

Se o cliente recebe um “Connection Reset”, mas o Nginx não mostra erro, o tcpdump pode revelar que o kernel está enviando um pacote RST. Isso geralmente indica que a fila de conexões (backlog) está cheia ou que o firewall cortou a conexão antes do Nginx processar.

Latência no Backend (Upstream)

Se você usa o Nginx como Proxy Reverso para um app em Docker ou outro servidor:

tcpdump -i any port 8080 -n

Aqui você consegue medir exatamente quanto tempo o seu serviço de upstream (PHP-FPM, Node.js, etc.) leva para responder ao Nginx, isolando se o gargalo é a rede interna ou o código.

Problemas de SSL/TLS

O Nginx só loga “SSL Handshake Failed”. Com o tcpdump, você vê se o cliente está tentando usar uma versão de protocolo antiga (TLS 1.0) que seu servidor já desativou por segurança.


Dicas de Performance e Segurança

  • Cuidado com o Volume: Em servidores de alto tráfego, o tcpdump pode gerar arquivos imensos em segundos. Sempre use filtros específicos.
  • Analise o MTU: Se pacotes grandes estão “sumindo”, o tcpdump mostrará pacotes ICMP “Fragmentation Needed”, algo que o Nginx nunca saberia.

Dominar essa ferramenta transforma você de um administrador que “tenta configurações” em um especialista que “prova diagnósticos”.