Servidor Linux a traves de router / pc
May 17th, 2006 by BusindreSuponiendo esta simple estructura de una red: http://www.busindre.com/linux-como-router-facil/ en la cual un ordenador con Mandriva hace de router para otras maquinas de la red (Debian en este caso)
Esquema de la red:
192.168.2.33 (eth0)
Mandriva ———————— Debian 192.168.2.20 (eth0)
192.168.1.33 (eth1)
|
|
|
|
|
|
192.168.1.1
Router
Configurada como dice el articulo (Comprobemos que tenemos acceso a internet desde debian) vamos a hacer que la maquina con Debian pueda hacer de servidor (Apache, mysql, ssh, dns,.. lo que queramos) y sea accesible al resto de maquinas de la red / Internet. Esto lo haremos con iptables con un simple comando que aplicara la regla, la cual explico a continuación:
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 22 -j DNAT --to-destination 192.168.2.20
Que nos dice esta regla de iptables?
Para todas las operaciones de NAT, usaremos -t nat para la tabla NAT. Ya que lo queremos hacer es que Mandriva haga NAT (Lo que todos los routers hacen) que para que se entienda es que puedan salir varias maquinas de una red con una misma IP. Cambiar la dirección IP de origen o destino por otra dirección definida previamente (IP publica). Los routers sacan las peticiones al exterior con una ip asignada por el isp correspondiente, pero puede tener conectados a ese router 12 maquinas con ip internas distintas lógicamente, a eso se le llama hacer NAT).
Con -A PREROUTING podremos modificar los datos destino de la conexión según nos interese y antes de tomar la decisión de enrutamiento. Así podremos desviar paquetes que vayan destinados al Mandriva (router) hacia otro host (debian) y viceversa. Sólo tiene sentido en el interfaz de entrada. Esto lo vamos a llamar DNAT "destination NAT" (-j DNAT --to-destination 192.168.2.20)
Con -i eth1 le indicamos el interface del router(Mandriva) por el que entran las peticiones/conexiones a Debian
Puede especificar el destino (--to-destination) de los paquetes sobre los que quiere hacer NAT (En nuestro caso las peticiones a los puertos especificados en los que escuchan los servidores de la maquina debian). Estas opciones pueden ir seguidas por una IP sencilla (192.168.1.1), un nombre (www.busindre.com), o una dirección de red (192.168.2.0/24 o 192.168.2.0/255.255.255.0)
Con la parte de
-p tcp --dport 22 Se le indica el protocolo usado (tcp/udp) para el puerto destino, en este caso 22 y tcp
En el router, si queremos que el servicio salga a Internet, fuera de nuestra red debemos abrir los puertos en el router (22 si es ssh, el 80,.. los que se quieran) a la ip 192.168.1.33, es decir a la maquina que hace de router (Mandriva en mi caso). Con esto ya podremos ver los servidores de debian tanto en la red como en internet si se habren los puertos correspondientes
NOTA: Para los casos en que tenemos un Linux embebido en un router (fÍsico) como Lynksys debemos poner esta regla para que las maquinas de la red que esten conectadas al router con Linux dentro puedas hacer de servidor.
Si el núcleo no tiene la implementación de iptables como módulo, necesitará cargar el módulo ip_tables.o antes: insmod ip_tables o modprobe ip_tables.
Posted in Internet |
May 26th, 2006 at 6:31 pm
¿Y como se podría tener un servidor en una maquina q se conecta a internet a traves de un router linksys solamente, con ubuntu instalado?
Gracias
May 27th, 2006 at 3:16 pm
Pues abres el puerto en el router linksys a la ip de tu makina linux donde tengas el servidor. facil :)
December 12th, 2007 at 7:08 am
Yo tengo un Modem Satleital Starband y esta conectada la eth0 al modem y la eth1 esta al switch como seria entonces su configuracion para compartir el internet
July 11th, 2008 at 2:45 am
[...] Hacer NAT con iptables: http://www.busindre.com/linux-como-router-facil/ Habilitar servicios detrás de NAT: http://www.busindre.com/servidor-linux-a-traves-de-router-pc/ [...]