conorcunningham / google-ddns

Obs Detta projekt kräver användning av Google Cloud, och Google Cloud kräver autentisering. Specifikt, i detta projekt, och när man använder Google Clouds DNS, kräver man en API-nyckel. Det är effektivt gratis att använda Google DNS för testning, men ett konto krävs ändå.

jag skrev detta för att lösa ett problem som jag hade hemma, och det slutade spara mig $100 USD per år. Tack, Python! Tack CS50!

jag har öppnat detta projekt för alla att använda.

dessutom är detta medvetet en filansökan. Den är utformad för att vara lätt att klona och använda, därav öppen källkod, och den är utformad för att användas med en Linux-tjänst så att den kan köras i bakgrunden. Det kan teoretiskt köras på alla plattformar, MAC, Windows, Linux, inbäddade linux-enheter och hemnätverksutrustning.

jag har testat detta på Windows 10, Debian 9 Stretch och Max OSX Mojave.

jag har haft en hoot med CS50 Web och arbetar för närvarande med mitt slutliga projekt för CS50 Web.

skål,

Conor

Google Cloud Dynamic DNS Client

Detta är ett enkelt dynamiskt DNS-skript för Google Cloud DNS. Skriptet kommer att kontrollera om dess offentliga IP-adress, och sedan baserat på dess konfiguration det läsa från konfigurationsfilen, kontrollera om Google Cloud DNS har en motsvarande DNS-post. Om ingen motsvarande post hittas skapar skriptet en. Om en motsvarande post hittas, men har en IP-adress som inte matchar det som skriptet hittade, kommer skriptet att uppdateras sedan Google Cloud entry (läs radera och skapa sedan). Slutligen, om skriptkonfigurationsfilen matchar den för Google Cloud DNS-posten, kommer den att sova i ett intervall på x, och processen upprepas.

detta projekt består av följande komponenter:

  • gcloud-ddns.py: det dynamiska dns-klientskriptet
  • DDNS-conf.yaml: program konfigurationsfil
  • krav.txt: krav som ska installeras

krav

detta skript kräver Python 3.6 eller senare. f-strängar används i stor utsträckning. Paketkrav listas i krav.Txt

användning

Usage: python gcloud-ddns.py 

Inställningar

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

skriptet kommer att köras i förgrunden. Jag ska leka med det och testa det för att se om det kan fungera pålitligt som en tjänst.

konfigurationsfil

konfigurationen för skriptet läses från en yaml-fil. Här är innehållet i exemplet ddns-conf.yaml-fil

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

skriptet accepterar ett valfritt CLI-argument som är sökvägen till konfigurationsfilen. Om inget anges kommer skriptet att leta efter ddns-config.yaml i samma katalog som skriptet.

  • värd: det fullständigt kvalificerade domännamnet för den värd du vill ställa in. OBS* Du måste inkludera . efter. com. Detta är ett Google-krav/
  • project_id: ditt projekt-ID i Google Cloud
  • managed_zone: namnet på din hanterade zon i Google Cloud
  • domän: ditt domännamn
  • TTL: antalet sekunder för TTL
  • intervall: hur länge skriptet kommer att sova innan du kör igen
  • API-nyckel: sökväg till API-nyckeln i JSON-format
  • log-sökväg: Sökväg till loggfilen

autentisering

för att kunna använda Google Cloud API behöver du en API-nyckel för ditt konto. Den här nyckeln kommer att vara en json-fil och måste konfigureras i konfigurationsfilen.

skriptet ställer in GOOGLE_APPLICATION_CREDENTIALS miljövariabel till sökvägen för din API-nyckel och Googles moduler använder denna miljövariabel för att hantera autentisering.

os.environ = api_key

Docker

en Dockerfil ingår i förvaret så att du kan starta detta som en behållare i en Docker-instans.

docker build -t google-ddns .

standard docker-kommandot förväntar sig en konfiguration.yaml-fil i / ddns-katalogen

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

Tänk på att sökvägarna i konfigurationsfilen är i förhållande till behållaren

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

här är en snabb och smutsig docker-compose-fil om du använder det

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

ipify.org API

detta projekt använder sig av snazzy ipify.org API för att hämta klienternas offentliga IP-adress.

Lämna ett svar

Din e-postadress kommer inte publiceras.

Previous post hur man rengör en kaffekvarn och dess grader ordentligt
Next post De bästa mikrofonerna för filmskapande: 2020-guiden