Capture e analise o tráfego bruto de rede com tcpdump (Linux) ou Wireshark (Windows) para diagnosticar perda de pacotes, latência e problemas de conectividade.
Processo de captura de pacotes
A figura a seguir ilustra o processo de captura de pacotes.
Observações sobre o processo anterior:
|
Nº |
Etapa |
Descrição |
|
1 |
Identificar os sintomas do problema |
Use ferramentas como ping e traceroute para verificar a existência dos seguintes problemas:
|
|
2 |
Escolha uma ferramenta de captura |
Selecione a ferramenta adequada ao seu sistema operacional:
|
|
3 |
Instale e configure a ferramenta |
Defina as condições de filtro antes da captura para aumentar a eficiência. |
|
4 |
Capturar os pacotes de rede |
Antes de iniciar, defina os seguintes pontos:
|
|
5 |
Analisar os dados capturados |
Examine os dados obtidos para:
|
|
6 |
Resolver o problema e validar os resultados |
Se os dados capturados forem insuficientes, use outras ferramentas para continuar a solução de problemas:
|
Usar a ferramenta tcpdump em instâncias Linux
A maioria das distribuições Linux já possui o tcpdump pré-instalado. Caso contrário, instale-o com um gerenciador de pacotes como APT ou yum. Consulte Usar ferramentas de gerenciamento de pacotes para gerenciar software.
Descrição
Comando tcpdump:
tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]
[ -c count ] [ --count ] [ -C file_size ]
[ -E spi@ipaddr algo:secret,... ]
[ -F file ] [ -G rotate_seconds ] [ -i interface ]
[ --immediate-mode ] [ -j tstamp_type ] [ -m module ]
[ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ]
[ -r file ] [ -s snaplen ] [ -T type ] [ --version ]
[ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ]
[ -z postrotate-command ] [ -Z user ]
[ --time-stamp-precision=tstamp_precision ]
[ --micro ] [ --nano ]
[ expression ]
Parâmetros mais utilizados:
|
Parâmetro |
Descrição |
|
-s |
Tamanho da captura. O valor 0 usa o tamanho definido pelo sistema. |
|
-w |
Salve os pacotes capturados em um arquivo em vez de exibi-los no console. |
|
-i |
Interface de rede a ser monitorada. |
|
-vvv |
Exibe dados detalhados da interação. |
|
expression |
Expressão de filtro. Aceita as seguintes primitivas:
|
Consulte a página man do tcpdump para visualizar todos os parâmetros e formas de uso.
Exemplos
Os exemplos a seguir mostram comandos comuns do tcpdump e suas respectivas saídas.
-
Capturar pacotes de uma interface e porta específicas
Capture pacotes na interface eth0, porta 22, e exiba-os no console:
tcpdump -s 0 -i eth0 port 22Durante a captura, os dados dos pacotes são exibidos em tempo real. Pressione
Ctrl+Cpara interromper. Um resumo será exibido após o término da captura.tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 20:24:59.414951 IP 172.xx.xx.226.ssh > 42.xx.xx.107.43414: Flags [P.], seq 442372:442536, ack 53, win 141, length 164 20:24:59.415002 IP 172.xx.xx.226.ssh > 42.xx.xx.107.43414: Flags [P.], seq 442536:442700, ack 53, win 141, length 164 20:24:59.415052 IP 172.xx.xx.226.ssh > 42.xx.xx.107.43414: Flags [P.], seq 442700:442864, ack 53, win 141, length 164 20:24:59.415103 IP 172.xx.xx.226.ssh > 42.xx.xx.107.43414: Flags [P.], seq 442864:443028, ack 53, win 141, length 164 -
Capturar pacotes com saída detalhada
Capture pacotes na interface eth1, porta 22, com saída detalhada:
tcpdump -s 0 -i eth1 -vvv port 22Os dados dos pacotes aparecem em tempo real durante a execução. Pressione
Ctrl+Cpara parar. Um resumo é exibido ao final da captura.tcpdump: listening on eth1, link-type EN10MB (Ethernet), snapshot length 262144 bytes 15:45:54.817920 IP (tos 0x10, ttl 64, id 61958, offset 0, flags [DF], proto TCP (6), length 172) iZr1ulp9t4u4a8Z.ssh > 123.xxx.xxx.74.2057: Flags [P.], cksum 0x80cd (incorrect -> 0x2ee9), seq 890113592:890113724, ack 2345612678, win 592, length 132 15:45:54.894215 IP (tos 0x14, ttl 116, id 16850, offset 0, flags [DF], proto TCP (6), length 40) 123.139.88.74.2057 > iZr1ulp9t4u4a8Z.ssh: Flags [.], cksum 0x1e6a (correct), seq 1, ack 132, win 1021, length 0 15:45:54.913403 IP (tos 0x10, ttl 64, id 61959, offset 0, flags [DF], proto TCP (6), length 172) iZr1ulp9t4u4a8Z.ssh > 123.xxx.xxx.74.2057: Flags [P.], cksum 0x80cd (incorrect -> 0x1105), seq 132:264, ack 1, win 592, length 132 15:45:54.988025 IP (tos 0x10, ttl 64, id 61960, offset 0, flags [DF], proto TCP (6), length 236) iZr1ulp9t4u4a8Z.ssh > 123.xxx.xxx.74.2057: Flags [P.], cksum 0x810d (incorrect -> 0x98d1), seq 264:460, ack 1, win 592, length 196 -
Capturar pacotes de um protocolo específico para um IP específico
Capture pacotes ICMP na interface eth0 destinados a um IP específico:
tcpdump -s 0 -i eth0 -vvv dst 123.xxx.xxx.74 and icmpA captura exibe os dados em tempo real. Para encerrar, pressione
Ctrl+C. O resumo aparecerá logo em seguida.tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes 15:43:29.116058 IP (tos 0x14, ttl 64, id 26185, offset 0, flags [none], proto ICMP (1), length 60) iZr1ulp9t4u4a8Z > 123.xxx.xxx.74: ICMP echo reply, id 2048, seq 65, length 40 15:43:30.129600 IP (tos 0x14, ttl 64, id 27043, offset 0, flags [none], proto ICMP (1), length 60) iZr1ulp9t4u4a8Z > 123.xxx.xxx.74: ICMP echo reply, id 2048, seq 66, length 40 15:43:31.141576 IP (tos 0x14, ttl 64, id 27201, offset 0, flags [none], proto ICMP (1), length 60) iZr1ulp9t4u4a8Z > 123.xxx.xxx.74: ICMP echo reply, id 2048, seq 67, length 40 15:43:32.153912 IP (tos 0x14, ttl 64, id 27802, offset 0, flags [none], proto ICMP (1), length 60) iZr1ulp9t4u4a8Z > 123.xxx.xxx.74: ICMP echo reply, id 2048, seq 68, length 40 -
Capturar pacotes e salve em arquivo
Capture pacotes em todas as interfaces e salve-os em um arquivo:
tcpdump -i any -s 0 -w test.capSaída de exemplo indicando que a captura está em andamento:
tcpdump: data link type LINUX_SLL2 tcpdump: listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytesPressione
Ctrl+Cpara parar. Um resumo será exibido após o término da captura.^C97 packets captured 127 packets received by filter 0 packets dropped by kernel -
Visualize um arquivo de captura
Visualize o conteúdo de um arquivo de captura do tcpdump:
tcpdump -r test.cap
Usar a ferramenta Wireshark em instâncias Windows
O Wireshark oferece uma interface gráfica para capturar e analisar pacotes de rede em instâncias Windows.
Procedimento
-
Instale e inicie o Wireshark.
Baixe o pacote de instalação no site oficial do Wireshark e instale-o.
Selecione Capture>Options.
-
Na página Wireshark Capture Options, selecione uma interface de rede pelo nome ou endereço IP e clique em Start.

Após capturar pacotes suficientes, selecione Capture > Stop.
Selecione File>Save para salvar os pacotes capturados.
(Opcional) Para visualizar um arquivo de captura, selecione File > Open e escolha o arquivo desejado.
Consulte o site oficial do Wireshark para obter guias de uso e métodos de análise de dados.