
Estou tentando reproduzir o arquivo pcap no servidor HTTP. Antes disso, estou tentando verificar manualmente se estou usando o tcpreplay corretamente.
Comecei netcat -l 12345
a ouvir em uma porta específica. Vamos chamá-lo de "servidor". Em outra máquina executei tcpdump
para capturar todo o tráfego com destino à porta específica no arquivo dummy.pcap
. Depois disso executo o netcat na máquina cliente, conecto-me ao "servidor" e envio diversas mensagens. Verifiquei o resultado do pcap tshark
e mostra que os pacotes foram capturados.
Iniciei o netcat no servidor novamente e no cliente iniciei o tcpreplay:
tcpreplay -d 5 -i eth0 -t dummy.pcap
Mas nada aparece no console do netcat no servidor. Tentei rodar o tcpdump no "servidor" e mostra que os pacotes foram recebidos.
Por que os pacotes não aparecem no console do netcat?
Responder1
O TCPreplay reproduzirá o tráfego em um servidor, mas na verdade não se 'comunica' com os servidores devido à natureza do protocolo TCP. Basicamente, seu servidor está recebendo pacotes TCP, mas nunca estabelece uma conexão TCP real porque a repetição não está completando o handshake adequado. É por isso que nenhuma sessão TCP está aparecendo no seu netcat.
Na minha experiência, esse tipo de tcpdump só é útil para análise e se você estiver preocupado em reproduzir uma sequência de comandos/dados, precisará encontrar uma ferramenta específica para o seu protocolo (no meu caso, envolveu escrever um cliente personalizado).
VerComo gravar e reproduzir interações http?
Do tcpreplaywiki:
Enviando tráfego para um servidor
Problema
Você tem uma captura pcap e gostaria de reproduzir esse tráfego em outro servidor.
Solução
Primeiro, isso só funcionará com tráfego ICMP e UDP. Tcpreplay não suporta o envio de tráfego TCP em um servidor porque não sincroniza números Syn/Ack no fluxo TCP.
Dito isto, você precisará alterar os endereços IP e MAC de destino para corresponder aos do servidor de destino. Neste caso, assumiremos que o IP do servidor de destino é 10.10.1.1 e seu endereço MAC é 00:01:02:03:04:05.
E o seuPerguntas frequentes:
=== O tcpreplay suporta o envio de tráfego para um servidor? === Se por ''servidor'' você quer dizer um daemon (Unix) ou serviço (Windows) que escuta em uma porta (um servidor web ou de email seriam exemplos comuns), então provavelmente não. O maior problema é que o tcpreplay não entende o estado de protocolos comuns como o TCP. Isso significa que não é possível sincronizar Syn/Acks para criar sessões TCP válidas.