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:
Para de aquí ir a crear nuestra cuenta de servicio:
Le damos a «+ CREAR CUENTA DE SERVICIO»
Ahora agregaremos un nombre para diferenciar esta cuenta de servicio de otras:
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.
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.
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.
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
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>
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:
- https://googleapis.github.io/google-cloud-python/latest/core/auth.html
- https://googleapis.github.io/google-cloud-python/latest/dns/index.html
- https://google-auth.readthedocs.io/en/latest/user-guide.html#service-account-private-key-files
- https://cloud.google.com/python/setup
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.
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?
te falto pip install requirements.txt