Dia 19: Diagnóstico de Rede — tcpdump, Wireshark e mtr

1. Introdução ao Diagnóstico de Rede

Quando uma aplicação não consegue ligar-se a um serviço remoto, o problema pode estar em qualquer ponto do percurso — desde a placa de rede local até ao servidor de destino. O diagnóstico de rede é o processo sistemático de isolar a causa usando ferramentas que observam o tráfego em diferentes níveis da pilha.

Neste décimo nono dia do curso de redes, cobrimos as ferramentas essenciais que todo o administrador de sistemas deve dominar: tcpdump para captura de pacotes, Wireshark para análise visual, traceroute e mtr para mapear o caminho dos pacotes, e ping, ss e netstat para testes rápidos de conectividade e portas.

ℹ Princípio fundamental

O diagnóstico de rede segue uma hierarquia: comece sempre pela camada mais baixa (física/enlace) e suba até à camada de aplicação. Resolver um problema de DNS quando o cabo está desligado é perda de tempo.

2. tcpdump — Captura de Pacotes na Linha de Comandos

O tcpdump é a ferramenta de captura de pacotes mais utilizada em sistemas Unix. Intercepta o tráfego que passa por uma interface de rede e mostra-o em tempo real, com filtros poderosos baseados na sintaxe BPF (Berkeley Packet Filter). Requer privilégios de root ou pertencer ao grupo pcap.

Captura básica por porta

Para capturar todo o tráfego HTTP (porta 80) numa interface específica:

tcpdump -i eth0 -n port 80

A flag -i eth0 selecciona a interface, e -n desactiva a resolução de nomes DNS — acelera a captura e evita tráfego suplementar. O filtro port 80 limita a captura aos pacotes TCP com origem ou destino na porta 80.

Guardar captura em ficheiro PCAP

Para análise posterior — nomeadamente no Wireshark — grave a captura num ficheiro com formato PCAP:

tcpdump -i eth0 -w captura.pcap

O ficheiro captura.pcap contém todos os pacotes capturados em formato binário. Pode ser aberto no Wireshark ou lido novamente com o tcpdump.

Ler um ficheiro PCAP

Para rever uma captura gravada com detalhe de nível verboso:

tcpdump -r captura.pcap -n -v

A flag -v aumenta o nível de detalhe (TTL, identificadores, opções IP). Use -vv ou -vvv para ainda mais detalhe.

⚠ Atenção aos privilégios

O tcpdump requer acesso à interface de rede em modo promíscuo. Execute como root ou adicione o utilizador ao grupo pcap. NUNCA corrija capturas de tráfego de terceiros sem autorização — pode violar a lei de protecção de dados.

3. Wireshark — Análise Visual de Pacotes

O Wireshark é o analisador de protocolos mais usado do mundo. Ao contrário do tcpdump, oferece uma interface gráfica que decompe cada pacote em todas as camadas — desde o trama Ethernet até à carga útil da aplicação. Suporta milhares de protocolos com dissecação automática.

Fluxo de trabalho típico

O fluxo mais comum é capturar com tcpdump no servidor (onde não há ambiente gráfico) e transferir o ficheiro PCAP para uma estação de trabalho com Wireshark. Lá, abre-se o ficheiro e aplica-se filtros de exibição como http.response.code == 500 ou tcp.port == 443 para isolar o tráfego relevante.

Filtros de captura vs filtros de exibição

Tipo Quando se aplica Sintaxe
Filtro de captura (BPF) Ao gravar pacotes tcpdump: port 443 and host 10.0.0.1
Filtro de exibição Após captura, na interface Wireshark: tcp.port == 443 && ip.addr == 10.0.0.1

Os filtros de captura usam a sintaxe BPF (a mesma do tcpdump) e reduzem o tamanho do ficheiro PCAP. Os filtros de exibição são próprios do Wireshark, mais expressivos, e não eliminam pacotes — apenas ocultam-nos temporariamente.

💡 Dica: Follow TCP Stream

No Wireshark, clique com o botão direito num pacote e seleccione “Follow → TCP Stream”. Isto reconstroi a conversa TCP completa entre cliente e servidor, mostrando o pedido e a resposta sequenciais — essencial para depurar protocolos de texto como HTTP, SMTP ou FTP.

4. traceroute e mtr — Rastrear o Caminho dos Pacotes

Quando o ping falha ou a latência está alta, precisamos de saber onde o problema está no percurso. O traceroute descobre cada salto (router) entre a origem e o destino enviando pacotes com TTL progressivamente crescente.

traceroute

traceroute kbase.pt

A saída lista cada router intermédio com três medições de tempo (uma por sonda). Um asterisco (*) indica que o router não respondeu — pode estar configurado para ignorar ICMP ou ter descartado a sonda.

mtr — traceroute contínuo com estatísticas

O mtr (My Traceroute) combina traceroute e ping num único que envia sondas continuamente e calcula perda de pacotes e latência por salto:

mtr --report kbase.pt

