Ang imong kaugalingon nga dinamikong DNS gamit ang CloudFlare

Pasiuna

Ang imong kaugalingon nga dinamikong DNS gamit ang CloudFlare Alang sa personal nga mga panginahanglanon sa balay, akong gi-install ang VSphere, diin nagpadagan ako usa ka virtual nga router ug usa ka server sa Ubuntu ingon usa ka server sa media ug usa ka hugpong sa ubang mga butang, ug kini nga server kinahanglan nga ma-access gikan sa Internet. Apan ang problema mao nga ang akong provider naghatag og static nga datos alang sa salapi, nga kanunay magamit alang sa mas mapuslanon nga mga katuyoan. Busa, gigamit nako ang kombinasyon sa ddclient + cloudflare.

Maayo ang tanan hangtod nga mihunong ang ddclient sa pagtrabaho. Human sa pagsud-ong og gamay, akong naamgohan nga ang panahon miabot na alang sa mga saklay ug mga bisikleta, tungod kay nagkinahanglag daghang panahon sa pagpangita sa problema. Sa katapusan, ang tanan nahimo nga usa ka gamay nga daemon nga molihok lang, ug wala na ako magkinahanglan bisan unsa pa.
Kung kinsa ang interesado, welcome sa iring.

Mga himan nga gigamit ug kung giunsa "kini" molihok

Mao nga ang una nakong nahibal-an sa website sa cloudflare mao ang tanan nga kinahanglan nimo mahibal-an API. Ug nakalingkod na ako aron ipatuman ang tanan sa Python (pagkahuman nasinati ang Python, labi nakong gigamit kini alang sa pipila ka yano nga mga buluhaton o kung kinahanglan nako nga dali nga maghimo usa ka prototype), sa diha nga kalit akong nakit-an ang usa ka hapit andam nga pagpatuman.
Sa kinatibuk-an, ang wrapper gikuha ingon nga basehan python-cloudflare.

Gikuha nako ang usa sa mga pananglitan sa pag-update sa DNS ug gidugang ang paggamit sa usa ka configuration file ug ang abilidad sa pag-update sa daghang A nga mga rekord sulod sa usa ka zone ug, siyempre, usa ka walay kinutuban nga gidaghanon sa mga zone.

Ang lohika mao ang mosunod:

  1. Ang script nakadawat usa ka lista sa mga zone gikan sa file sa pag-configure ug nag-loop sa kanila
  2. Sa matag zone, ang script nag-loop sa matag DNS nga rekord sa tipo A o AAAA ug gisusi ang Public IP gamit ang rekord
  3. Kung lahi ang IP, usbon kini; kung dili, laktawan ang pag-uli sa loop ug mopadayon sa sunod.
  4. Nakatulog sa oras nga gitakda sa config

Pag-instalar ug pag-ayo

Mahimong posible nga makahimo og usa ka .deb nga pakete, apan dili ako maayo niini, ug kini dili kaayo lisud.
Gihulagway nako ang proseso sa daghang detalye sa README.md sa panid sa repository.

Apan sa kaso lang, akong ihulagway kini sa Russian sa kinatibuk-ang termino:

  1. Siguruha nga na-install nimo ang python3 ug python3-pip, kung dili, i-install kini (sa Windows, gi-install ang python3-pip kauban ang Python)
  2. I-clone o i-download ang repositoryo
  3. I-install ang gikinahanglan nga mga dependency.
    python3 -m pip install -r requirements.txt

  4. Pagdalagan ang script sa pag-install
    Alang sa Linux:

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

    Para sa Windows: windows_install.bat

  5. I-edit ang configuration file
    Alang sa Linux:

    sudoedit /etc/zen-cf-ddns.conf

    Alang sa Windows:

    Ablihi ang zen-cf-ddns.conf file sa folder diin imong gi-install ang script.

    Kini usa ka regular nga JSON file, ang mga setting wala’y komplikado - espesipikong gihubit nako ang 2 lainlaing mga zone niini ingon usa ka pananglitan.

Unsa ang luyo sa mga installer?

install.sh alang sa Linux:

  1. Ang usa ka user gimugna aron sa pagpadagan sa daemon, nga walay paghimo og home directory ug walay abilidad sa pag-login.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Ang usa ka log file gihimo sa /var/log/
  3. Himua nga tag-iya sa log file ang bag-ong gibuhat nga tiggamit
  4. Ang mga file gikopya sa ilang mga lugar (config sa / etc, executable file sa / usr / bin, service file sa / lib / systemd / system)
  5. Ang serbisyo gi-aktibo

windows_install.bat alang sa Windows:

  1. Gikopya ang executable ug configuration file ngadto sa user-specified folder
  2. Naghimo usa ka buluhaton sa scheduler aron mapadagan ang script sa pagsugod sa sistema
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Pagkahuman sa pagbag-o sa config, ang script kinahanglan nga i-restart; sa Linux ang tanan yano ug pamilyar:

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

para sa Windows kinahanglan nimong patyon ang proseso sa pythonw ug ipadagan pag-usab ang script (Tapolan kaayo ko sa pagsulat og serbisyo para sa Windows sa C#):

taskkill /im pythonw.exe

Nakompleto niini ang pag-instalar ug pag-configure, pahimusli kini sa imong kahimsog.

Alang niadtong gusto makakita sa dili kaayo nindot nga Python code, ania kini repository sa GitHub.

Lisensyado sa MIT, busa buhata kini nga butang kung unsa ang imong gusto.

PS: Nasabtan nako nga kini nahimong usa ka gamay nga saklay, apan kini naghimo sa iyang trabaho uban sa usa ka bang.

UPD: 11.10.2019/17/37 XNUMX:XNUMX
Nakakita ko og 1 pa nga problema, ug kung adunay mosulti kanako unsaon pagsulbad niini, ako mapasalamaton kaayo.
Ang problema mao nga kung mag-install ka mga dependency nga wala sudo python -m pip install -r ..., nan ang mga module dili makita gikan sa tiggamit sa serbisyo, ug dili ko gusto nga pugson ang mga tiggamit sa pag-install sa mga module sa ilawom sa sudo, ug kini mao ang dili husto.
Unsaon paghimo niini nga nindot tan-awon?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Nasulbad ang problema gamit ang venv.
Adunay daghang mga pagbag-o. Ang sunod nga pagpagawas mahitabo sa sunod nga mga adlaw.

Source: www.habr.com

Idugang sa usa ka comment