conorcunningham / google-ddns

N.B. Este proyecto requiere el uso de Google Cloud y Google Cloud requiere autenticación. Específicamente, en este proyecto, y al usar el DNS de Google Cloud, se requiere una clave de API. Es efectivamente gratuito usar el DNS de Google para realizar pruebas, pero no obstante se requiere una cuenta.

Escribí esto para resolver un problema que tenía en casa, y terminó ahorrándome 1 100 USD al año. Gracias, Python! Gracias CS50!

He abierto este proyecto de origen para que todos lo usen.

Además, esta es deliberadamente una aplicación de un solo archivo. Está diseñado para ser fácil de clonar y usar, de ahí el código abierto, y está diseñado para ser utilizado con un servicio Linux para que pueda ejecutarse en segundo plano. Teóricamente se puede ejecutar en todas las plataformas, MAC, Windows, Linux, dispositivos linux integrados y equipos de red doméstica.

He probado esto en Windows 10, Debian 9 Stretch y Max OSX Mojave.

Me ha gustado mucho tomar CS50 Web y actualmente estoy trabajando en mi proyecto final para CS50 Web.

Cheers,

Conor

Cliente de DNS dinámico de Google Cloud

Este es un script de DNS dinámico simple para DNS de Google Cloud. El script comprobará su dirección IP pública y, a continuación, en función de la configuración que haya leído en el archivo de configuración, comprobará si Google Cloud DNS tiene una entrada DNS correspondiente. Si no se encuentra ninguna entrada correspondiente, el script creará una. Si se encuentra una entrada correspondiente, pero tiene una dirección IP que no coincide con la que encontró el script, el script se actualizará y luego la entrada de Google Cloud (leer eliminar y luego crear). Por último, si el archivo de configuración de scripts coincide con el de la entrada DNS de Google Cloud, permanecerá en reposo durante un intervalo de x y el proceso se repetirá.

Este proyecto consta de los siguientes componentes:

  • gcloud-ddns.py: el script de cliente dns dinámico
  • ddns-conf.yaml: requisitos del archivo de configuración de programas
  • .txt: requisitos para ser instalado

Requisitos

Este script requiere Python 3.6 o superior. las cuerdas en f se usan ampliamente. Los requisitos del paquete se enumeran en requisitos.uso de txt

Usage: python gcloud-ddns.py 

Configuración

$ git clone [email protected]:conorcunningham/google-ddns.git$ cd google-ddns$ python3 gcloud-ddns.py

El script se ejecutará en primer plano. Voy a jugar con él y probarlo para ver si puede funcionar de manera confiable como servicio.

Archivo de configuración

La configuración del script se lee desde un archivo yaml. Aquí están los contenidos del ejemplo ddns-conf.archivo yaml

api-key: './ddns-api-key.json'logfile: './ddns.log'hosts: - host: 'firewall.example.com.' project_id: 'fluffy-penguin-242411' managed_zone: 'example' domain: 'example.com' ttl: 60 interval: 600 - host: 'www.example-two.com.' project_id: 'fluffy-penguin-242411' managed_zone: 'example-two' domain: 'example-two.com' ttl: 60 interval: 600

El script acepta un argumento CLI opcional que es la ruta al archivo de configuración. Si no se da ninguno, el script buscará ddns-config.yaml en el mismo directorio que el script.

  • host: el nombre de dominio completo del host que desea establecer. NB * Debe incluir el . después del .com. Este es un requisito de Google/
  • project_id: Su ID de proyecto dentro de Google Cloud
  • managed_zone: El nombre de su zona administrada en Google Cloud
  • dominio: Su nombre de dominio
  • ttl: El número de segundos para el TTL
  • intervalo: Cuánto tiempo permanecerá en reposo el script antes de volver a ejecutarse
  • clave de api: Ruta de acceso a la clave de API en formato JSON
  • ruta de registro: Ruta al archivo de registro

Autenticación

Para usar la API de Google Cloud, necesitará una clave de API para su cuenta. Esta clave será un archivo json y debe configurarse en el archivo de configuración.

El script establecerá la variable ambiental GOOGLE_APPLICATION_CREDENTIALS en la ruta de acceso de su clave API y los módulos de Google utilizarán esta variable ambiental para gestionar la autenticación.

os.environ = api_key

Docker

Se incluye un archivo Docker en el repositorio para que pueda iniciarlo como contenedor dentro de una instancia Docker.

docker build -t google-ddns .

El comando acoplable predeterminado espera una configuración.archivo yaml dentro del directorio / ddns

docker run -it --rm -v <path/to/config>:/ddns google-ddns

Tenga en cuenta que las rutas dentro del archivo de configuración son relativas al contenedor

api-key: '/ddns/ddns-api-key.json'logfile: '/ddns/ddns.log'...

Aquí hay un archivo de composición de docker rápido y sucio si usa eso

version: '3'services: ddns: image: google-ddns volumes: - ./config:/ddns

ipify.org API

Este proyecto hace uso de la ipify.org API para obtener la dirección IP pública del cliente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Previous post Cómo Limpiar Correctamente Un Molinillo De Café Y Sus Rebabas
Next post Los mejores micrófonos para cine: La guía 2020