Port Mirroring usando iptables - copie todo o tráfego entre nginx em: 80 e Apache em: 8080

2

Eu tenho o nginx rodando na porta 80 e o Apache rodando na porta 8080

Eu quero transferir todo o tráfego para o nginx e para o Apache de forma assíncrona, ou seja, o desempenho de um servidor não dependerá dos outros. A razão pela qual o nginx servirá ao meu site e o Apache será usado para executar análises no tráfego.

Eu tentei a solução mencionada na pergunta abaixo

Espelhamento de portas do iptables

sudo iptables -A PREROUTING -t mangle -p tcp ! -s 127.0.0.1/32 --dport 80 -j TEE --gateway 127.0.0.1

e

sudo iptables -A POSTROUTING -t nat -p tcp -s 127.0.0.1/32 --dport 8080 -j SNAT --to 127.0.0.1:8080

A solução menciona o uso de DNAT com POSTROUTING na tabela NAT, mas não é permitido fazer isso. O DNAT só é permitido em PREROUTING / OUTPUT.

Estou usando o iptables v1.4.10 no Ubuntu 11.04

    
por Rishabh 08.02.2012 / 11:06

1 resposta

3

Estou lutando para ver como isso pode funcionar na prática. O uso habitual do espelhamento de porta é monitorar os pacotes que passam por uma interface específica sem participar ativamente do protocolo de rede.

Passar os pacotes TCP para os aplicativos nas portas 80 e 8080 exige que haja dois pontos de extremidade TCP de destino conversando com um ponto de extremidade TCP de origem único. Isso só pode acabar em fracasso. Mesmo se você pudesse organizar que os valores SYN, ACK e outros fossem sincronizados entre as pilhas tcp em 80 e 8080, então os aplicativos ainda produziriam a saída e, portanto, o solicitante receberia dados duplos novamente.

Se você quiser usar o espelhamento de portas, precisará usar um aplicativo que faça análises de pacotes de baixo nível. Alternativamente, você provavelmente precisará fazer alguma forma de acesso à web.Análise de log para analisar seu tráfego sendo atendido pelo nginx.

    
por 10.02.2012 / 18:40