Dudas con IPTables

Buenas a todo el mundo

Resulta que tengo una dudilla del Iptables que supongo que me podréis solventar.
El caso es que me he montado un entorno virtual muy simple bajo VirtualBox (por si influye en algo, no es una red "real", está en modo bridged o adaptador puente) que tiene esta pinta:

Imagen

Mi idea es ir poco a poco añadiendo cosas y complicándolo.

El firewall funciona OK (no tiene ninguna regla, por defecto ACCEPT).
A lo que vamos, el tema es que quiero hacer lo que comunmente se denomina "abrir los puertos" para el 192.168.70.10/24.

He probado con esta línea en el firewall pero sigue sin poder salir (bueno, no estoy seguro si debe ir aquí o en el equipo que hace de router):
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 5050 -j DNAT --to 192.168.70.10:5050

No se si estoy haciendo bien, porque tengo un lio tremendo con la tabla NAT del iptables (SNAT, DNAT, MASQUERADE, REDIRECT...). Llevo varios días leytendo pero no lo termino de entender, cuando creo que lo tengo, aparecen ejemplos nuevos que me rompen todos los esquemas. Con lo sencillo que es hacerlo mediante la interfaz web de un router.

Aparte de esto, en el dibujo no está puesto, pero en el Firewall también hay un SQUID transparente que si que funciona OK (No creo que haya algún tipo de conflicto entre ellos).

Me extraña porque si listo las reglas del firewall no hay nada raro, en principio todo se permite. Para el proxy transparente usé esta regla (que, dicho sea de paso, no la pillo del todo):
iptables -t nat -A PREROUTING -s 192.168.70.0/24 -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

Si sois tan amables de echarme una mano os lo agradecería mucho, aunque sea alguna idea o consejo. Gracias de antemano
La segunda línea que pones de iptables lo que está diciendo es que para todo el tráfico TCP entrante en el firewall a través de eth1 y proviniente de la red 192.168.70.0/24, si va dirigido al puerto 80 se redirigirá al puerto 3128 de la misma máquina firewall, que será donde squid estará escuchando.

Para la apertura de puertos no hace falta que indiques en el --to el puerto, sólo la IP del server, ya que el puerto ya lo has indicado en -dport.
Al decir que con esa línea "sigue sin poder salir"... la línea esa lo que hace es dirigir las conexiones entrantes a la máquina 192.168.70.10, así que técnicamente sería entrar... o no estoy entendiendo bien lo que quieres hacer.

Cuando dices que el firewall funciona OK te refieres a que eres capaz de salir a internet por algún puerto que sea a través del proxy squid? Entiendo que para que eso funcione necesitarás hacer un forwarding con masquerade, de forma que las máquinas de fuera de tu red vean todas las conexiones como provenientes de tu firewall (vamos, un NAT):

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
Digo que el firewall funciona porque si pongo la política por defecto a DROP, ninguno sale a internet, y cuando la cambio a ACCEPT todos salen OK.

Lo que quería hacer lo que comentas, todo lo que llegue del exterior por el puerto 5050 TCP que vaya al 192.168.70.10:5050 (Es un PC con emule). El tema es que no se si hay que ponerlo en el Firewall o en Router. He probado en los 2 y nada. Quizá es mejor poner el Router y el Firewall en la misma máquina, así no habría problemas?

Ahora mismo tengo:

Router
Para que haga el NAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


Firewall + Proxy
Para que redireccione todo el trafico http al proxy y no lo puedan saltar los clientes.
iptables -t nat -A PREROUTING -s 192.168.70.0/24 -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128


Por si sirve de algo, el Router (El del ISP, no el PC que hace de router), puede que sea el causante de todo?

El tema es que no se si la red está bien montada o he metido equipos innecesarios entre medio
Si tienes un router del ISP, el router debian creo que no pinta demasiado ahí.

En cualquier caso el router del ISP normalmente por defecto estará ya haciendo NAT a no ser que lo hayas configurado para monopuesto, y por tanto también tendrás que configurar ahí la redirección de puertos porque normalmente si no hay ninguna regla sobre a qué equipo enviar una conexión entrante el router la ignorará (afortunadamente, por eso vale como pseudo-firewall).
Entonces que sentido tiene montar un PC para que haga de router? Si siempre te da el ISP un router, con pincharlo a un firewall ya está. Te quitas ese pc intermedio.

Entonces, en el router del ISP redirecciono todo lo que vaya al 5050 a la IP del router debian? Yo creo que me lio porque hay 2 routers, y el segundo sobra.
Si veo que no lo consigo, le engancho directamente el firewall al router del ISP y listo, así, por lo menos se simplifica la red.

EDITO: Hecho. EL problema venía porque el router del ISP ya estaba haciendo NAT y estaba bloqueando todo.
Lo que hay que hacer era en el Router del ISP redireccionar todo el tráfico 5050 a la eth0 del router debian. Luego, del router al firewall, y por ultimo del firewall al PC.

Gracias por tomarte la molestia de ayudarme kornshell

Pasos innecesarios si quitamos el router intermedio.
4 respuestas