U vostru propiu DNS dinamicu cù CloudFlare

Prélude

U vostru propiu DNS dinamicu cù CloudFlare Per i bisogni persunali in casa, aghju installatu VSphere, nantu à quale aghju un router virtuale è un servitore Ubuntu cum'è un servitore media è una mansa di altre boni, è questu servitore deve esse accessibile da Internet. Ma u prublema hè chì u mo fornitore dà dati statici per soldi, chì pò sempre esse usatu per scopi più utili. Dunque, aghju utilizatu a combinazione ddclient + cloudflare.

Tuttu era bè finu à chì ddclient hà cessatu di travaglià. Dopu avè sbuchjatu un pocu, aghju capitu chì era ghjuntu l'ora di crutches è di e biciclette, postu chì era troppu tempu per truvà u prublema. À a fine, tuttu hè diventatu un picculu demoniu chì funziona solu, è ùn aghju micca bisognu di nunda.
Sè qualchissia hè interessatu, benvenutu à cat.

Strumenti utilizati è cumu "si" travaglia

Allora a prima cosa chì aghju scupertu nantu à u situ web cloudflare hè tuttu ciò chì avete bisognu di sapè API. È aghju digià pusatu per implementà tuttu in Python (dopu à avè familiarizatu cù Python, l'aghju sempre più utilizatu per qualchi compiti simplici o quandu aghju bisognu di fà rapidamente un prototipu), quandu di colpu aghju trovu una implementazione quasi pronta.
In generale, u wrapper hè statu pigliatu com'è una basa python-cloudflare.

Aghju pigliatu unu di l'esempii per aghjurnà DNS è aghjunghje l'usu di un schedariu di cunfigurazione è l'abilità di aghjurnà parechji registri A in una zona è, sicuru, un numaru illimitatu di zoni.

A logica hè a siguenti:

  1. U script riceve una lista di zoni da u schedariu di cunfigurazione è passa per elli
  2. In ogni zona, u script passa per ogni record DNS di tipu A o AAAA è verifica l'IP Publicu cù u record.
  3. Se l'IP hè diversu, u cambia; se no, salta l'iterazione di u ciclu è passa à u prossimu.
  4. Si dorme per u tempu specificatu in a cunfigurazione

Stallazione è cunfigurazione

Puderia esse pussibule di fà un pacchettu .deb, ma ùn sò micca bè in questu, è ùn hè micca cusì difficiule.
Aghju descrittu u prucessu in grande detail in README.md at pagina di repository.

Ma solu in casu, l'aghju descrittu in russu in termini generali:

  1. Assicuratevi di avè installatu python3 è python3-pip, se no, installate (in Windows, python3-pip hè stallatu cù Python)
  2. Clone o scaricate u repository
  3. Installa e dipendenze necessarie.
    python3 -m pip install -r requirements.txt

  4. Eseguite u script d'installazione
    Per Linux:

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

    Per Windows: windows_install.bat

  5. Edite u schedariu di cunfigurazione
    Per Linux:

    sudoedit /etc/zen-cf-ddns.conf

    Per Windows:

    Aprite u schedariu zen-cf-ddns.conf in u cartulare induve installate u script.

    Questu hè un schedariu JSON regulare, i paràmetri ùn sò nunda di complicatu - aghju descrittu specificamente 2 diverse zone in questu cum'è un esempiu.

Chì ci hè daretu à l'installatori?

install.sh per Linux:

  1. Un utilizatore hè creatu per eseguisce u daemon, senza creà un repertoriu di casa è senza a capacità di login.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Un schedariu di log hè creatu in /var/log/
  3. Fate l'utilizatore novu creatu u pruprietariu di u schedariu di log
  4. I schedari sò copiati in i so posti (config in /etc, file executable in /usr/bin, file service in /lib/systemd/system)
  5. U serviziu hè attivatu

windows_install.bat per Windows:

  1. Copia u schedariu eseguibile è di cunfigurazione in un cartulare specificatu da l'utilizatore
  2. Crea un compitu in u pianificatore per eseguisce u script à l'iniziu di u sistema
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Dopu avè cambiatu a cunfigurazione, u script deve esse riavviatu; in Linux tuttu hè simplice è familiar:

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

per Windows, duverete tumbà u prucessu pythonw è ripiglià u script (sò troppu pigro per scrive un serviziu per Windows in C#):

taskkill /im pythonw.exe

Questu compie a stallazione è a cunfigurazione, gode di a vostra salute.

Per quelli chì volenu vede u codice Python micca cusì bellu, quì hè repository in GitHub.

Licenziatu MIT, cusì fate cù queste cose ciò chì vulete.

PS: Capiscu chì hè diventatu un pocu di crutch, ma face u so travagliu cù un bang.

UPD: 11.10.2019/17/37 XNUMX:XNUMX
Aghju trovu 1 prublema più, è se qualcunu mi dice cumu risolve, vi saraghju assai grati.
U prublema hè chì si stallanu dependenzii senza sudo python -m pip install -r ..., allora i moduli ùn saranu micca visibili da l'utilizatori di serviziu, è ùn vogliu micca furzà l'utilizatori à installà moduli sottu sudo, è questu hè micca currettu.
Cumu fà vede bella?
UPD: 11.10.2019/19/16 XNUMX:XNUMX U prublema hè stata risolta cù venv.
Ci sò stati parechji cambiamenti. A prossima liberazione serà in i prossimi ghjorni.

Source: www.habr.com

Add a comment