Como posso configurar o apache + mod_proxy, então quando eu me conecto ao mod_proxy na interface X, ele envia o tráfego para aquela interface específica?

2

Usamos um serviço que nos atribui um número X de solicitações por IP e nos permite configurar 5 IPs com um limite (eu sei ... parece estúpido que eles não pudessem apenas aumentar o limite de 5x em um IP).

Finja que eu tenho uma caixa linux com o seguinte endereço na internet: 66.249.90.104 - que é um IP do Google e não meu ... então sinta-se à vontade para tentar invadir:}

Eu configurei o apache + mod_proxy como um proxy de encaminhamento (ProxyRequests On). isto é, você pode configurar o firefox para usar 66.249.90.104:8080 como proxy e todo o tráfego do firefox será 66.249.90.104.

Até aí tudo bem.

Problema:
Agora adiciono mais interfaces de alias para que o total fique assim:

eth0: 66.249.90.104
eth0: 1 66.249.90.105
eth0: 2 66.249.90.106
eth0: 3 66.249.90.107
eth0: 4 66.249.90.108

Eu executo o apache + mod_proxy (instância única do apache) que se liga a todas as interfaces, mas não importa qual endereço eu me conecte para usar o proxy de encaminhamento, todo o tráfego vai para a Internet como 66.249.90.104

Eu também tentei executar 5 diferentes apaches, cada um ligando apenas a sua própria interface, mas isso ainda envia o pedido de saída através de 66.249.90.104.

Eu esperava que funcionasse da seguinte forma:
Eu me conecto a 66.249.90.108 e faço um pedido de proxy, e ele sai como 66.249.90.108. Eu conecto a 66.249.90.107 e faço um pedido de proxy, e ele sai como 66.249.90.107. etc.

Alguém mais teve que lidar com esse problema? A solução alternativa seria simplesmente executar o apache em 5 caixas separadas, mas eu preferiria que todas funcionassem em uma caixa.

Obrigado!

    
por aspitzer 18.06.2010 / 02:04

2 respostas

1

Parece que o mod_proxy não tem uma opção para selecionar IP de origem quando ele abre o socket. No entanto, você pode usar o iptables para o tráfego SNAT de um usuário para um pool de endereços.

iptables -A POSTROUTING -m owner --uid-owner httpd -j SNAT --to-source 66.249.90.104-66.249.90.108

IIRC distribuirá através do pool com cada conexão sendo mapeada, então as coisas devem ser divididas igualmente. Se você realmente precisa controlar quais solicitações vão para onde, você pode tentar executar várias instâncias de apache em diferentes usuários e combinar com regras separadas.

    
por 17.07.2010 / 09:13
0

Dê uma olhada no HOWTO de controle avançado de rotas e tráfego do Linux, em particular em este

    
por 21.09.2010 / 22:21