He estado revisando todos los preguntas del foro relacionadas con iptables+squid transparente para intentar que funcione, y parece que todos tenemos problemas parecidos.
Quiero poner en el foro una prueba que he realizado para ver si damos mas luz al problema y podemos solucinarlo alguno de nosotros.
En principio parece que tanto iptables como squid nos funcionan a todos de forma correcta(se ha comprobado expliciamente), pero sin habilitar la funcion de transparencia, es decir, sin la siguiente orden dentro del script de iptables:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
Haciendo un seguimiento con cualquier sniffer(iptraf o tcpdump) podemos observar que la información fluye correctamente por los dos interfaces:
- Con iptables y sin habilitar proxy(sin modificar la opcion de proxy del navegador cliente):
Tanto en eth0 como en eth1 se ven los distintos puertos por lo que fluye la informacion(80, 53, puertos superiores relacionados, etc.), y son los mismos en ambas interfaces(bueno, los relacionados no, claro).
- Con iptables y habilitando proxy(modificando la opcion de proxy del navegador cliente):
Aqui podemos comprobar como ya cambian los puertos que se abren en cada interfaz:
eth0: se ver como fluye la informacion en los puetos indicados anteriomente(80, 53, puertos superiores relacionados,etc)
eth1: al ser esta la interfaz interna de la red, es por la que se comunican los navegados de los equipos clientes, por lo que aqui solo se ven en funcionamiento el puerto 3128 (squid) y los puertos superiores relacionados.
Hasta ahora bien.
Ahora, para comprobar que el iptables actual no este "fastidiando" al squid transparente, creo un nuevo script para iptables muy simple, para ver que ocurre en los interfaces. El script es el siguiente:
#----Limpiamos todas las reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
#----Damos inet a la LAN
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
#----Politicas por defecto ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
Y nos llevamos una sorpresa cuando volvemos a revisar la comunicacion en las interfaces(iptraf), y vemos que en ambas interfaces la comunicacion fluye por los mismos puertos, el 80 y los puertos superiores relacionados, en vez de ver que en la eth1 solo deberiamos tener al puerto 3128 y sus relacionados.
Para intentar ver que esta pasando, añado una linea al ultimo bloque para dropear al puerto 80, pero antes de la linea del PREROUTING, por tanto el bloque se queda asi:
#Proxy transparente
iptables -A FORWARD -i eth1 -p tcp --dport 80 -j DROP
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
O sea que el firewall debería denegar las peticiones del puerto 80, y tampoco se llegaria a la segunda línea de PREROUTING, pero sin embargo navegamos, y al volver a nuestro amigo iptraf seguimos viendo en ambas interfaces la misma informacion, o sea el puerto 80 y sus relacionados, sin aparecer por la eth1 el puerto 3128.
O sea, significa que la informacion de los clientes nunca llega a esas regla, por lo que sale antes por el puerto 80.
Respondo yo mismo pues ya he encontrado la solucion: NO existe problema alguno, el proxy esta funcionando de forma correcta, lo que ocurre es que al analizar lo que ocurre en la eth1 con iptraf, el puerto 3128 no aparece, aunque esta trabajando normalmente, por eso daba lugar a confusión.
No puedes publicar nuevos temas en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en encuestas en este foro