Atualmente estou usando um balanceador de carga de hardware Cisco CSS. Do ponto de vista do servidor web, o endereço IP do usuário final é carimbado em todo o tráfego como se o balanceador de carga nem estivesse presente.
Agora estou procurando substitutos de software como HAProxy, Pound ou AWS ELB. Todos eles têm uma coisa em comum: o servidor web recebe o IP do balanceador de carga em vez do IP do usuário final. Seu sistema deve estar ciente disso e acessar um cabeçalho X-Forwarded-For se desejar o IP do usuário final ou, no caso de SSL, descriptografar e criptografar novamente o tráfego.
Então minha pergunta é: por que isso acontece? Por que os balanceadores de carga de software não se comportam da mesma maneira que os balanceadores de carga de hardware e apenas transmitem os pacotes TCP como se fossem um simples dispositivo de rede?
Responder1
Como esses softwares funcionam na camada 7 (Aplicação) doModelo OSI, existem soluções de software que funcionam na camada 3/4 comoEU CONTRA.
Quanto ao seu problema, a solução é bastante simples se você estiver usando o Apache como servidor web, basta instalarmod_rpaf. Este módulo permite registrar diretamente o IP fornecido pelo cabeçalho X-Forwarded-For.
Responder2
Hum, a resposta curta é "eles podem", então não tenho certeza se a pergunta pode ser respondida.
Eu arriscaria um palpite, porém, que a diferença entre as soluções de hardware e software é que a caixa de hardware foi projetada para funcionar como um roteador - ou seja, ela verá todo o tráfego do cliente para o servidor final e pode massageie-o em ambas as direções de acordo - enquanto as soluções de software estão em caixas que não estão roteando e, portanto, reescreva o endereço do cliente como uma maneira barata e alegre de forçar o tráfego de retorno a voltar através deles para massagem.
Responder3
Os balanceadores de carga de software funcionam em uma camada de pilha TCP superior. Você deve usar iptables
para obter o mesmo efeito. Um exemplo pode ser encontradoaqui.
Responder4
Eles podem, não é suportado por padrão no kernel. Geralmente é chamado (acredito) de falsificação de endereço de origem. Se você pesquisar no Google "source spoofing haproxy", obterá alguns resultados.
Mais notavelmente.
http://blog.loadbalancer.org/configure-haproxy-with-tproxy-kernel-for-full-transparent-proxy/