Actualizando IP dinámica de servidor GNU/Linux en Google Cloud DNS [DDNS Python]


Bueno este pequeño script lo cree porque en un principio no quería pagar a un DDNS, como por ejemplo NOIP2

¿Qué es un DDNS?

Es un DNS dinámico que permite actualizar en «tiempo real» la IP que se usará para determinado nombre de dominio en internet.

Entonces me dije, ¿por qué no usar Google Cloud DNS? Así que compre mi dominio, lo configure en Google Cloud DNS (dentro de Google Cloud Platform, GCP), y me dispuse a leer la documentación para poder consumir su API.

Debemos ir a la consola de GCP:

Captura de pantalla 2019-08-21 a la(s) 08.25.06

Para de aquí ir a crear nuestra cuenta de servicio:

Captura de pantalla 2019-08-21 a la(s) 08.27.31

Le damos a «+ CREAR CUENTA DE SERVICIO»

Captura de pantalla 2019-08-21 a la(s) 08.28.25

Ahora agregaremos un nombre para diferenciar esta cuenta de servicio de otras:

El pase de diapositivas requiere JavaScript.

En el paso dos, debemos asignar un rol. Esta parte es importante porque es la que nos permitirá tener acceso a los recursos que deseamos, en este caso solo será al Administrador de DNS.

El pase de diapositivas requiere JavaScript.

En el paso tres, lo único que debemos hacer es crear la clave, para descargar el JSON que nos permitirá autenticarnos en el script que realice.

El pase de diapositivas requiere JavaScript.

ADVERTENCIA: Este JSON es muy importante y debemos resguardarlo bien, porque si lo compartimos por error quien lo tenga podrá manipular los recursos a los que le hemos dado acceso.

Captura de pantalla 2019-08-21 a la(s) 08.31.45

Ya terminado podremos ver que ya tenemos la cuenta de servicio creada para utilizar el script de python que he realizado. Ahora solo hay que descargarlo de GitHub https://github.com/rafex/updateGoogleDNS

Captura de pantalla 2019-08-21 a la(s) 08.41.07

Se sugiere que la carpeta esté dentro de “/opt”, sin embargo puede modificar esta ruta en el archivo «updateGoogleDNS» en la siguiente variable:

#!/bin/bash

PATH_INSTALL_SCRIPT_PYTHON="/opt/updateGoogleDNS"

Puede que requiera permisos especiales para crear la carpeta de logs en «/var/log»

Para instalar las dependencias del script de python requiere tener instalado python3 y pip3, si satisface estas dependencias podrá usar el siguiente comando:

pip install -r requirements.txt

Habrá que agregar una línea al «crontab», se sugiere que sea cada 5 minutos pero puede ajustar este tiempo a su conveniencia, así como colocar el usuario que desea que ejecute este proceso, se recomienda que no sea «root»:

*/5 * * * *  /opt/updateGoogleDNS/updateGoogleDNS

Las variables:


UPDATE_GOOGLE_DNS_JSON=Aquí va el JSON que descargamos al crear la clave

UPDATE_GOOGLE_DNS_PROJECT_ID=El identificador del proyecto de Google Cloud Platform

UPDATE_GOOGLE_DNS_ZONE_NAME=El nombre de la zona de Cloud DNS<span id="mce_SELREST_start" style="overflow:hidden;line-height:0;"></span>

El pase de diapositivas requiere JavaScript.

Esta es la primera versión de este script posiblemente en el futuro deba cambiar para agregar más funcionalidad, pero ahora cumple con su propósito, les dejo las páginas de referencia que use:

Y no descarto la opción de crearlo en Go, simplemente por jugar.

Esto se me ocurrió por una plática en SysArmyMX

¡¡¡ADVERTENCIA!!!

Debo aclarar que esto genera costos y que estos son administrador por Google Cloud Platform, dejo aquí el enlace: https://cloud.google.com/dns/pricing

El costo de esto a los precios actuales sería de $96.00 pesos mexicanos por año, al momento en que se realizó esta publicación.

Captura de pantalla 2019-08-21 a la(s) 15.18.58

2 comentarios sobre “Actualizando IP dinámica de servidor GNU/Linux en Google Cloud DNS [DDNS Python]

  1. hola, estoy intentando utilizar el script, pero obtengo el siguiente error
    Traceback (most recent call last):
    File “updateGoogleDNS.py”, line 26, in
    from google.oauth2 import service_account
    ModuleNotFoundError: No module named ‘google’

    Puede que no encuentre las librerías de google?

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.