Apartamento En Familia

Apartamento En Familia
Apartamento de playa para vacaciones. http://www.apartamentoenfamilia.es. Número registro HUTT-005768

miércoles, 3 de noviembre de 2010

ip forwarding con OpenWRT

En un artículo anterior explicaba que era el OpenWRT:
También os comentaba en ese artículo que esto era util para infinidad de cosas, ya que lo que estábamos haciendo es embedir un sistema operativo en un router. Si además ese sistema operativo es un GNU/Linux, pues las posibilidades son muy extensas. Voy a poner un ejemplo:

Imaginemos que tenemos por casa un Router LAN-WiFi de sobras, ya que en algún momento tuvimos una conexión ADSL con una compañia, y luego nos cambiamos a otra (con lo cual, nos regalában otro router). Mucha gente lo que hace es guardarlo en un cajón durante años, antes de tirarlo. Otros directamente lo tiran a la basura. Yo os propongo instalar un GNU/Linux. Si nos paramos a pensar en ese router como un ordenador (y no sólo como un router), observaremos que tiene 4 (o más) puertos ethernet y una antena para conexión inalámbrica. Ya que nuestro nuevo router (vamos a pensar que es un cablemodem de fibra, por ejemplo) nos cae lejos de nuestros PCs de casa, la opción para conectarnos al Cablemodem será por WiFi. 


Así pues, sólo me queda la opción de comprarme unas tarjetas WiFi para instalarlas al PC1 y al PC2 y de esa manera acceder al Cablemodem, y a su vez, a Internet. Pero... ¿Que pasaría si me conecto por cable al Router LAN-WiFi y que sea el Router LAN-WiFi el que se conecte con el Cablemodem?.
Bien, la primera ventaja que se me ocurre es que de una manera sencilla, el PC1 y el PC2 estarán conectados por red cableada, siendo la seguridad y la velocidad muy superiores. Por otro lado nos evita comprar tarjetas WiFi para los PCs, ya que reusaremos lo que ya teniamos en casa.Luego quedará saber como queda la conectividad a Internet: El Router LAN-WiFi establecerá la conexión con nuestro Cablemodem (como si de un PC/Cliente se tratara) y hara que tanto PC1 como PC2 salgan através de él.

Para los que estais familiarizados con el enrutamiento en GNU/Linux, sabreis que lo que estoy diciendo es que vamos a usar el OpenWRT (Router LAN-WiFi) para hacer ip forwarding

Pues ahora que vemos que ventajas nos daria este escenario, vamos a ver como lo hacemos:

Dividimos nuestra red local en dos redes. 
  1. La primera es la que contiene PC1, PC2 y Router LAN-WiFi. (192.168.1.0/24)
  2. La segunda es la que contiene Router LAN-WiFi y Cablemodem. (192.168.0.0/24)

Observamos como efectivamente, el Router LAN-WiFi (que es donde tenemos instalado OpenWRT) esta en las dos redes, ya que justamente él es el que nos va a pasar de una red a la otra (enrutandonos).

Así pues dejaremos los equipos de esta manera configurados:

PC1
IP: 192.168.1.2
Mascara: 255.255.255.0
Puerta de enlace: 192.168.1.1

PC2
IP: 192.168.1.3
Mascara: 255.255.255.0
Puerta de enlace: 192.168.1.1

Router LAN-WiFi
IP-1: 192.168.1.1 (para la red cableada br-lan)
IP-2: 192.168.0.12 (para la red wifi)
Mascara: 255.255.255.0
Puerta de enlace: 192.168.0.1

Cablemodem
IP: 192.168.0.1


La configuración de las IPs en todos los dispositivos no es una tarea complicada, así que me voy a centrar en como configurar el IP FORWARDING, ya que es la gracia de este escenario. Para configurar el IP FORWARDING simplemente tenemos que añadir una regla en el cortafuegos del OpenWRT para que todas las peticiones de la red cableada salgan "enmascaradas" por el red WiFi, enrutandolas al Cablemodem. Para ello editaremos en el OpenWRT el archivo /etc/firewall.user (sino existe lo podeis crear sin problemas) y añadir este contenido:


root@OpenWrt:~# cat /etc/firewall.user 
# This file is interpreted as shell script.
# Put your custom iptables rules here, they will
# be executed with each firewall (re-)start.


iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o wlan0 -j MASQUERADE

En donde wlan0 es nuestra red wifi y 192.168.1.0/24 es nuestra red cableada. Lo que estamos diciendo en esta regla es que reenvie todas las peticiones que vengan de 192.168.1.0/24 como si fueran peticiones realizadas por el 192.168.0.12 (Router WiFi), enmascarando la conexión. 

Con esto ya tendremos tanto en PC1 como en PC2 conexión a Internet através del Router WiFi, y además disfrutaremos de una conexión cableada y segura entre PC1 y PC2.

En otro ejemplo explicaré como abrir puertos para conectar desde Internet a PC1 dado este mismo escenario.

4 comentarios:

  1. pero no todos los routers pueden soportar OpenWRT o si ???

    ResponderEliminar
  2. Hola Jose Areche,

    podrás encontrar un listado completo en http://wiki.openwrt.org/toh/start

    ¡Saludos!

    ResponderEliminar
  3. Muy buen manual, pero creo que tienes un error en el iptable , para lo que quieres hacer tienes que abrir la máscara a 16

    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o wlan0 -j MASQUERADE


    Al menos a mi si me funciono así y no con la máscara 24.

    Gracias por tu trabajo y un saludo.

    ResponderEliminar
  4. Hola Daniel,
    La máscara 16 hace referencia a enrutar las máquinas 192.168.X.X y la máscara 24 a las máquinas 192.168.1.X :

    8bit x 3 octetos = 24 bit. (11111111.11111111.11111111.00000000 = 255.255.255.0)

    8bit x 2 octetos = 16 bit. (11111111.11111111.00000000.00000000 = 255.255.0.0)

    Yo solo pretendia redireccionar esa red, pero tal como lo has hecho también funciona :D, aunque abriendo a 256x256 las máquinas accesibles.

    Saludos!

    ResponderEliminar


That u don't know what you've got 'til it's gone