N.b Ce projet nécessite l’utilisation de Google Cloud, et Google Cloud nécessite une authentification. Plus précisément, dans ce projet, et lors de l’utilisation du DNS de Google Cloud, il faut une clé API. Il est effectivement libre d’utiliser Google DNS pour les tests, mais un compte est néanmoins requis.
J’ai écrit ceci pour résoudre un problème que j’avais à la maison, et cela m’a permis d’économiser 100 USD par an. Merci, Python ! Merci CS50!
J’ai ouvert la source de ce projet à tous.
De plus, il s’agit délibérément d’une application à un seul fichier. Il est conçu pour être facile à cloner et à utiliser, d’où l’open source, et il est conçu pour être utilisé avec un service Linux afin qu’il puisse fonctionner en arrière-plan. Il peut théoriquement être exécuté sur toutes les plates-formes, MAC, Windows, Linux, les appareils linux embarqués et les équipements de réseau domestique.
J’ai testé cela sur Windows 10, Debian 9 Stretch et Max OSX Mojave.
J’ai eu du mal à prendre CS50 Web et je travaille actuellement sur mon projet final pour CS50 Web.
Santé,
Conor
Client DNS dynamique Google Cloud
Il s’agit d’un script DNS dynamique simple pour Google Cloud DNS. Le script vérifie son adresse IP publique, puis, en fonction de sa configuration, il lit dans le fichier de configuration, vérifie si Google Cloud DNS possède une entrée DNS correspondante. Si aucune entrée correspondante n’est trouvée, le script en créera une. Si une entrée correspondante est trouvée, mais a une adresse IP qui ne correspond pas à celle trouvée par le script, le script se mettra à jour puis l’entrée Google Cloud (lire supprimer, puis créer). Enfin, si le fichier de configuration des scripts correspond à celui de l’entrée DNS Google Cloud, il dormira pendant un intervalle de x et le processus se répétera.
Ce projet comprend les éléments suivants:
- gcloud-ddns.py : le script client dns dynamique
- ddns-conf.yaml: fichier de configuration des programmes
- exigences.txt: exigences à installer
Exigences
Ce script nécessite Python 3.6 ou supérieur. les cordes f sont largement utilisées. Les exigences relatives aux emballages sont énumérées dans exigences.txt
Utilisation
Usage: python gcloud-ddns.py
Configuration
$ git clone [email protected]:conorcunningham/google-ddns.git$ cd google-ddns$ python3 gcloud-ddns.py
Le script s’exécutera au premier plan. Je vais jouer avec et le tester pour voir s’il peut fonctionner de manière fiable en tant que service.
Fichier de configuration
La configuration du script est lue à partir d’un fichier yaml. Voici le contenu de l’exemple ddns-conf.fichier 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
Le script accepte un argument CLI optionnel qui est le chemin d’accès au fichier de configuration. Si aucun n’est donné, le script recherchera ddns-config.yaml
dans le même répertoire que le script.
- host : nom de domaine complet de l’hôte que vous souhaitez définir. NB * Vous devez inclure le. après le .com. Ceci est une exigence de Google /
- project_id: Votre ID de projet dans Google Cloud
- managed_zone: Le nom de votre zone gérée dans Google Cloud
- domain: Votre nom de domaine
- ttl: Le nombre de secondes pour l’intervalle TTL
- : Combien de temps le script va dormir avant de s’exécuter à nouveau
- api-key : Chemin d’accès à la clé API au format JSON
- log-path: Chemin d’accès au fichier journal
Authentification
Pour utiliser l’API Google Cloud, vous aurez besoin d’une clé API pour votre compte. Cette clé sera un fichier json et doit être configurée dans le fichier de configuration.
Le script définira la variable d’environnement GOOGLE_APPLICATION_CREDENTIALS
sur le chemin de votre clé API et les modules de Google utiliseront cette variable d’environnement pour gérer l’authentification.
os.environ = api_key
Docker
Un fichier Dockerfile est inclus dans le référentiel afin que vous puissiez le lancer en tant que conteneur dans une instance Docker.
docker build -t google-ddns .
La commande docker par défaut attend une configuration.fichier yaml dans le répertoire /ddns
docker run -it --rm -v <path/to/config>:/ddns google-ddns
Gardez à l’esprit que les chemins à l’intérieur du fichier de configuration sont relatifs au conteneur
api-key: '/ddns/ddns-api-key.json'logfile: '/ddns/ddns.log'...
Voici un fichier docker-compose rapide et sale si vous l’utilisez
version: '3'services: ddns: image: google-ddns volumes: - ./config:/ddns
ipify.org API
Ce projet utilise le snazzy ipify.org API pour récupérer l’adresse IP publique des clients.