Proxy Transparente

La configuración normal de un proxy exige que cada navegador esté configurado para utilizar dicho proxy como salida. Pero claro, por una lado es un engorro tener que configurar uno a uno todos los equipos de la red y por otro, tenemos la posibilidad de que la configuración TCP/IP le da salida a través de una pasarela.

 

Si a pesar de todo queremos esta configuración, tendremos que decirle al navegador que utilice como proxy el equipo que alberga Squid y el puerto el 3128. El puerto se puede cambiar en el fichero de configuración. Otro puerto que se suele usar para proxy es el 8080, pero ¿para qué cambiarlo?

Como queremos evitar tener que configurar los navegadores cliente y queremos evitar posibles puertas traseras de salida vamos a configurar un proxy transparente.

¿Qué es un proxy transparente? Es un proxy que no necesita ninguna configuración especial en los clientes. Se denomina transparente porque el cliente en realidad no sabe que lo está usando, es transparente para él.

Cómo configurar el proxy transparente, pues en primer lugar tenemos que configurar el cortafuegos para que reenvíe todas las peticiones que se hagan a un puerto 80 hacia el puerto 3128 que utiliza Squid. Es decir, capturamos todas las peticiones que se hagan a un servidor http y se las enviamos a Squid para que él se encarge del resto.

 

Estas son las reglas de iptables. La primera para redrigir las peticiones al proxy la siguiente para rechazar el resto de los reenvíos.

 

 

Si queremos que las páginas web pasen por el proxy con squid que está en 192.168.5.254, pero el resto siga con acceso normal, pondríamos:

 

iptables -t nat -A PREROUTING -i   eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination   192.168.5.254:3128

 

Si el equipo con squid está en la misma pasarela entonces podemos poner:

 

 

iptables -t nat -A PREROUTING -i   eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

 

 

Cuidado, de las opciones anteriores, sólo debemos escoger una de ellas.

 

Si sólo queremos salida para visitar páginas web, entonces pondremos:

 

Primero garantizamos el tráfico DNS:

 

iptables -A FORWARD -p tcp -m tcp   --dport 53 -j ACCEPTiptables -A FORWARD -p udp -m udp   --dport 53 -j ACCEPTiptables -A FORWARD -p tcp -m tcp   --sport 53 -j ACCEPTiptables -A FORWARD -p udp -m udp   --sport 53 -j ACCEPT

 

En el siguiente caso suponemos que el equipo con squid está en 192.168.5.254:

 

iptables -A PREROUTING -i eth1 -p   tcp -m tcp --dport 80 -j DNAT --to-destination   192.168.5.254:3128iptables -t nat -A FORWARD -j   REJECT --reject-with icmp-port-unreachable

 

 

Si el equipo con squid está en la misma pasarela entonces podemos poner:

 

iptables -t nat -A PREROUTING -i   eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128iptables -A FORWARD -j REJECT   --reject-with icmp-port-unreachable