
Usamos un servicio que nos asigna una cantidad X de solicitudes por IP y nos permite configurar 5 IP con ese límite (lo sé... parece estúpido que no puedan aumentar el límite 5 veces en una IP).
Imagina que tengo una máquina Linux con la siguiente dirección en Internet: 66.249.90.104 - esa es una IP de Google y no mía... así que siéntete libre de intentar hackearla :)
Configuré apache+mod_proxy como proxy de reenvío (ProxyRequests activado). es decir, puede configurar Firefox para que utilice 66.249.90.104:8080 como proxy y todo el tráfico de Firefox saldrá como 66.249.90.104.
Hasta ahora, todo bien.
Problema:
ahora agrego más interfaces de alias para que el total se vea así:
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
Ejecuto apache+mod_proxy (instancia única de apache) que se vincula a todas las interfaces, pero no importa a qué dirección me conecto para usar el proxy de reenvío, todo el tráfico sale a Internet como 66.249.90.104
También intenté ejecutar 5 apaches diferentes, cada uno vinculado solo a su propia interfaz, pero aún así envía la solicitud saliente a través de 66.249.90.104.
Esperaba que funcionara de la siguiente manera:
me conecto a 66.249.90.108 y hago una solicitud de proxy, y sale como 66.249.90.108.
Me conecto a 66.249.90.107 y hago una solicitud de proxy, y sale como 66.249.90.107.
etc.
¿Alguien más ha tenido que lidiar con este problema? La solución alternativa sería simplemente ejecutar Apache en 5 cajas separadas, pero preferiría que todo funcionara en una sola caja.
¡Gracias!
Respuesta1
Parece que mod_proxy no tiene una opción para seleccionar la IP de origen cuando abre el socket. Sin embargo, puede utilizar iptables para el tráfico SNAT de un usuario a un grupo de direcciones.
iptables -A POSTROUTING -m owner --uid-owner httpd -j SNAT --to-source 66.249.90.104-66.249.90.108
IIRC se distribuirá a través del grupo con cada conexión asignada, por lo que las cosas deben dividirse equitativamente. Si realmente necesita controlar qué solicitudes van a dónde, puede intentar ejecutar varias instancias de Apache con diferentes usuarios y hacerlas coincidir con reglas independientes.
Respuesta2
Eche un vistazo al CÓMO de control de tráfico y enrutamiento avanzado de Linux, en particular enestepágina. Quizás desee dejar el enrutamiento al kernel, que lo sabe, y no a Apache, que se ocupa del nivel de "aplicación".