O Wireshark é a lupa mais poderosa que existe para tráfego de rede. Se algo passa pelo cabo (ou pelo ar), o Wireshark vê. E analisa. E explica-te o que significa.
Quando comecei a fazer troubleshooting de rede, o Wireshark parecia um alarme de carro: demasiados sinais, demasiados painéis, não percebia nada. Usava tcpdump porque era "mais simples". Até ao dia em que precisei de perceber porque é que uma API respondia lentamente e o tcpdump não me dava as respostas.
O Wireshark não é só para peritos em redes. Com os filtros certos, seguires streams TCP, e usares as estatísticas integradas, consegues diagnosticar problemas que de outra forma seriam invisíveis. E no macOS, a instalação é mais simples do que parece.
Vou mostrar-te:
- Instalação no macOS com brew e captura sem root
- Interface: os 3 painéis, cores e profiles
- Filtros de captura vs filtros de display (tabela de referência)
- Seguir streams TCP, UDP e TLS
- Estatísticas: IO graph, conversations, protocol hierarchy
- Captura remota via SSH e tshark
⬆ Wireshark a correr no macOS com captura ativa e filtro HTTP aplicado
Instalação no macOS
A instalação no macOS é direta com Homebrew. Mas há um passo adicional para capturares sem root:
Importante: Depois de adicionares o user ao grupo access_bpf, tens de fazer logout e login (ou reiniciar) para fazer efeito. Sem isto, o Wireshark pede-te a password de admin sempre que inicia uma captura.
A interface: 3 painéis que contam a história
A interface do Wireshark está dividida em 3 áreas principais, cada uma com um propósito:
| Painel | O que mostra | Dica |
|---|---|---|
| Packet List | Lista de todos os pacotes, com timestamp, origem, destino, protocolo, info | Clica num pacote para veres os detalhes nos outros painéis |
| Packet Details | Árvore expansível com cada camada do pacote (Ethernet → IP → TCP → Aplicação) | É aqui que vês os headers HTTP, TLS handshake, etc. |
| Packet Bytes | Hex dump raw do pacote selecionado | Útil para troubleshooting de baixo nível ou protocolos binários |
As cores dos pacotes não são decorativas. Cada cor tem um significado:
- Verde claro: Tráfego HTTP normal
- Azul: Tráfego DNS
- Vermelho: TCP RST (conexão rejeitada)
- Amarelo: TCP Retransmissão (latência ou perda)
- Roxo: TLS/SSL
Filtros de captura vs filtros de display
Esta é a maior fonte de confusão para iniciados. Filtros de captura (berkeley packet filter) decidem o que entra na captura. Filtros de display filtram o que já foi capturado, sem perder dados.
| O que queres | Filtro de Captura | Filtro de Display |
|---|---|---|
| Só HTTP | tcp port 80 | http |
| HTTP ou HTTPS | tcp port 80 or 443 | http or tls |
| Um IP específico | host 192.168.1.100 | ip.addr == 192.168.1.100 |
| Tráfego entre dois IPs | host 10.0.0.1 and host 10.0.0.2 | ip.addr == 10.0.0.1 && ip.addr == 10.0.0.2 |
| DNS queries | udp port 53 | dns |
| ARP apenas | arp | arp |
| TCP SYN (novas conexões) | não é possível | tcp.flags.syn == 1 && tcp.flags.ack == 0 |
| Erros TCP | não é possível | tcp.analysis.flags |
Dica de ouro: Usa filtros de captura apenas quando sabes exatamente o que queres (ex: só DNS). Para troubleshooting, faz uma captura ampla e usa filtros de display: assim não perdes contexto. O Wireshark é generoso com memória, as capturas de minutos são perfeitamente manejáveis.
Seguir streams tcp/udp/tls
Esta é a funcionalidade que mais uso. Seguir um stream TCP permite-te ver a conversa completa entre cliente e servidor, como se fosse um chat:
- Clica com o botão direito num pacote HTTP ou TCP
- Vai a Follow → TCP Stream
- O Wireshark mostra-te a conversa completa, com pedidos a vermelho e respostas a verde
- Podes guardar o raw stream, mudar de direção (A→B, B→A), ou procurar texto
Para streams TLS (HTTPS), só vês o handshake e dados encriptados a menos que tenhas as chaves privadas (o que não é comum em produção). Mas para HTTP, DNS, SMTP, FTP e outros protocolos não encriptados, é uma janela direta para a comunicação.
Estatísticas: io graph, conversations, protocol hierarchy
O menu Statistics do Wireshark é um tesouro de informação agregada:
⬆ Protocol Hierarchy e IO Graph: dois dos painéis de estatísticas mais úteis
Captura remota via SSH
Precisas de analisar tráfego de um servidor remoto mas só tens SSH? O Wireshark consegue fazer captura remota de duas formas:
Atenção: Na Opção 1, certifica-te de que filtras a porta 22 (not port 22) para não criares um loop infinito de tráfego SSH a ser capturado e reenviado.
Tshark: Wireshark na linha de comandos
O tshark é a versão CLI do Wireshark. Perfeito para servidores sem GUI e para automação:
Boas práticas
| Prática | Porquê |
|---|---|
| Usa filters de display, não de captura | Perdes contexto se filtrares na captura. Captura tudo, filtra depois |
| Guarda perfis de filtros | No menu Edit → Configuration Profiles, cria perfis para HTTP, DNS, Troubleshooting |
| Usa coloring rules | View → Coloring Rules. Cria regras para destacar erros, retransmissões, etc. |
| Exporta objetos | File → Export Objects → HTTP. Útil para extrair ficheiros transferidos na rede |
| Não captures em produção sem filtro | Num servidor com muito tráfego, uma captura sem filtro enche o disco em minutos |
Recapitulando
- Instalação: brew install wireshark + chmodbpf para captura sem root
- Interface: 3 painéis (packet list, details, bytes) + cores com significado
- Filtros de captura (BPF) vs display (pós-captura): tabela de referência
- Seguir streams TCP para ver conversas completas
- Estatísticas: IO Graph, Conversations, Protocol Hierarchy
- Captura remota via SSH pipe e tshark para CLI
O Wireshark é uma ferramenta que quanto mais usas, mais valor tiras. Começa por seguir streams HTTP em tráfego do teu próprio computador: vais ficar surpreendido com o que as aplicações andam a comunicar sem tu saberes.
Comentários (0)
Nenhum comentário ainda. Seja o primeiro!
Deixar comentário