Marcio Cunha

Como monitorar tráfego de rede em portas específicas com tcpdump

Aprenda a usar o tcpdump para capturar pacotes TCP e UDP em portas específicas e descubra a causa raiz de falhas de comunicação no Linux.

Marcio Cunha•5 min
Também disponível em:EnglishEspañol
Resumo
  • O utilitário tcpdump intercepta o tráfego que passa pelas interfaces de rede diretamente no terminal do Linux.
  • Filtrar portas específicas economiza tempo e evita o excesso de dados irrelevantes na tela.
  • Protocolos TCP e UDP exigem sintaxes ligeiramente diferentes para isolar portas de origem e destino.
  • Analisar pacotes corrompidos ajuda a esclarecer conexões perdidas entre servidores e containers.
  • Salvar capturas em arquivos pcap permite inspeção posterior em ferramentas gráficas como o Wireshark.

Por que monitorar portas específicas na rede?

Quando uma aplicação falha em se conectar a um banco de dados ou a uma API externa, o problema geralmente reside na camada de rede. Nesses momentos, olhar para logs da aplicação nem sempre revela a verdade, pois o erro pode ocorrer antes mesmo de o pacote de dados ser processado pelo software. Na prática, isso significa que precisamos interceptar os sinais elétricos ou pacotes lógicos que entram e saem do servidor para entender exatamente o que está acontecendo no cabo ou na interface virtual. Para aprofundar suas habilidades de diagnóstico, vale a pena conferir o nosso guia sobre como usar o tcpdump para capturar pacotes de rede no Linux.

O utilitário tcpdump é um programa de linha de comando clássico no mundo Unix que funciona como uma escuta invisível. Ele captura cópias de todos os pacotes que cruzam uma placa de rede e os exibe de forma legível. No entanto, em servidores movimentados, capturar tudo gera gigabytes de dados inúteis em segundos. É por isso que filtrar o tráfego por portas específicas — como a porta 3306 para o MySQL ou a porta 443 para requisições HTTPS — se torna uma habilidade essencial para qualquer administrador de sistemas ou engenheiro de suporte.

Identificando a interface de rede correta

Antes de iniciar qualquer captura, você precisa saber qual interface de rede do seu servidor Linux está recebendo o tráfego real. Em ambientes modernos com Docker ou múltiplas placas de rede, o tráfego pode transitar por interfaces virtuais como docker0, eth0 ou pontes de rede específicas. Se você escutar a interface errada, o comando simplesmente não retornará nenhum pacote, parecendo que a rede está totalmente silenciosa.

Para listar as interfaces disponíveis no sistema e verificar o status de cada uma, execute o comando abaixo no terminal:

ip link show

Esse comando exibe todas as interfaces físicas e virtuais presentes na máquina. Anote o nome da interface que possui tráfego ativo (geralmente identificada por nomes como eth0, ens18 ou enp3s0). Escolher a interface correta garante que o comando tcpdump foque exatamente no canal onde a falha de comunicação está ocorrendo, isolando o ruído gerado por outras aplicações rodando no mesmo servidor.

Como capturar tráfego TCP em uma porta específica

O protocolo TCP é responsável por conexões confiáveis que exigem confirmação de entrega, como requisições web e acessos a bancos de dados. Quando uma aplicação não consegue estabelecer essa conexão, o tcpdump é a ferramenta ideal para descobrir se o pacote está saindo do servidor, se está chegando ao destino ou se está sendo rejeitado por um firewall no meio do caminho. Se o seu problema envolve gargalos de latência mais amplos, você também pode consultar as dicas em como usar o tcpdump para diagnosticar latência e falhas de rede.

Para capturar apenas os pacotes direcionados ou originados em uma porta TCP específica, usamos o operador port combinado com o número desejado. O comando abaixo escuta a porta 443 (HTTPS) na interface eth0:

sudo tcpdump -i eth0 -nnv 'tcp port 443'

Nesse comando, a flag -i define a interface, -nn evita a resolução de nomes de DNS e IPs para acelerar a exibição, e -v aumenta o nível de detalhes mostrados na tela. O uso de aspas simples ao redor da expressão 'tcp port 443' é fundamental para evitar que o interpretador de comandos do Linux confunda os caracteres especiais. Com isso, você verá em tempo real cada solicitação de abertura de conexão e os dados trafegando exclusivamente nessa porta.

Como isolar o tráfego UDP e portas alternativas

Diferente do TCP, o protocolo UDP é mais simples e não garante que o pacote chegou ao destino. Ele é muito utilizado em serviços de streaming, consultas DNS e protocolos de monitoramento como o SNMP. Quando um serviço baseado em UDP falha, diagnosticar o problema exige capturar rajadas curtas de pacotes que muitas vezes passam despercebidas em ferramentas tradicionais de monitoramento de infraestrutura.

Para capturar exclusivamente pacotes UDP em uma porta específica, como a porta 53 usada por servidores de nomes de domínio (DNS), o procedimento é bastante similar, alterando apenas o filtro do protocolo. Execute o comando a seguir no seu terminal:

sudo tcpdump -i any -nn 'udp port 53'

Note que utilizamos -i any para monitorar todas as interfaces de rede simultaneamente, o que é útil quando não temos certeza absoluta de qual placa está processando aquelas consultas. Essa flexibilidade permite mapear rapidamente se as requisições DNS estão saindo do servidor e se as respostas estão retornando corretamente, ajudando a debugar falhas intermitentes de resolução de nomes.

Salvando capturas para análise posterior no Wireshark

Muitas vezes, analisar o tráfego diretamente no terminal enquanto o problema acontece é estressante e difícil. Para cenários complexos onde a falha ocorre de forma esporádica, a melhor estratégia consiste em salvar os pacotes brutos em um arquivo com extensão .pcap e transferi-lo para uma máquina com interface gráfica para análise detalhada.

Para gravar o tráfego de uma porta específica diretamente em um arquivo, utilize a flag -w combinada com o comando de filtro adequado. Veja o exemplo prático abaixo:

sudo tcpdump -i eth0 'port 8080' -w trafego_porta_8080.pcap

O arquivo gerado armazena exatamente os bits capturados no momento da execução. Você pode interromper a gravação a qualquer momento pressionando as teclas Ctrl + C. Posteriormente, esse arquivo poderá ser aberto em softwares visuais como o Wireshark, permitindo aplicar filtros avançados, seguir fluxos completos de conversação TCP e inspecionar o conteúdo interno dos pacotes com total conforto. Para complementar essa implementação em produção, vale conferir também nossas análises técnicas sobre Pods presos em Terminating? Como forçar a remoção no Kubernetes e Docker sem espaço? Como remover volumes órfãos facilmente.

Considerações Finais

Dominar o uso do tcpdump para monitorar portas específicas transforma a forma como você soluciona problemas de rede e comunicação entre sistemas. Em vez de adivinhar o motivo de uma falha de conexão, você passa a enxergar exatamente o que está acontecendo no nível dos pacotes. Essa clareza técnica acelera o diagnóstico e reduz drasticamente o tempo de indisponibilidade dos seus serviços em produção.

Lembre-se de sempre utilizar filtros adequados para não sobrecarregar o terminal com dados desnecessários e de utilizar arquivos de captura quando precisar de uma análise mais minuciosa. Com essas práticas no seu repertório diário de engenharia, qualquer anomalia de rede deixa de ser um mistério intransponível e se torna apenas mais um problema simples de resolver.