Dia 19: Diagnóstico de Rede — tcpdump, Wireshark e mtr
Neste artigo
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— procurarstate 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 -nounft 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.
Artigos relacionados no kbase.pt