Duplicar o tráfego TCP de entrada no Debian Squeeze

6

Eu tenho que testar um servidor homebrew que aceita muito tráfego TCP de entrada em uma única porta. O protocolo também é homebrew.

Para fins de teste, gostaria de enviar este tráfego para ambos: - para o servidor de produção (digamos, escutando na porta 12345) - para o servidor de teste (digamos, escutando na porta 23456)

Os aplicativos de meus clientes são "burros": eles nunca leem dados de volta, e o servidor nunca responde de qualquer maneira, meu servidor só aceita conexões e faz cálculos estatísticos e armazenamento / encaminhamento / serviço tanto de dados brutos quanto calculados.

Na verdade, os aplicativos e o hardware do cliente são tão simples que não posso dizer aos clientes para enviarem seus fluxos para os dois servidores ... E usar clientes "falsos" não é bom o suficiente.

Qual poderia ser a solução mais simples? Naturalmente, posso escrever um aplicativo intermediário que apenas copie os dados recebidos e os envie de volta ao servidor de testes, fingindo ser o cliente.

Eu tenho um único servidor executando o Squeeze e tenho total controle sobre ele.

Agradecemos antecipadamente por suas respostas.

    
por Erwan Queffélec 09.09.2011 / 01:53

2 respostas

7

Se você não quiser escrever nada, talvez o netcat esteja ouvindo em uma porta, canalizando para o tee e indo para um par de pipes nomeados, que são por sua vez netcat para as portas do servidor de teste e prod?

Algo como:

mkfifo /tmp/prodpipe
mkfifo /tmp/testpipe
nc -l 9999 -k | tee /tmp/prodpipe | tee /tmp/testpipe

E, em terminais separados:

cat /tmp/prodpipe | nc 127.0.0.1 12345

e

cat /tmp/testpipe | nc 127.0.0.1 23456

E o seu cliente expulsa na porta 9999.

    
por 09.09.2011 / 02:17
1

Se o seu tráfego é UDP, isso deve ser muito fácil de fazer com o iptables.

Um TEE de destino para iptables está disponível, o que basicamente permite que você envie uma cópia do pacote para um destino diferente.

Não é construído no kernel por padrão, mas a fonte e as ferramentas estão disponíveis no add-ons do xtables -source package.

    
por 09.09.2011 / 02:18