El Sun, 09 de Aug de 2015, a las 09:24:49AM +0200, Hospital Oftalmológico dijo:
> Estimados, Hola. Me pilla esto con los ojos enrojecidos y mucho sueño, así que te cuento un par de cosas de la configuración, aunque eso sí (no tengo ni idea de como funciona IMO, así que no sé cualés son los puertos que usa). En general, no sé de dónde has sacado las reglas, pero hay muchas que simplemente sobran. Por ejemplo, para qué narices haces esto: iptables -I POSTROUTING -j MASQUERADE -t nat -s 192.168.1.0/24 -p tcp \ --dport <NUMPERO_DE_PUERTO> -o eth0 con unos cuantos puertos, si al final haces esto: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE Me da la sensación que estas usando un proxy web, porque el tráfico a los puertos 80,443 lo rediriges al puerto 3128 del servidor. Pero está mal hecho, porque el tráfico llega a ese puerto, pero la vuelta no está solucionada. De hecho, no tienes permitido el regreso de ningún tráfico. Además tampoco está solucionada la conexión de squid con los servidores web externos. Tienes reglas que, directamente no tienen sentido como estas: iptables -A INPUT -d 64.13.128.0/18 -j ACCEPT O las que permiten el paso al puerto 3128 por la cadena FORWARD. Tampoco hay ninguna regla que permita resolver nombres. Total que no hay por dónde pillar esa configuración. Te voy a dejar unas para que las tomes como base y luego las ajustas como te convegan Yo supongo que lo que quieres es dejar paso al tráfico hacia los puertos 5004, 5060 y 5062; y permitir la navegación con squid. Supongo que eth0 es la interfaz externa y eth1 la interna: #v+ ptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # [1] Conexiones de loopback aceptadas iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # [2] Aceptamos conexiones a los puertos 5004, 5060 y 5062 iptables -A FORWARD -i eth1 -o eth0 -p tcp -m multiport \ iptables -A FORWARD -i eth1 -o eth0 -p udp -m multiport \ --dport 5004,5060,5062 -j ACCEPT # [3] Admitimos algunos protocolos (SMTP y POP3) iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport smtp -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport pop3 -j ACCEPT # [4] Redirección SQUID (modo transparente) iptables -A PREROUTING -i eth1 -p tcp -m multiport --dport http,https \ --redirect 3128 # [5] Permitimos las comonicaciones de SQUID con el exterior iptables -A OUTPUT -o eth0 -p tcp -m multiport --dport http,https \ -j ACCEPT # [6] Permitimos el tráfico DNS con el exterior al servidor: iptables -A OUTPUT -o eth0 -p udp --dport domain -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --dport domain -j ACCEPT # [7] Y el tráfico a los clientes con nuestro servidor DNS: iptables -A INPUT -i eth1 -p udp --dport domain -j ACCEPT iptables -A INPUT -i eth1 -p tcp --dport domain -j ACCEPT # [8] Enmascaramos a la salida de eth0 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # [9] Permitimos las vueltas del tráfico permitido: iptables -A INPUT -m conntrack --ctstate DNAT,ESTABLISHED,RELATED \ -j ACCEPT iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT #v- QUizás haya algún gazapo. No he probado nada y estoy cansado, y además no sé muy bién qué es lo que quieres. Por supuesto, debes aceptar paquetes que no son para el propio servidor, pero es mejor que lo hagas cambiando /etc/sysctl.conf, que es un cambio persistente y no poniendo el 1, cada vezs que ejecutas el script. No he añadido la lista blanca de MACs que pueden navegar, pero puedes hacerlo cambiando la regla 4 y haciendo que sólo sufra SNAT el tráfico procedente de máquinas con esas MACs. No sé si tu intención es que sólo se pueda navegar hacia el sitio de IMO. Si así fuera, tendrías que modificar [5] para que no fuera tan permisiva (permite alcanzar cualquier distino). O, quizás mejor, hacer que sea squid el que haga ese trabajo. También tienes que tener en cuenta que SQUID debe estar bien configurado para que te funcione la cosa. A lo mejor deberías prescindir de él, para lo cual habría que sustituir la regla [4] por esta: ptables -A FORWARD -i eth1 -o eth0 -p tcp --dport http,https -j ACCEPT Y cuando, te funcione sin proxy web intentar meterlo en la ecuación. Un saludo. -- El amor es como los columpios, porque casi siempre empieza siendo diversión y casi siempre acaba dando náuseas. --- Enrique Jardiel Poncela ---