Marcio Cunha

Como usar o tcpdump para capturar pacotes de rede no Linux

Guia prático para administradores de sistemas diagnosticarem tráfego de rede e investigarem falhas diretamente pelo terminal com o tcpdump.

Marcio Cunha•5 min
Também disponível em:EnglishEspañol
Resumo
  • A inspeção direta de pacotes pelo terminal revela falhas ocultas em aplicações que logs convencionais ignoram.
  • A filtragem por portas específicas e endereços IP evita o excesso de ruído visual durante a captura em servidores de produção.
  • O armazenamento do tráfego capturado em arquivos pcap permite análises detalhadas posteriores em ferramentas gráficas como o Wireshark.
  • A resolução de nomes de host desativada acelera o processamento em tempo real de grandes volumes de pacotes na interface de rede.
  • O diagnóstico preciso de problemas de conexão exige compreender os estados do protocolo TCP diretamente na camada de enlace.

Por que o tcpdump é indispensável para administradores de sistemas

Quando uma aplicação falha em se conectar a um banco de dados ou uma API externa, o primeiro instinto de muitos administradores é olhar para os arquivos de log do serviço. No entanto, quando os logs mostram apenas um genérico erro de tempo limite, o desenvolvedor ou operador fica no escuro sem saber se o pacote de dados chegou ao destino. É exatamente nesse cenário crítico que entra o tcpdump, um utilitário de linha de comando nativo do Linux que intercepta e exibe os pacotes de rede trafegando pelas interfaces do servidor. Na prática, ele funciona como um estetoscópio digital, permitindo ouvir o tráfego bruto exatamente como ele entra e sai da placa de rede. Se você quer dominar o diagnóstico de infraestrutura, aprender a isolar problemas de conectividade complementa outras habilidades essenciais, assim como explicamos no guia sobre como usar o journalctl para investigar logs no Linux de forma centralizada.

Como listar as interfaces de rede disponíveis no servidor

Antes de iniciar qualquer captura de pacotes, você precisa descobrir qual placa de rede do servidor está realmente processando o tráfego que deseja analisar. Em servidores modernos, os nomes tradicionais como eth0 foram substituídos por identificadores previsíveis baseados no barramento do sistema, como enp3s0 ou wlan0. Para listar todas as interfaces ativas e disponíveis no sistema operacional, execute o comando tcpdump acompanhado do parâmetro de listagem. Essa verificação evita que você grave dados na interface errada e perca o evento que está tentando solucionar. Se a rede apresentar lentidão generalizada entre diferentes ambientes ou containers, vale a pena cruzar essas informações com testes de vazão usando estratégias semelhantes às descritas em como usar o iperf3 para medir gargalos de rede.

Para listar as interfaces disponíveis no seu Linux, abra o terminal com privilégios administrativos e execute a instrução abaixo:

tcpdump -D

O sistema exibirá uma lista enumerada contendo cada interface de rede física e virtual presente na máquina. Anote o número ou o nome exato da interface que deseja monitorar durante os próximos passos.

Como capturar tráfego básico em tempo real

Depois de identificar a interface correta, o próximo passo é iniciar a captura do tráfego bruto para entender o comportamento das conexões. Por padrão, se você executar o comando sem restrições, o tcpdump tentará traduzir endereços IP e números de portas em nomes legíveis de serviços, o que pode deixar a execução lenta devido a consultas de DNS. Para evitar esse atraso indesejado e visualizar os dados de forma limpa, utilizamos a flag que desativa a resolução de nomes. Durante uma investigação de incidentes em ambientes críticos, é comum que administradores precisem também monitorar tráfego de rede em portas específicas com tcpdump para isolar ruídos e focar apenas no serviço afetado.

Execute o comando a seguir substituindo eth0 pela interface identificada no passo anterior:

sudo tcpdump -i eth0 -n

Cada linha impressa na tela representa um pacote individual capturado, mostrando os endereços de origem e destino, as portas envolvidas e as flags do protocolo. Para interromper a execução e retornar ao prompt de comando, basta pressionar as teclas Ctrl + C.

Como filtrar pacotes por IP, porta e protocolo

Em servidores de alta performance, capturar todo o tráfego gera uma avalanche de dados na tela que torna a análise manual praticamente impossível. Para resolver esse problema, o tcpdump aceita expressões de filtro baseadas na sintaxe Berkeley Packet Filter (BPF), permitindo isolar tráfego de um endereço IP específico, de uma porta de serviço ou de um protocolo como TCP, UDP e ICMP. Na prática, isso significa que você pode restringir a escuta apenas aos pacotes destinados ao banco de dados na porta 5432 ou originados pelo IP de um cliente com problemas de acesso.

Para capturar apenas os pacotes TCP direcionados à porta 80 na interface eth0, utilize o seguinte comando:

sudo tcpdump -i eth0 -n tcp port 80

Você também pode combinar múltiplos critérios usando operadores lógicos como and, or e not. Por exemplo, para isolar tráfego de um IP específico conversando com uma porta dedicada, digite:

sudo tcpdump -i eth0 -n host 192.168.1.50 and port 443

Como salvar e analisar capturas de rede em arquivos pcap

Muitas vezes, diagnosticar um problema complexo em tempo real é inviável devido à velocidade com que os pacotes passam pela tela. A melhor estratégia nesses casos é salvar o fluxo bruto de dados diretamente em um arquivo com extensão .pcap para posterior inspeção minuciosa ou compartilhamento com outros engenheiros. O arquivo gerado preserva todos os detalhes binários dos pacotes capturados, permitindo que você utilize utilitários de linha de comando ou softwares de interface gráfica como o Wireshark em sua própria estação de trabalho. Isso garante que a janela de indisponibilidade em produção seja a menor possível.

Para gravar a captura diretamente em um arquivo, utilize o parâmetro de escrita:

sudo tcpdump -i eth0 -n -w diagnostico.pcap port 3306

Para ler o conteúdo desse arquivo posteriormente sem precisar reexecutar a captura na rede do servidor, utilize o parâmetro de leitura:

tcpdump -r diagnostico.pcap -n

Considerações finais sobre o uso do tcpdump

O domínio do tcpdump transforma a maneira como administradores de sistemas solucionam problemas de rede, eliminando suposições e revelando exatamente o que ocorre no nível dos pacotes. Ao combinar filtros precisos, salvamento de arquivos pcap e conhecimento sobre os protocolos fundamentais, qualquer incidente de conectividade deixa de ser um mistério intransponível. Lembre-se sempre de encerrar as capturas após o término da investigação para evitar o consumo desnecessário de espaço em disco e recursos de processamento no servidor.