Ären eegene dynamesche DNS mat CloudFlare

Viruerteel

Ären eegene dynamesche DNS mat CloudFlare Fir perséinlech Besoinen doheem hunn ech VSphere installéiert, op deem ech e virtuelle Router an en Ubuntu-Server als Medienserver an eng Rëtsch aner Goodies lafen, an dëse Server soll vum Internet zougänglech sinn. Mä de Problem ass, datt mäi Provider statesch Donnéeën fir Suen gëtt, déi ëmmer fir méi nëtzlech Zwecker benotzt ginn. Dofir hunn ech d'ddclient + cloudflare Kombinatioun benotzt.

Alles war gutt bis den ddclient opgehalen huet ze schaffen. Nodeems ech e bëssen ëmgekuckt hunn, hunn ech gemierkt datt d'Zäit komm ass fir d'Krüchen a Vëloen, well et ze vill Zäit brauch fir de Problem ze fannen. Um Enn huet alles an e klenge Daemon ëmgewandelt deen just funktionnéiert, an ech brauch näischt anescht.
Wann iergendeen interesséiert ass, wëllkomm op Kaz.

Tools benotzt a wéi "et" funktionnéiert

Also dat éischt wat ech op der Cloudflare Websäit erausfonnt hunn ass alles wat Dir wësse musst API. An ech hat mech scho gesat fir alles am Python ëmzesetzen (nodeems ech mam Python kenneléiert hunn, benotzen ech en ëmmer méi fir e puer einfach Aufgaben oder wann ech séier e Prototyp muss maachen), wéi ech op eemol op eng bal fäerdeg Ëmsetzung koum.
Am Allgemengen gouf de Wrapper als Basis geholl python-wollekflare.

Ech hunn ee vun de Beispiller fir d'Aktualiséierung vun DNS geholl an d'Benotzung vun enger Konfiguratiounsdatei bäigefüügt an d'Fäegkeet fir e puer A-Records an enger Zone ze aktualiséieren an natierlech eng onlimitéiert Zuel vun Zonen.

D'Logik ass wéi follegt:

  1. De Skript kritt eng Lëscht vun Zonen aus der Konfiguratiounsdatei a schläift duerch se
  2. An all Zone schleift de Skript duerch all DNS-Rekord vum Typ A oder AAAA a kontrolléiert d'Ëffentlech IP mam Rekord
  3. Wann d'IP anescht ass, ännert se se; wann net, spréngt se d'Loop-Iteratioun iwwer a geet op déi nächst.
  4. Schléift fir d'Zäit an der Configuratioun spezifizéiert

Installatioun a Konfiguratioun

Et wier méiglecherweis méiglech e .deb Package ze maachen, awer ech sinn net gutt op dëser, an et ass net all sou schwéier.
Ech beschriwwen de Prozess am Detail am README.md op Repository Säit.

Awer just am Fall, wäert ech et allgemeng op Russesch beschreiwen:

  1. Vergewëssert Iech datt Dir python3 a python3-pip installéiert hutt, wann net, installéiere se (op Windows, python3-pip ass zesumme mam Python installéiert)
  2. Klon oder luet de Repository erof
  3. Installéiert déi néideg Ofhängegkeeten.
    python3 -m pip install -r requirements.txt

  4. Run der Installatioun Skript
    Fir Linux:

    chmod +x install.sh
    sudo ./install.sh

    Fir Windows: windows_install.bat

  5. Änneren d'Konfiguratiounsdatei
    Fir Linux:

    sudoedit /etc/zen-cf-ddns.conf

    Fir Windows:

    Öffnen der zen-cf-ddns.conf Datei am Dossier wou Dir de Skript installéiert hutt.

    Dëst ass eng regulär JSON-Datei, d'Astellunge sinn näischt komplizéiert - ech hunn 2 verschidden Zonen an et als Beispill speziell beschriwwen.

Wat stécht hannert den Installateuren?

install.sh fir Linux:

  1. E Benotzer gëtt erstallt fir den Daemon auszeféieren, ouni en Heemverzeechnes ze kreéieren an ouni d'Fäegkeet ze aloggen.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Eng Logdatei gëtt an /var/log/ erstallt
  3. Maacht den nei erstallte Benotzer de Besëtzer vun der Logdatei
  4. D'Dateie ginn op hir Plazen kopéiert (config an /etc, ausführbar Datei an /usr/bin, Servicedatei an /lib/systemd/system)
  5. De Service ass aktivéiert

windows_install.bat fir Windows:

  1. Kopéiert déi ausführbar a Konfiguratiounsdatei an e Benotzerspezifizéierten Dossier
  2. Erstellt eng Aufgab am Scheduler fir de Skript beim Systemstart ze lafen
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Nodeems Dir d'Konfiguratioun geännert hutt, muss de Skript nei gestart ginn; am Linux ass alles einfach a vertraut:

sudo service zen-cf-ddns start
sudo service zen-cf-ddns stop
sudo service zen-cf-ddns restart
sudo service zen-cf-ddns status

fir Windows musst Dir de Pythonw Prozess ëmbréngen an de Skript nei ausféieren (ech sinn ze faul fir e Service fir Windows an C # ze schreiwen):

taskkill /im pythonw.exe

Dëst fäerdeg d'Installatioun an d'Konfiguratioun, genéisst et fir Är Gesondheet.

Fir déi, déi de net sou schéine Python Code wëllen gesinn, hei ass et Repository op GitHub.

MIT lizenzéiert, also maacht mat dëse Saachen wat Dir wëllt.

PS: Ech verstinn, datt et e bëssen vun engem Krëpp erausgestallt gouf, awer et mécht seng Aarbecht mat engem Knall.

UPD: 11.10.2019/17/37 XNUMX:XNUMX
Ech hunn 1 méi Problem fonnt, a wann een mir seet wéi ech et soll léisen, wäert ech ganz dankbar sinn.
De Problem ass datt wann Dir Ofhängegkeeten installéiert ouni sudo python -m pip install -r ..., da wäerten d'Moduler net vum Service Benotzer sichtbar sinn, an ech wéilt d'Benotzer net forcéiere fir Moduler ënner sudo z'installéieren, an dëst ass net richteg.
Wéi et schéin ze maachen?
UPD: 11.10.2019/19/16 XNUMX:XNUMX De Problem gouf mat venv.
Et goufen e puer Ännerungen. Déi nächst Verëffentlechung wäert an den nächsten Deeg sinn.

Source: will.com

Setzt e Commentaire