Este es uno de los capítulos del tutorial Tu propia nube en la Raspberry Pi. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.
¿Tienes una Raspberry Pi en casa?¿Tienes IP dinámica?¿Quieres acceder a ella desde cualquier lugar del mundo a pesar de tu IP dinámica?
Inicialmente cuando empecé a cacharrerar con la Raspberry, no pensé en acceder a ella desde fuera de la red local. Sin embargo poco a poco tus inquietudes van creciendo. Cada vez, te vas adentrando en proyectos mas ambiciosos, o simplemente en proyectos con requerimientos muy distintos.
Hasta que llega el día en que surge la necesidad de acceder desde la calle, desde fuera de tu casa, desde fuera de la red local. El primer problema al que te enfrentas es como poder acceder. Sobre todo si te sucede como a mi, que tu red local tiene una IP dinámica…
Poco dinámica, puesto que cambia de tarde en tarde, pero dinámica al fin y al cabo. A lo mejor, te estás planteando utilizar esa IP dinámica y cuando cambie tu cambias. Sin embargo, eso es como que te cambien la ubicación de la puerta de tu casa, y que cada día esté en un punto distinto. Si, existen métodos para saber donde está la puerta de tu casa, pero no es lo mas ortodoxo. Sobre todo, cuando cuando quieres invitar a unos amigos a cenar en casa… Imagínate, que les tuvieras que decir, hoy la puerta se encuentra en la esquina de tal y cual calle… menuda locura.
Pero no solo tienes este problema, y es que para poder cifrar tu acceso mediante un certificad de Let’s encrypt necesitas tener un dominio. Y pensar en tener un acceso a tu Raspberry sin que las comunicaciones sean seguras es una locura. Vamos sería lo mismo, que si todos tus vecinos pudieran oir tus conversaciones.
Así, una sencilla solución para conseguir tener una puerta de acceso fija, a pesar de tener una IP dinámica, es utilizar un servicio como puede ser Duck DNS.
Soslayando una IP dinámica
Como he comentado en la introducción, muchas de las conexiones que tenemos en casa o incluso en el trabajo se realizan a través de una IP dinámica. Es mas, tu proveedor de servicios te querrá cobrar por una red fija. Como si a tu proveedor de servicios le supusiera un esfuerzo mantener tu IP fija, la tuviera que atar con cadenas o algo similar*.
Esta IP dinámica tiene la característica de variar. Aunque la frecuencia puede ser distinta de un proveedor a otro. Algunas pueden variar mensualmente, semanalmente o incluso diariamente.
Duck DNS
Para soslayar este problema con la IP dinámica de casa Duck DNS es un proveedor de DDNS. DDNS es lo que se conoce como DNS dinámico.
Duck DNS ofrece un servidor público de DNS donde cualquiera puede tener un subdominio, y mediante un sencillo script actualizar la IP.
De esta manera tan sencilla e ingeniosa a la vez, no necesitarás recordar la dirección IP de tu casa, sino que podrás utilizar un dominio para acceder a casa.
¿Como funciona un proveedor de DDNS?
La operación como he comentdo es sencilla. Es tan simple, como que cada cierto tiempo, el script que he mencionado, se conecta al proveedor de DDNS, en mi caso actual Duck DNS, y le dice cual es la dirección actual de mi casa.
¿Y donde tiene que estar ese script?. Pues en principio lo puedes tener en cualquier ordenador que tengas en tu red local. Pero no solo lo puedes tener en un ordenador de tu red local, también lo puedes tener en el propio rúter. Eso si, este rúter tienes que cumplir algunas características. O incluso si tienes un NAS también puedes poner el script en tu NAS.
Así por ejemplo, si quieres poner el script en tu Raspberry, es tan sencillo como seguir los siguientes pasos,
- Primero creas un directorio donde ubicar y tener localizado el script,
mkdir ~/duckdns cd ~/duckdns
- Creas un archivo
duck.sh
con el siguiente contenido
echo url="https://www.duckdns.org/update?domains=TU_DOMINIO&token=TU_TOKEN&ip=" | curl -k -o ~/duckdns/duck.log -K -
Aquí tienes que cambiar los parámetros TU_DOMINIO
y TU_TOKEN
, por los que hayas configurado en DuckDNS, tal y como puedes ver en la siguiente captura de pantalla,
- Cambias los permisos de ejecución a tu archivo
chmod 700 duck.sh
- Ahora prueba que el scritpt funciona. Para ello, tan solo tienes que ejecutar
./duck.sh
y comprobar si todo ha ido correctamente. Para comprobar el resultado, tan solo tienes que mirar el contenido de~/duckdns/duck.log
, y comprobar que dentro hay un OK.
Si todo ha ido bien, dentro de ~/duckdns/duck.log
encontrarás un OK o si ha habido algún problema encontrarás un KO. ¿Sencillo verdad?.
- Ahora solo nos queda añadirlo al cron para que se ejecute de fora periódica. De esta forma, cada cierto tiempo, en nuestro caso cada 5 minutos, informará a Duck DNS de nuestra IP externa
Para esto simplemente ejecuta crontab -e
y añade esta sencilla línea en el mismo,
*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1
Esto implica que si en un momento cambia la IP, estarás como mucho cinco minutos sin acceso a tu red local desde fuera.
Como acceder a mi red local desde fuera
Una vez has seguido los sencillos pasos que te he indicado, ahora, para acceder a tu red local desde fuera, tan solo tienes que navegar a https://TU_DOMINIO.duckdns.org
.
¿Y donde voy a parar cuando viajo a esa IP?. Aquí necesitas enrutar. Es decir, aquí tienes que decir a tu rúter donde te llevará cuando llegas al puerto 80 del mismo.
Enrutando
Se trata de indicar a tu rúter que ante una conexión externa a un determinado puerto donde te tiene que llevar. Esto puede ser una tabla como la siguiente,
IP Local | Puerto externo | Puerto interno |
---|---|---|
192.168.1.15 | 80 | 80 |
192.168.1.15 | 443 | 443 |
192.168.1.15 | 8123 | 8123 |
Con la anterior tabla consigues que cualquier conexión externa a tu rúter, que se dirija a los puertos indicados, te lleve al equipo que está en la dirección IP 192.168.1.18
.
¿Y cuales son esos puertos? Los puertos del ejemplo se corresponden con los siguientes servicios,
Puerto | Servicio |
---|---|
80 | HTTP |
443 | HTTPS |
8123 | Home assistant |
Conclusión
Con esta sencilla guía ya puedes acceder a tu Raspberry Pi desde cualquier lugar del mundo. Puedes tener tu propia página personal, donde recoger tu diario o acceder a tu Home Assistant para controlar tu hogar inteligente.
Más información,
Muy buena información, regresaré aquí para realizar la prueba. Gracias
Muchísimas gracias por tu comentario. Un saludo.