N. B Ez a projekt a Google Cloud használatát igényli, a Google Cloud pedig hitelesítést igényel. Pontosabban, ebben a projektben, valamint a Google Cloud DNS használatakor API-kulcsra van szükség. A teszteléshez gyakorlatilag ingyenes a Google DNS használata, de ennek ellenére fiókra van szükség.
ezt azért írtam, hogy megoldjak egy otthoni problémát, és végül évi 100 USD-t takarítottam meg. Köszönöm, Python! Köszönöm CS50!
megnyitottam ezt a projektet mindenki számára.
Továbbá, ez szándékosan egy fájl alkalmazás. Úgy tervezték, hogy könnyen klónozható és használható legyen, így a nyílt forráskódú, és úgy tervezték, hogy egy Linux szolgáltatással használható legyen, hogy a háttérben futhasson. Elméletileg minden platformon futtatható, MAC, Windows, Linux, beágyazott linux eszközök és otthoni hálózati eszközök.
teszteltem ezt a Windows 10, Debian 9 Stretch és Max OSX Mojave.
már volt egy hoot figyelembe CS50 Web és én jelenleg dolgozik a végső projekt CS50 Web.
Cheers,
Conor
Google Cloud dinamikus DNS-kliens
ez egy egyszerű dinamikus DNS-szkript a Google Cloud DNS-hez. A szkript ellenőrzi a nyilvános IP-címét, majd a konfigurációs fájlból olvasott konfiguráció alapján ellenőrizze, hogy a Google Cloud DNS rendelkezik-e megfelelő DNS-bejegyzéssel. Ha nem található megfelelő bejegyzés, a szkript létrehoz egyet. Ha egy megfelelő bejegyzést talál, de van egy IP-címe, amely nem egyezik meg azzal, amit a szkript talált, akkor a szkript frissíti majd a Google Cloud bejegyzést (olvassa el a Törlés, majd a létrehozás). Végül, ha a szkriptek konfigurációs fájlja megegyezik a Google Cloud DNS bejegyzésével, akkor az X intervallumig alszik, és a folyamat megismétlődik.
ez a projekt a következő összetevőkből áll:
- gcloud-ddns.py: a dinamikus dns kliens szkript
- ddns-conf.yaml: programok konfigurációs fájl
- követelmények.txt: telepítendő követelmények
követelmények
ehhez a szkripthez Python 3.6 vagy újabb verzió szükséges. az f-húrokat széles körben használják. A csomag követelményeit a követelmények sorolják fel.txt
használat
Usage: python gcloud-ddns.py
Beállítás
$ git clone [email protected]:conorcunningham/google-ddns.git$ cd google-ddns$ python3 gcloud-ddns.py
a szkript az előtérben fog futni. Játszani fogok vele, és tesztelem, hogy megbízhatóan működik-e szolgáltatásként.
konfigurációs fájl
a parancsfájl konfigurációja egy yaml fájlból olvasható le. Itt található a DDNS-conf példa tartalma.yaml fájl
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
a szkript Elfogad egy opcionális CLI argumentumot, amely a konfigurációs fájl elérési útja. Ha nincs megadva, a parancsfájl a ddns-config.yaml
szót fogja keresni ugyanabban a könyvtárban, mint a szkript.
- gazdagép: a beállítani kívánt gazdagép teljesen minősített tartományneve. NB * meg kell adnia a . a .com. után ez a Google követelménye/
- project_id: a projekt azonosítója a Google Cloud-on belül
- managed_zone: a kezelt zóna neve a Google Cloud-ban
- domain: a domain neve
- ttl: a TTL másodperceinek száma
- intervallum: mennyi ideig alszik a szkript, mielőtt újra futtatná
- API-kulcs: az API-kulcs elérési útja JSON formátumban
- log-Path: A naplófájl elérési útja
hitelesítés
a Google Cloud API használatához API-kulcsra van szüksége a fiókjához. Ez a kulcs egy json fájl lesz, amelyet a konfigurációs fájlban kell konfigurálni.
a parancsfájl GOOGLE_APPLICATION_CREDENTIALS
környezeti változót állít be az API-kulcs elérési útjára, és a Google moduljai ezt a környezeti változót használják a hitelesítés kezelésére.
os.environ = api_key
Docker
a dockerfájl szerepel a tárolóban, így ezt tárolóként indíthatja el egy Docker példányon belül.
docker build -t google-ddns .
az alapértelmezett docker parancs egy konfigurációt vár.yaml fájl a / ddns könyvtárban
docker run -it --rm -v <path/to/config>:/ddns google-ddns
ne feledje, hogy a konfigurációs fájlon belüli útvonalak a tárolóhoz viszonyítva vannak
api-key: '/ddns/ddns-api-key.json'logfile: '/ddns/ddns.log'...
itt van egy gyors-piszkos docker-compose fájl, ha ezt használja
version: '3'services: ddns: image: google-ddns volumes: - ./config:/ddns
ipify.org API
ez a projekt a snazzy ipify.org API az ügyfelek nyilvános IP-címének lekéréséhez.