Por que os pacotes enviados pelo tcpreplay não aparecem no servidor?

Por que os pacotes enviados pelo tcpreplay não aparecem no servidor?

Estou tentando reproduzir o arquivo pcap no servidor HTTP. Antes disso, estou tentando verificar manualmente se estou usando o tcpreplay corretamente.

Comecei netcat -l 12345a ouvir em uma porta específica. Vamos chamá-lo de "servidor". Em outra máquina executei tcpdumppara 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 tsharke 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.

informação relacionada