Proyecto domótica PARTE 4 - Acceder al servidor por medio de un DNS Dinámico
Dado que las empresas proveedoras de internet entregan una dirección IP dinámica (ya que cambia cada vez reiniciamos el router, o cada cierto periodo de tiempo que generalmente son máximo un par de días) por ello es necesario establecer un dominio que permita actualizarse en forma inmediata cuando nuestra dirección IP pública cambie.
El siguiente diagrama muestra la estrategia a utilizar, se creará un programa que se ejecutará en la Raspberry Pi cada 1 hora y verificará la dirección de IP pública, si detecta un cambio la actualizará en el dominio.
El siguiente diagrama muestra la estrategia a utilizar, se creará un programa que se ejecutará en la Raspberry Pi cada 1 hora y verificará la dirección de IP pública, si detecta un cambio la actualizará en el dominio.
4.1 Comprar un dominio dinámico
Son muchas las empresas que venden dominios o subdominios dinámicos, las más populares son noip.com y dyn.com, también se pueden conseguir en forma gratuita, sin embargo es necesario estar validando constantemente la cuenta para continuar con el servicio, lo que con el tiempo se vuelve algo muy tedioso.
En mi caso opté por comprar un dominio en Google Domains, ya que los valores son muy económicos y permite crear subdominios dinámicos sin costo adicional (ahorrándome más de 20 dólares en comparación a noip.com).
4.1.2 Buscar dominio y pagarlo
Esta etapa es muy simple, consiste en buscar un dominio disponible, agregarlo al carro y pagarlo, como lo hacemos con cualquier compra en internet.
De todas formas para mí un dominio es algo de cierta importancia, por lo que no compraría cualquier nombre, podemos aprovechar la oportunidad de nombrarlo como algún emprendimiento o un nombre de algún proyecto que nos interese sacar a la luz a futuro.
Acá les dejo un ejemplo del buscador, podemos buscar cualquier palabra y ordenar por precio o por las extensiones de dominio más usadas.
Ejemplo del carro de compras
4.1.3 Crear un subdominio y darle las propiedades de DNS dinámico.
Una vez que ya somos dueños de un dominio, ahora nos toca crear el subdominio que utilizaremos para el proyecto.
Primero, debemos ingresar a la configuración de nuestro dominio, para ello hacemos click en el menú mis dominios y luego sobre el dominio que utilizaremos.
Segundo, ingresar a las opciones de DNS y bajar hasta la sección Registros sintéticos.
Tercero, debemos agregar un registro de DNS dinámico, para ello seleccionar en el selector dicha opción, escribir el nombre deseado para nuestro subdominio y presionar el botón Añadir.
Por último, una vez añadido nuestro subdominio debemos obtener los datos necesarios para nuestro script de actualización de dirección de IP. Debemos expandir las opciones del DNS dinámico y copiar el nombre de usuario y contraseña que ahí se muestra.
4.2 Crear script de actualización de dirección IP
El script de actualización permitirá que nuestro servidor este siempre disponible desde cualquier conexión a internet, ya que lo configuraremos para que cada 1 hora esté llamando a un servicio de google que actualiza la dirección IP en el dominio. Para ello tenemos que crear un programa (script) que será ejecutado a través de Crontab.
4.2.1 Crear directorio para el script.
4.2.1 Crear directorio para el script.
mkdir <nombre-directorio>
ejemplo en terminal
4.2.2 Entrar al directorio recién creado y crear archivo ejecutable.
cd <nombre-directorio>
nano google-dyndns-updater.sh
4.2.3 Pegar el contenido del script y actualizar datos del dominio.
#!/bin/bash ### Google Domains provides an API to update a DNS ### "Synthetic record". This script updates a record with ### the script-runner's public IP address, as resolved using a DNS ### lookup. ### ### Google Dynamic DNS: https://support.google.com/domains/answer/6147083 ### Synthetic Records: https://support.google.com/domains/answer/6069273 USERNAME="" PASSWORD="" HOSTNAME="" # Resolve current public IP IP=$( dig +short myip.opendns.com @resolver1.opendns.com ) # Update Google DNS Record URL="https://${USERNAME}:${PASSWORD}@domains.google.com/nic/update?hostname=${HOSTNAME}&myip=${I> curl -s $URL
ejemplo en terminal
4.2.4 Ejecutar script
Para ejecutar el script primero hay que agregar los permisos al archivo.
chmod +x google-dyndns-updater.sh
Una vez otorgado el permiso de ejecución se podrá correr el programa de la siguiente forma.
./google-dyndns-updater.sh
si no funciona la forma anterior puede ser necesario ejecutarlo desde el bourne shell mediante:
sh ./google-dyndns-updater.sh
Cuando el programa se ejecuta correctamente responde "good" y la "dirección IP pública" de nuestra conexión a internet.
Cuando se ejecuta y la dirección IP no ha cambiado responde "nochg (no change)" y la "dirección IP pública actual".
4.2.5 Agregar nuestro script a la ejecución de Crontab. Crontab es un archivo de texto que permite administrar tareas de Cron, donde cada linea lleva un formato especifico que permite definir el tiempo y ejecución a realizar.
EDITOR=nano crontab -e
0 * * * * /home/ubuntu/software/google-dyndns/google-dyndns-updater.sh
Quedando:
4.2.6 Probar la configuración
Si hacemos un ping al dominio, debería responder la misma dirección IP que obtenemos al consultar nuestra dirección IP pública.
ping <subdominio.dominio.extension>
En las siguientes imágenes se puede observar que al hacer un ping al dominio desde terminal nos responde la misma IP que el sitio miip.cl
-> Siguiente parte ->
Indice
Parte 1) Arquitectura e infraestructura
Parte 5) Conexión segura mediante SSL
Parte 7) Persistir información con MongoDB
Parte 8) Levantar sistema Smarthome
Parte 15) Resultados
Comentarios
Publicar un comentario