Alterando dinamicamente o servidor proxy para todo o tráfego de saída

Alterando dinamicamente o servidor proxy para todo o tráfego de saída

Tenho três servidores proxy em minha faculdade, todos conectados a três provedores de serviços diferentes. Em diferentes instantes, diferentes proxies fornecem velocidades diferentes (dependendo do número de usuários que usam esse proxy naquele instante). Sinto que alterar a configuração do servidor proxy no navegador (ou em qualquer outro aplicativo de rede) em momentos diferentes consome muito tempo. Quero escrever um script que possa alterar dinamicamente o servidor proxy usado por todos os meus aplicativos de rede em diferentes instantes de tempo, fazendo algum tipo de teste.

Não consigo começar com isso. Alguém pode me dar uma ideia para que eu possa implementá-la.

Responder1

Você pode usarPROXY.PACouWPAD.DAT

é apenas um JavaScript, você pode hospedar esse arquivo em qualquer servidor web da sua intranet e configurar no lado do cliente http://webserever-ip/proxy.pac. usando este script você pode fazerbalanceamento de cargacom seus três proxy. você também pode dividir o tráfego usando intervalos de IP neste script java. Existem vários recursos, como ignorar a intranet ou qualquer site.

Você pode configurar este script automaticamente em todos os seus clientes, as opções abaixo são necessárias para o mesmo

  • se você estiver usando a rede de domínio, defina Proxy.pac usando a Política de Grupo
  • Você pode definir WPAD.DAT usando DHCP
  • DNS

Responder2

Para configurar o proxy a partir de um único ponto, você pode configurar um roteador que reescreva o endereço de destino usando uma regra iptables como

iptables -t nat -A PREROUTING -p tcp -d VIRTUAL_PROXY_IP --dport 80 -j NETMAP --to CURRENT_PROXY_IP

Todos os aplicativos e navegadores usariam VIRTUAL_PROXY_IP como proxy, que você precisaria rotear por meio deste roteador especial. Você altera a regra conforme necessário para alterar CURRENT_PROXY_IP.

A vantagem dessa abordagem é que ela é rápida de configurar e fácil de administrar. A desvantagem é que é provável que haja alguma interrupção para alguns usuários que tenham sessões abertas (dependendo do tipo de sessões e do tipo de proxies upstream). Você também deve escrever seu próprio script para alterar os proxies ou alterá-los manualmente.

Uma solução melhor, sugerida pelo comentário de sr_, seria configurar um balanceador de carga. Considere LVS ouHAProxy

Responder3

Supondo que você esteja usando o squidDois proxies irmãos compartilhando o mesmo nome visível parecem funcionar para mim. Eu tenho 2 configurados com os nomes proxy1 e proxy2 respectivamente. O nome do host visível é proxy. Tudo o que você precisa fazer nesse ponto é criar um registro A no DNS para o nome proxy com os endereços IP para proxy1 e proxy1. Contanto que eles estejam configurados como irmãos no seu squid.conf. Dê uma olhada aquihttp://horms.net/projects/redundant_linux_paper/relacionado/squid/hierarchies/concepts.html

Responder4

Solução Simples

Configure um alias de host para os servidores proxy em seu arquivo de hosts locais, como

192.168.1.1 chosenproxy #192.168.1.2 chosenproxy #192.168.1.3 chosenproxy

Agora configure todos os aplicativos para usar este aliashttp://chosenproxy:8080

Para então experimentar servidores diferentes, basta editar o endereço IP no arquivo hosts.

Solução Portuária Gerenciável

Se você também precisar alterar a porta, use um dos programas proxy leves, como o polipo. O Polipo é executado por padrão na porta 8123, portanto configure cada aplicativo para se conectar via polipo sendo executado localmente, por exemplo, usando a configuraçãohttp://localhost:8123

Em seguida, para tentar um servidor proxy diferente, altere o arquivo de configuração do polipo ( /etc/polipo/config) para especificar o servidor proxy pai e o número da porta corretos e reinicie o polipo para ativar a alteração.

informação relacionada