conorcunningham / google-ddns

NB Dieses Projekt erfordert die Verwendung von Google Cloud und Google Cloud erfordert Authentifizierung. Insbesondere in diesem Projekt und bei Verwendung des DNS von Google Cloud ist ein API-Schlüssel erforderlich. Es ist praktisch kostenlos, Google DNS zum Testen zu verwenden, es ist jedoch ein Konto erforderlich.

Ich habe dies geschrieben, um ein Problem zu lösen, das ich zu Hause hatte, und es hat mir 100 USD pro Jahr gespart. Danke, Python! Danke CS50!

Ich habe dieses Projekt für alle geöffnet.

Darüber hinaus ist dies absichtlich eine Ein-Datei-Anwendung. Es ist so konzipiert, dass es einfach zu klonen und zu verwenden ist, daher die Open Source, und es ist so konzipiert, dass es mit einem Linux-Dienst verwendet werden kann, damit es im Hintergrund ausgeführt werden kann. Es kann theoretisch auf allen Plattformen, MAC, Windows, Linux, Embedded Linux-Geräten und Heimnetzwerkgeräten ausgeführt werden.

Ich habe dies unter Windows 10, Debian 9 Stretch und Max OSX Mojave getestet.

Ich hatte einen Schrei unter CS50 Web und arbeite gerade an meinem letzten Projekt für CS50 Web.

Prost,

Conor

Google Cloud Dynamic DNS Client

Dies ist ein einfaches dynamisches DNS-Skript für Google Cloud DNS. Das Skript sucht nach seiner öffentlichen IP-Adresse und überprüft dann anhand seiner Konfiguration, die es aus der Konfigurationsdatei gelesen hat, ob Google Cloud DNS über einen entsprechenden DNS-Eintrag verfügt. Wenn kein entsprechender Eintrag gefunden wird, erstellt das Skript einen. Wenn ein entsprechender Eintrag gefunden wird, aber eine IP-Adresse hat, die nicht mit der vom Skript gefundenen übereinstimmt, aktualisiert das Skript den Google Cloud-Eintrag (lesen Sie Löschen, dann erstellen). Wenn die Skriptkonfigurationsdatei mit der des Google Cloud DNS-Eintrags übereinstimmt, wird sie für ein Intervall von x in den Ruhezustand versetzt, und der Vorgang wird wiederholt.

Dieses Projekt besteht aus folgenden Komponenten:

  • gcloud-ddns.py : das dynamische DNS-Client-Skript
  • ddns-conf.yaml: Programme Konfigurationsdatei
  • Anforderungen.txt: Zu installierende Anforderungen

Anforderungen

Dieses Skript erfordert Python 3.6 oder höher. f-Saiten werden ausgiebig verwendet. Paketanforderungen sind unter Anforderungen aufgeführt.txt

Verwendung

Usage: python gcloud-ddns.py 

Einrichtung

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

Das Skript wird im Vordergrund ausgeführt. Ich werde damit herumspielen und testen, ob es zuverlässig als Dienst ausgeführt werden kann.

Konfigurationsdatei

Die Konfiguration für das Skript wird aus einer YAML-Datei gelesen. Hier sind die Inhalte des Beispiels ddns-conf.yaml-Datei

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

Das Skript akzeptiert ein optionales CLI-Argument, das der Pfad zur Konfigurationsdatei ist. Wenn keine angegeben ist, sucht das Skript im selben Verzeichnis wie das Skript nach ddns-config.yaml.

  • host: Der vollqualifizierte Domänenname des Hosts, den Sie festlegen möchten. NB * Sie müssen die . dies ist eine Google-Anforderung/
  • project_id: Ihre Projekt-ID in Google Cloud
  • managed_zone: Der Name Ihrer verwalteten Zone in Google Cloud
  • domain: Ihr Domainname
  • ttl: Die Anzahl der Sekunden für die TTL
  • Intervall: Wie lange das Skript vor der erneuten Ausführung in den Ruhezustand versetzt wird
  • api-key: Pfad zum API-Key im JSON-Format
  • log-Pfad: Pfad zur Protokolldatei

Authentifizierung

Um die Google Cloud API verwenden zu können, benötigen Sie einen API-Schlüssel für Ihr Konto. Dieser Schlüssel ist eine JSON-Datei und muss in der Konfigurationsdatei konfiguriert werden.

Das Skript setzt die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS auf den Pfad Ihres API-Schlüssels, und die Module von Google verwenden diese Umgebungsvariable für die Authentifizierung.

os.environ = api_key

Docker

Eine Docker-Datei ist im Repository enthalten, sodass Sie diese als Container in einer Docker-Instanz starten können.

docker build -t google-ddns .

Der Standard-Docker-Befehl erwartet eine Konfiguration.yaml-Datei im Verzeichnis /ddns

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

Beachten Sie, dass die Pfade in der Konfigurationsdatei relativ zum Container sind

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

Hier ist eine schnelle und schmutzige Docker-Compose-Datei, wenn Sie diese verwenden

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

ipify.org API

Dieses Projekt nutzt die pfiffige ipify.org API zum Abrufen der öffentlichen IP-Adresse des Clients.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Previous post Wie man eine Kaffeemühle und ihre Grate richtig säubert
Next post Die besten Mikrofone für das Filmemachen: Der Leitfaden für 2020