¿Ocupas crear una aplicación en una Raspberry Pi que sea accesible desde cualquier parte del mundo y no sólo desde su red local?
En este post se le ayudará a lograr eso, ya que se le explicará una forma de cómo lograrló, usando una VPN (Virtual Private Networks) con el protocolo PPTP (Point-to-Point Tunneling Protocol).
¿Qué es una VPN? ¿Por qué es útil en una RPI?
Una VPN permite desde una red privada conectar a cualquier ubicación geográfica mediante la IP pública, creando un túnel entre el cliente y el servidor, donde los datos cifrados viajan. Siempre y cuando se disponga de los permisos, autorizaciones y autentificaciones necesarias que permita navegar por el dispositivo como si estuviera en una red local.
Una vez estando conectado al servidor VPN nuestro dispositivo pasará a formar parte de la red privada virtual, logrando comunicarnos con ella como si se tratará de una red local y consiguiendo acceder a los servicios e información de la red a la que se conectó.
En una RPI esto es muy importante cuando se tiene aplicaciones corriendo en esta y se necesita estar monitoreando o controlando la misma desde cualquier parte del mundo independientemente donde se encuentren ubicados los equipos.
En una RPI esto es muy importante cuando se tiene aplicaciones corriendo en esta y se necesita estar monitoreando o controlando la misma desde cualquier parte del mundo independientemente donde se encuentren ubicados los equipos.
Precondiciones
- Tener acceso a internet (Ethernet o Wi-Fi).
- Hardware usado: Raspberry Pi B+ (debería funcionar para cualquier familia de Raspberry Pi u otro hardware).
- Sistema Operativo usado: Raspbian
Paso #1: Instalar el protocolo PPTP y asignar una IP Estática
# Actualizar la RPI sudo apt-get update & sudo apt-get upgrade
Asegurarse que el servidor (dispositivo) tenga una Ip fija o estática (esto es importante porque cuando un paquete llega al router, este debe ser enviado a la Ip correcta donde está el servidor), esto se puede definir en el mismo router o en el dispositivo editando el siguiente archivo:
sudo vim.tiny /etc/network/interfaces
Deberíar estar configurado como se muestra en la imagen de abajo:
# Installar el protocolo pptp sudo apt-get install pptpd # Editar el archivo: sudo vim.tiny /etc/pptpd.conf
Agregar la Ip estática asignada anteriormente y el rango de IPs al final del archivo que se le van a asignar a los clientes. Ejemplo:
localip 192.168.0.50 remoteip 192.168.0.234-238,192.168.0.245
Paso #2: Agregar los clientes que van a usar el servidor VPN
sudo vim.tiny /etc/ppp/pptpd-options
Agregar a este archivo las siguientes descripciones (usar el gateway de la Ip estática a usar):
ms-dns 192.168.0.1 nobsdcomp noipx mtu 1490 mru 1490
Agregar uno o varios nombres de usuarios y las contraseña que deberán tener los clientes que accederán al servidor VPN:
# Agregarlos usando este formato: NOMBRE_USUARIO [TAB] * [TAB] CONSTRASEÑA [TAB]* sudo vim.tiny /etc/ppp/chap-secrets # Reiniciar pptpd sudo service pptpd restart # Configurar el tráfico forward en la RPI. Descomentar la linea: net.ipv4.ip_forward=1 sudo nano /etc/sysctl.conf # Aplicar los cambios del forward sudo sysctl -p
Paso #3: Activar los Ports Forwarding en el router
Es importarte que active el puerto 1723. Además, para tener acceso por SSH puede activar el puerto 22 y para HTTP, el puerto 80. Como se ilustra en la siguiente imagen:
Por otro lado, si desea usar un DNS o una url para acceder desde el exterior en vez de la Ip pública, puede seguir estos simples pasos:
- Ingresar a la dirección: www.noip.com. Crear una cuenta, escoger un dominio o usar alguno que ya poséa y asignar la Ip pública de su router.
- Ejecutar en terminal:
mkdir /home/pi/noip cd /home/pi/noip wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz tar vzxf noip-duc-linux.tar.gz cd noip-2.1.9-1 sudo make sudo make install # Correr el cliente sudo /usr/local/bin/noip2 sudo reboot
Para ver el funcionamiento del dominio creado anteriormente puede ver el siguiente video. Aquí se muestra lo visto en en el post, pero ahora no sólo se accede al servidor web desde una red local sino desde cualquier ubicación con acceso a Internet (por ejemplo: su teléfono celular):
Para ver el funcionamiento de la VPN puede ver el video de abajo. Ahí se puede ver como desde un celular (conectado a una red diferente de la que usa la RPI) se tiene acceso a la VPN que corre en la RPI (se puede conectar desde una computadora con Windows o Ubuntu) y como queda registrado el túnel en la RPI:
En el video no se nota, pero también se puede comprobar la conexión con la VPN, viendo cómo cambia la Ip pública cuando se conecta o desconecta de la misma desde su dispositivo.
Espero que esto les haya sido de mucha ayuda.
Agradezco a Ncubo por brindarme el equipo necesario para realizar el post.