Cambiar dinámicamente el servidor proxy para todo el tráfico saliente

Cambiar dinámicamente el servidor proxy para todo el tráfico saliente

Tengo tres servidores proxy en mi universidad, todos ellos están conectados a tres proveedores de servicios diferentes. En diferentes instantes de tiempo, diferentes proxies dan diferentes velocidades (dependiendo de la cantidad de usuarios que usan ese proxy en ese instante de tiempo). Siento que cambiar la configuración del servidor proxy en el navegador (o en cualquier otra aplicación de red) en diferentes momentos requiere mucho tiempo. Quiero escribir un script que pueda cambiar el servidor proxy utilizado por todas mis aplicaciones de red en diferentes instantes de forma dinámica mediante algún tipo de prueba.

No puedo empezar con eso. ¿Alguien puede darme alguna idea para poder implementarla?

Respuesta1

Puedes usarPROXY.PACoWPAD.DAT

Es solo un JavaScript, puede alojar este archivo en cualquier servidor web de su intranet y configurarlo en el lado del cliente http://webserever-ip/proxy.pac. usando este script puedes hacerbalanceo de cargacon tus tres apoderados. También puede dividir el tráfico utilizando rangos de IP en este script Java, hay múltiples funciones como omitir la intranet o cualquier sitio web.

Puede configurar este script automáticamente en todos sus clientes, las siguientes opciones son necesarias para el mismo

  • Si está utilizando una red de dominio, configure Proxy.pac usando la política de grupo
  • Puede configurar WPAD.DAT usando DHCP
  • DNS

Respuesta2

Para configurar el proxy desde un único punto, puede configurar un enrutador que reescriba la dirección de destino utilizando una regla de iptables como

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

Todas las aplicaciones y navegadores utilizarían VIRTUAL_PROXY_IP como proxy, que deberá enrutar a través de este enrutador especial. Cambia la regla según sea necesario para cambiar CURRENT_PROXY_IP.

La ventaja de este enfoque es que es rápido de configurar y fácil de administrar. La desventaja es que es probable que se produzcan algunas interrupciones para algunos usuarios que tienen sesiones abiertas (dependiendo del tipo de sesiones y del tipo de servidores proxy ascendentes). También debe escribir su propio script para cambiar los servidores proxy o cambiarlos manualmente.

Una mejor solución, sugerida por el comentario de sr_, sería configurar un equilibrador de carga. Considere LVS oHAProxy

Respuesta3

Suponiendo que estás usando calamaresDos representantes hermanos que comparten el mismo nombre visible parecen funcionar para mí. Tengo 2 configurados con los nombres proxy1 y proxy2 respectivamente. El nombre de host visible es proxy. Todo lo que debe hacer en ese momento es crear un registro A en dns para el nombre del proxy con las direcciones IP para proxy1 y proxy1. Siempre y cuando estén configurados como hermanos en tu squid.conf. Echa un vistazo aquíhttp://horms.net/projects/redundant_linux_paper/ related/squid/hierarchies/concepts.html

Respuesta4

Solución simple

Configure un alias de host para los servidores proxy en su archivo de hosts local, como

192.168.1.1 chosenproxy #192.168.1.2 chosenproxy #192.168.1.3 chosenproxy

Ahora configure todas las aplicaciones para usar este alias.http://chosenproxy:8080

Para luego probar diferentes servidores, simplemente edite la dirección IP en el archivo de hosts.

Solución de puerto manejable

Si también necesita cambiar el puerto, utilice uno de los programas proxy ligeros, como polipo. Polipo se ejecuta de forma predeterminada en el puerto 8123, así que configure cada aplicación para que se conecte a través de polipo ejecutándose localmente, por ejemplo, usando la configuraciónhttp://localhost:8123

Luego, para probar con un servidor proxy diferente, cambie el archivo de configuración de polipo ( /etc/polipo/config) para especificar el servidor proxy principal y el número de puerto correctos, y reinicie polipo para activar el cambio.

información relacionada