Problema con Iptables+Squid+Dansguardian

Estimados amigos cuando implementé por primera vez las configuraciones de estos scripts funcionó perfectamente, al dia siguiente el cron realizó un reinicio programado en el servidor.
Desde ese momento las computadoras de mi LAN dejaron de navegar en internet. Sin embargo el dhcp esta funcionando bien porque tengo conectividad en la red local, los demas servicios estan corriendo...

Incluso he realizado como prueba, detener los scripts del squid y dansguardian, comenté las lineas de "prerounting" en el script iptables, vuelvo a reiniciar y aún las pc clientes continuan sin poder navegar en internet...

Les adjunto los script para que le den un vistazo!

Script IPTABLES

#!/bin/sh

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Politicas por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

#eth0 = Internet
#eth1 = Red local

# Acceso desde la red local
iptables -A INPUT -s 192.168.1.0/24 -i eth1 -j ACCEPT

## Acceso de la red local a internet

# Permitir puerto 80
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT

# Permitir puerto https
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT

# Permitir puerto DNS
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT

# Permitir puerto SSH
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 2222 -j ACCEPT

# Permitir puertos VNC
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 5900 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 5901 -j ACCEPT

# Saltar Proxy (Navegacion sin restriciones)
#iptables -t nat -A 192.168.1.0/24 -p tcp -j REDIRECT --to 3128

# Y denegamos el resto. Si se necesita alguno, ya avisaran
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -j DROP

#Redireccionamos el trafico al puerto 8080 del Dansguardian
iptables -t nat -A PREROUTING -i eth1 - tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -i eth1 - tcp --dport 443 -j REDIRECT --to-port 8080

# Ahora hacemos enmascaramiento de la red local
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

# Permirir computadoras puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp --dport 1:1024 -j DROP

Script SQUID (Sólo las lineas que se modificaron)

http_port 192.168.1.1:3128 transparent

Script DansGuardian (Sólo las lineas que se modificaron)

language = ‘spanish’
filterip = 192.168.1.1
filterport = 8080
proxyip = 192.168.1.1
proxyport = 3128

Otra cosa, la linea de "Saltarse el proxy" está bien formulada?

Espero me puedan ayudar... Les agradezco de antemano cualquier correccion que hagan al respecto!

envido escribió:

Estimados amigos cuando implementé por primera vez las configuraciones de estos scripts funcionó perfectamente, al dia siguiente el cron realizó un reinicio programado en el servidor.
Desde ese momento las computadoras de mi LAN dejaron de navegar en internet. Sin embargo el dhcp esta funcionando bien porque tengo conectividad en la red local, los demas servicios estan corriendo...

Incluso he realizado como prueba, detener los scripts del squid y dansguardian, comenté las lineas de "prerounting" en el script iptables, vuelvo a reiniciar y aún las pc clientes continuan sin poder navegar en internet...

Les adjunto los script para que le den un vistazo!

Script IPTABLES

#!/bin/sh

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Politicas por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

#eth0 = Internet
#eth1 = Red local

# Acceso desde la red local
iptables -A INPUT -s 192.168.1.0/24 -i eth1 -j ACCEPT

## Acceso de la red local a internet

# Permitir puerto 80
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT

# Permitir puerto https
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT

# Permitir puerto DNS
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT

# Permitir puerto SSH
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 2222 -j ACCEPT

# Permitir puertos VNC
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 5900 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 5901 -j ACCEPT

# Saltar Proxy (Navegacion sin restriciones)
#iptables -t nat -A 192.168.1.0/24 -p tcp -j REDIRECT --to 3128

# Y denegamos el resto. Si se necesita alguno, ya avisaran
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -j DROP

#Redireccionamos el trafico al puerto 8080 del Dansguardian
iptables -t nat -A PREROUTING -i eth1 - tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -i eth1 - tcp --dport 443 -j REDIRECT --to-port 8080

# Ahora hacemos enmascaramiento de la red local
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

# Permirir computadoras puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp --dport 1:1024 -j DROP

Script SQUID (Sólo las lineas que se modificaron)

http_port 192.168.1.1:3128 transparent

Script DansGuardian (Sólo las lineas que se modificaron)

language = ‘spanish’
filterip = 192.168.1.1
filterport = 8080
proxyip = 192.168.1.1
proxyport = 3128

Otra cosa, la linea de "Saltarse el proxy" está bien formulada?

Espero me puedan ayudar... Les agradezco de antemano cualquier correccion que hagan al respecto!

Que error les tira? Y la configuracion del squid? Aceptas las peticiones de la lan en el squid?

En el navegador me dice Sitio Web o Página no encontrada... Sin conexion!

Los scripts no me arrojan ningún error, de verdad no sé que pasa ahi. Quizás falte algún otro parametro que modificar en el Squid...

El puerto para dns es 53 pero UDP primer error que veo. Despues la regla para saltarse el squid esta mal, si lo que quieres es saltarlo para que lo envias al 3128 con -j ACCEPT estaria bien ya.
Para poder ayudarte se necesitan mas datos. Un ping a una ip publica responde?

En Debian Lenny i386, tuve un problema parecido... aunque no use iptables. Luego de buscar el porque luego de un reinicio, previo a alguna actualización, descubrí que el error era que el orden de inicio de los servicios squid y dansguardian no eran adecuados en el los runlevel.
Trata de probar deteniendo los servicios manualmente y luego iniciandolos manualmente en el orden correcto, y comprueba si funcionan...

1) Añadi la regla que me hacia falta para consultar DNS por udp
2) Verifique los runlevels y efectivamente el Dansguardian se inicializaba primero que el Squid!
3) Me hacía falta una ACL en el Squid e implementarla con http_access allow 192.168.1.1/24

Estos son los únicos parametros que he descomentado y modificado en el squid.conf

SQUID

http_port 3128 transparent
cache_mem 128 MB
cache_dir ufs /var/spool/squid 500 16 256
acl red_local src 192.168.1.0/24
acl localhost src 127.0.0.1/32
acl all src all
http_access allow localhost
http_access allow red_local

Con esas correcciones mi LAN pudo volver a navegar y estuvo filtrando el contenido correctamente...

El parametro 'transparent' para que sirve?

Me falta implementar una regla donde algunas PC's (director y gerente) puedan saltarse el proxy y evitar el filtrado... Pero no sè donde debo implementarla, si en Squid o Iptables!

Uds creen que funcione esta en IPTABLES?

IPTABLES

# Saltar Proxy (Navegacion sin restriciones)
#iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 3128 -j ACCEPT

De verdad muy agradecido por toda la ayuda que me han prestado hasta el momento!

El parámetro tarnsparent se utiliza para hacer que el proxy transparente es decir que no tengas que configurar nada en el navegador (que alguien me corrija si estoy equivocado)
El tema de las pc's del director y el gerente esta en que es lo que realmente quieres hacer si quieres que salten el proxy la regla no te sirve, ahora si tu intención es que pase por el proxy pero no filtrarles nada es una cuestión de acl's nomas.
La regla para que se salteen el proxy es la siguiente

iptables -t nat -A PREROUTING -i eth1 -s "ip[gerente|director]" -p tcp --dport 80 -j ACCEPT

Esa regla es preferible que la pongas primero que cualquier otra prerouting para evitarte problemas. Tambien deberias habilitar el puerto 80 en la tabla filter cadena forward para esas ip's
Saludos!

Dicho servidor cuantas IP tiene?