A flag --report envia 10 sondas e imprime um relatório final em formato de tabela, ideal para documentar incidentes. Sem ela, o mtr corre em modo interactivo, actualizando as estatísticas em tempo real.

ℹ Interpretação de perda de pacotes

Se a perda ocorre apenas num salto intermédio mas os saltos seguintes têm 0% de perda, o router intermédio provavelmente limita ICMP — não é um problema real. Só há problema quando a perda persiste do salto em causa até ao destino final.

5. ping, ss e netstat — Conectividade e Portas

Antes de abrir o tcpdump, há três ferramentas rápidas que resolvem 80% dos diagnósticos: ping para conectividade, ss para portas abertas e ip -s link para erros de interface.

ping — eco ICMP

ping -c 4 kbase.pt

A flag -c 4 envia exactamente quatro sondas e termina. Sem ela, o ping corre indefinidamente até Ctrl+C. A saída mostra RTT (round-trip time) e perda de pacotes — se 0% de perda, há conectividade na camada de rede.

ss — sockets em escuta

ss -tlnp

O ss substitui o netstat em distribuições modernas. As flags: -t (TCP), -l (listening), -n (sem resolução DNS), -p (mostrar processo). Responde instantaneamente, ao contrário do netstat que percorre /proc inteiro.

ip -s link — estatísticas de interface

ip -s link show eth0

A flag -s adiciona estatísticas: pacotes RX/TX, bytes, erros, drops e colisões de trama. Um número elevado de errors ou dropped indica problema físico (cabo, incompatibilidade de duplex) ou buffer do kernel.

⚠ netstat está obsoleto

O netstat faz parte do pacote net-tools, descontinuado em 2009. Em distribuições modernas (Debian 12+, Ubuntu 22.04+, RHEL 9), pode não estar instalado. Use ss para sockets e ip para rotas e interfaces — são as substituições oficiais do pacote iproute2.

6. Metodologia Bottom-Up de Diagnóstico

O modelo OSI fornece a estrutura para o diagnóstico ascendente: comece na camada 1 (física) e suba camada a camada até encontrar o problema. Cada camada tem ferramentas próprias e testa uma hipótese diferente.

Camada OSI O que verificar Ferramenta
1 — Física Cabo ligado, link up, LED aceso ip link show
2 — Enlace Endereço MAC, erros de trama, duplex ip -s link show eth0
3 — Rede IP, rota padrão, ICMP alcançabilidade ping, traceroute
4 — Transporte Porta aberta, firewall, handshake TCP ss -tlnp, tcpdump
7 — Aplicação DNS, HTTP status, certificado TLS curl -v, Wireshark

Se o ping falha, o problema está nas camadas 1-3. Se o ping funciona mas a aplicação não liga, o problema está nas camadas 4-7 — firewall, porta fechada, DNS, certificado.

✓ Regra de ouro

Cada teste deve confirmar ou refutar uma hipótese. NUNCA salte camadas: se a camada 2 falha (erros de trama), resolver DNS não ajuda. Corrija a camada mais baixa com problema antes de subir.

7. Erros Comuns e Lista de Verificação

A maioria dos incidentes de rede resulta de um conjunto pequeno de causas recorrentes. A tabela abaixo mapeia sintomas típicos às causas mais prováveis.

Sintoma Causa provável Ferramenta
ping falha completamente Cabo desligado, interface down, sem rota ip link show
ping funciona, aplicação não liga Firewall, porta fechada, serviço parado ss -tlnp
Latência alta intermitente Congestionamento, perda de pacotes num salto mtr --report
DNS resolve mas HTTP falha Proxy, TLS, firewall na porta 80/443 tcpdump port 443
Erros RX a aumentar Duplex mismatch, cabo defeituoso, NIC ip -s link show eth0

Checklist de diagnóstico (descendente rápido)

Quando um incidente de rede chega, siga estes passos por ordem. Cada passo toma menos de 30 segundos e elimina uma categoria inteira de causas:

  • 1. Interface up?ip link show eth0 — procurar state UP
  • 2. Tem IP?ip addr show eth0 — confirmar IPv4/IPv6 válido
  • 3. Tem rota?ip route show default — existe gateway padrão?
  • 4. DNS funciona?ping -c 2 kbase.pt — resolve e responde?
  • 5. Porta aberta?ss -tlnp | grep :80 — serviço em escuta?
  • 6. Firewall a bloquear?iptables -L -n ou nft list ruleset
  • 7. Caminho limpo?mtr --report kbase.pt — perda em algum salto?
  • 8. Tráfego chega?tcpdump -i eth0 -n port 80 — ver pacotes em tempo real

ℹ Documente cada incidente

Guarde a saída de mtr --report e tcpdump -w em cada incidente. Estes ficheiros são evidência forense — permitem análise posterior e comparação com incidentes futuros. Um PCAP vale mais do que uma memória descritiva.

Com estas ferramentas e metodologia, está equipado para diagnosticar a grande maioria dos problemas de rede em servidores Linux. No próximo dia, abordamos a configuração de DNS com systemd-resolved e dnsmasq.