Id-DNS dinamiku tiegħek billi tuża CloudFlare

Daħla

Id-DNS dinamiku tiegħek billi tuża CloudFlare Għal bżonnijiet personali fid-dar, installajt VSphere, li fuqu nmexxi router virtwali u server Ubuntu bħala server tal-midja u mazz ta 'goodies oħra, u dan is-server għandu jkun aċċessibbli mill-Internet. Iżda l-problema hija li l-fornitur tiegħi jagħti data statika għall-flus, li dejjem tista 'tintuża għal skopijiet aktar utli. Għalhekk, użajt il-kombinazzjoni ddclient + cloudflare.

Kollox kien tajjeb sakemm ddclient waqaf jaħdem. Wara li ddawwar ftit, indunajt li kien wasal iż-żmien għall-krozzi u r-roti, peress li kien qed jieħu wisq ħin biex issib il-problema. Fl-aħħar, kollox inbidel f'daemon żgħir li jaħdem biss, u m'għandi bżonn xi ħaġa oħra.
Jekk xi ħadd hu interessat, merħba lil cat.

Għodod użati u kif taħdem

Allura l-ewwel ħaġa li sibt fuq il-websajt cloudflare hija dak kollu li għandek bżonn tkun taf dwaru API. U kont diġà poġġa bilqiegħda biex nimplimenta kollox f'Python (wara li fqar ma Python, nużaha dejjem aktar għal xi kompiti sempliċi jew meta jkolli bżonn nagħmel prototip malajr), meta f'daqqa waħda ltqajt ma' implimentazzjoni kważi lesta.
B'mod ġenerali, it-tgeżwir ittieħdet bħala bażi python-cloudflare.

Ħadt wieħed mill-eżempji għall-aġġornament tad-DNS u żidt l-użu ta 'fajl ta' konfigurazzjoni u l-abbiltà li taġġorna diversi rekords A f'żona u, ovvjament, numru illimitat ta 'żoni.

Il-loġika hija kif ġej:

  1. L-iskript jirċievi lista ta 'żoni mill-fajl tal-konfigurazzjoni u jgħaddi minnhom
  2. F'kull żona, l-iskript jgħaddi minn kull rekord DNS tat-tip A jew AAAA u jiċċekkja l-IP Pubbliku bir-rekord
  3. Jekk l-IP huwa differenti, jibdelha; jekk le, taqbeż l-iterazzjoni tal-linja u tgħaddi għal dik li jmiss.
  4. torqod għall-ħin speċifikat fil-konfigurazzjoni

Installazzjoni u konfigurazzjoni

Probabbilment ikun possibbli li tagħmel pakkett .deb, imma jien mhux tajjeb f'dan, u mhux daqshekk diffiċli.
Iddeskrivejt il-proċess f'dettall kbir f'README.md fuq paġna repożitorju.

Imma fil-każ, ser niddeskriviha bir-Russu f'termini ġenerali:

  1. Kun żgur li għandek installati python3 u python3-pip, jekk le, installahom (fuq Windows, python3-pip huwa installat flimkien ma 'Python)
  2. Ikklonja jew tniżżel ir-repożitorju
  3. Installa d-dipendenzi meħtieġa.
    python3 -m pip install -r requirements.txt

  4. Mexxi l-iskrittura tal-installazzjoni
    Għal Linux:

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

    Għall-Windows: windows_install.bat

  5. Editja l-fajl tal-konfigurazzjoni
    Għal Linux:

    sudoedit /etc/zen-cf-ddns.conf

    Għal Windows:

    Iftaħ il-fajl zen-cf-ddns.conf fil-folder fejn installajt l-iskript.

    Dan huwa fajl JSON regolari, is-settings m'huma xejn ikkumplikat - I ddeskriviet speċifikament 2 żoni differenti fiha bħala eżempju.

X'hemm wara l-installaturi?

install.sh għal Linux:

  1. Jinħoloq utent biex imexxi d-daemon, mingħajr ma jinħoloq direttorju tad-dar u mingħajr il-ħila li jidħol.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Inħoloq log file f'/var/log/
  3. Agħmel l-utent maħluq ġdid is-sid tal-fajl tal-ġurnal
  4. Il-fajls huma kkupjati fil-postijiet tagħhom (konfigurazzjoni f'/etc, fajl eżekutibbli f'/usr/bin, fajl tas-servizz f'/lib/systemd/system)
  5. Is-servizz huwa attivat

windows_install.bat għall-Windows:

  1. Kopji tal-fajl eżekutibbli u tal-konfigurazzjoni għal folder speċifikat mill-utent
  2. Joħloq kompitu fl-iskedar biex iħaddem l-iskritt fl-istartjar tas-sistema
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Wara li tinbidel il-konfigurazzjoni, l-iskript jeħtieġ li jerġa' jinbeda; fil-Linux kollox huwa sempliċi u familjari:

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

għall-Windows ser ikollok toqtol il-proċess pythonw u terġa 'tmexxi l-iskrittura (Jien għażżien wisq biex nikteb servizz għall-Windows f'C#):

taskkill /im pythonw.exe

Dan jikkompleta l-installazzjoni u l-konfigurazzjoni, igawduha għas-saħħa tiegħek.

Għal dawk li jridu jaraw il-kodiċi Python mhux daqshekk sabiħ, hawn hu repożitorju fuq GitHub.

Liċenzjati mill-MIT, hekk agħmel b'dan l-għalf dak li trid.

PS: Nifhem li rriżulta li kien daqsxejn ta 'crutch, iżda jagħmel xogħolha b'bang.

UPD: 11.10.2019/17/37 XNUMX:XNUMX
Sibt problema 1 oħra, u jekk xi ħadd jgħidli kif se nsolviha, inkun grat ħafna.
Il-problema hija li jekk tinstalla dipendenzi mingħajr sudo python -m pip install -r ..., allura l-moduli ma jkunux viżibbli mill-utent tas-servizz, u ma nixtieqx inġiegħel lill-utenti jinstallaw moduli taħt sudo, u dan huwa mhux korrett.
Kif tagħmel jidher sabiħ?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Il-problema ġiet solvuta bl-użu ta' venv.
Kien hemm diversi bidliet. Ir-rilaxx li jmiss se jkun fil-jiem li ġejjin.

Sors: www.habr.com

Żid kumment