it-swarm-es.com

Proxy transparente con calamar / iptables

Estoy tratando de forzar a una PC a usar un proxy de calamar transparente remoto al volver a enrutar todos los paquetes salientes que se dirigieron al puerto 80 al proxy de calamar, aunque tengo alguna dificultad con la línea de comandos exactos IPTables.

El MINI-HOWTO AT http://tldp.org/howto/transparentproxy-6.html tiene algunos buenos enlaces para los dos casos "extremos": una configuración de la máquina de tres (o más) que tiene un Cliente, enrutador y proxy, y una sola configuración de la máquina donde los tres en la misma máquina.

En mi configuración, tengo una máquina (llamada FOO), con una IP de 192.168.1.100. Normalmente, se conecta a Internet a través de un enrutador a 192.168.1.1, que sí NAT y tiene una IP pública. En este caso, Foo también está conectado a través de un túnel OpenVPN (la dirección del túnel de FOO es 10.8.0.5/6) a una máquina llamada Barra (dirección remota 10.8.0.1), que se ejecuta Squid. Quiero usar IPTables para enrutar todos los paquetes salientes de Foo se dirigió al Puerto 3128.

No he podido averiguar qué cadena y qué objetivos usar; Todos mis intentos han sido ilegales (-a salida sin NAT y ----destino) o simplemente no se realizan buenas (varias combinaciones de -A Prerecrenamiento, producción, postrauting, etc.).

Editar: Lo más cercano que creo que tengo fue esto:

iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to 10.8.0.1:3128

Ahora, ningún tráfico de puerto 80 llega a ninguna parte, pero al menos se está procesando. Usando -Un PREROUTING falla ... ¡tal vez porque los paquetes se originan localmente en lugar de ser enrutados a través de la máquina?

3
Mikeage

Si te entiendo correctamente, lo que quiere hacer, no se va a manejar simplemente configurando IPTables. El objetivo de REDIR solo se puede utilizar para dirigir los procesos que se ejecutan en el sistema local. Creo que el intento de usar un objetivo DNAT para reenviar al cuadro Squid remoto eliminaría parte de la información que la caja de calamar remota debe manejar correctamente la solicitud

Si me permites adivinar un poco. Creo que está tratando de dejar la puerta de enlace predeterminada como 192.168.1.1 en su host y luego envíe su tráfico de puerto 80 a través de la VPN a la derecha.

El calamar remoto necesita alguna configuración para que realmente pueda actuar como un proxy transparente. Si puede configurar la redirección correcta de IPTables en el host de Squid, y el host remoto está en la ruta de la red, entonces es posible utilizar algún enrutamiento avanzado para reenviar todas las solicitudes de puerto 80 en todo el VPN.

PD Si estoy entendiendo sus necesidades, agregue correctamente un comentario, puedo actualizar mi respuesta con más detalles sobre cómo configurar el enrutamiento.

3
Zoredache

Ve a Foo y haz esto: Telnet 10.8.0.1 3128

¿Funciona? En ese caso su VPN funciona!

Puedes hacer un

GET / HTTP/1.1
Host: www.heise.de

¿Mostrará una página? ¡Entonces Squid está configurado para trabajar como proxy transparente!

En ese caso, las reglas simples de su enlace deben funcionar:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 10.8.0.1:3128
iptables -t nat -A POSTROUTING -o eth0 -s local-network -d 10.8.0.1 -j SNAT --to iptables-box

(Foo es la caja de IPTables en la que está trabajando)

¿Esto funciona?

1
Christian

aquí puede ver un breve artículo sobre el proxy transparente con Squid e Iptables http://www.linuxconfig.net/2009/11/14/creating-transparent-proxy-with-squid -Y-IPTables.html

0
hgevs