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

1

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

Eu iniciei netcat -l 12345 para escutar na porta específica. Vamos chamá-lo de "servidor" Em outra máquina, execute tcpdump para capturar todo o tráfego com destino para a porta específica no arquivo dummy.pcap . Depois disso eu executo o netcat na máquina cliente, conecto ao "servidor" e envio várias mensagens. Eu verifiquei o resultado pcap com tshark e isso mostra que os pacotes foram capturados.

Eu iniciei o netcat no servidor novamente e, no cliente, comecei a exibir:

tcpreplay -d 5 -i eth0 -t dummy.pcap

Mas nada aparece no console do netcat no servidor. Eu tentei executar o tcpdump em "servidor" e mostra que os pacotes foram recebidos.

Por que os pacotes não aparecem no console do netcat?

    
por Nikolai Golub 29.10.2014 / 15:57

1 resposta

2

O TCPreplay reproduzirá o tráfego em um servidor, mas na verdade não "se comunica" com os servidores devido à natureza do protocolo TCP. Então basicamente seu servidor está recebendo pacotes TCP mas nunca estabelecendo uma conexão TCP real porque o replay não está completando o aperto de mão apropriado. É por isso que nenhuma sessão TCP está aparecendo no seu netcat.

Na minha experiência, esse tipo de tcpdump é útil apenas para análise e, se você estiver preocupado em reproduzir uma sequência de comandos / dados, precisará encontrar uma ferramenta específica para seu protocolo (no meu caso, escrever um cliente personalizado) .

Veja Como gravar e repetir interações http?

A partir de wiki :

Enviando tráfego para um servidor

Problema

Você tem uma captura de pcap e gostaria de repetir esse tráfego em outro servidor.

Solução

Primeiro, isso só funcionará com o tráfego ICMP e UDP. O Tcpreplay não suporta o envio de tráfego TCP em um servidor porque ele não sincroniza os números Syn / Ack no fluxo TCP.

Dito isso, você precisará alterar os endereços IP e MAC de destino para que correspondam aos do servidor de destino. Nesse caso, vamos assumir que o IP do servidor de destino é 10.10.1.1 e seu endereço MAC é 00: 01: 02: 03: 04: 05.

E suas FAQ :

=== Considera 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 e-mail seria exemplos comuns), então provavelmente não. O maior problema é que o tcpreplay não entende o estado dos protocolos comuns como o TCP. Isso significa que não é possível sincronizar Syn / Ack para criar sessões TCP válidas.

    
por 29.10.2014 / 17:16