CloudFlare ilə öz dinamik DNS-iniz

Müqəddimə

CloudFlare ilə öz dinamik DNS-iniz Evdəki şəxsi ehtiyaclar üçün mən virtual marşrutlaşdırıcı və Ubuntu serverini media serveri və bir çox digər yaxşılıqlar kimi işlətdiyim VSphere-i qaldırdım və bu server İnternetdən əlçatan olmalıdır. Ancaq problem ondadır ki, mənim ISP pul üçün statik təmin edir, bu da həmişə daha yaxşı istifadə edilə bilər. Buna görə də bir dəstə ddclient + cloudflare istifadə etdim.

Ddclient işləməyi dayandırana qədər hər şey yaxşı idi. Bir az götürdükdən sonra başa düşdüm ki, problem axtarmaq çox vaxt aparmağa başladığından, qoltuqaltı və velosipedlərin vaxtı çatıb. Sonda hər şey sadəcə işləyən kiçik bir cinə çevrildi, amma daha çox ehtiyacım yoxdur.
Kimin qayğısına qalır - pişik altında xoş gəlmisiniz.

İstifadə olunan alətlər və "bu" necə işləyir

Beləliklə, cloudflare saytında öyrəndiyim ilk şey, bilməli olduğunuz hər şeydir API. Və mən artıq Python-da hər şeyi həyata keçirmək üçün oturdum (Python ilə tanış olduqdan sonra onu getdikcə daha çox bəzi sadə tapşırıqlar üçün istifadə edirəm və ya tez bir prototip düzəltmək lazım olduqda), birdən demək olar ki, hazır bir tətbiqetmə ilə qarşılaşdım.
Ümumiyyətlə, sarğı əsas götürüldü python-bulud alovu.

DNS-i yeniləmək üçün nümunələrdən birini götürdüm və konfiqurasiya faylının istifadəsini və zona daxilində bir neçə A qeydini və əlbəttə ki, məhdudiyyətsiz sayda zonaları yeniləmək imkanı əlavə etdim.

Məntiq belədir:

  1. Skript konfiqurasiya faylından zonaların siyahısını alır və onlar arasında dövr edir
  2. Hər zonada skript A və ya AAAA tipli hər bir DNS qeydindən keçir və İctimai IP-ni qeydlə yoxlayır
  3. İP fərqlidirsə, onu dəyişir, yoxsa, döngənin iterasiyasını atlayır və növbəti birinə keçir.
  4. Konfiqurasiyada göstərilən vaxt ərzində yatır

Quraşdırma və konfiqurasiya

Yəqin ki, .deb paketi hazırlamaq olardı, amma mən bunda güclü deyiləm və o qədər də çətin deyil.
Prosesi README.md-də ətraflı təsvir etdim depo səhifəsi.

Ancaq hər halda, rus dilində ümumi şəkildə təsvir edəcəyəm:

  1. Python3 və python3-pip-in quraşdırıldığından əmin olun, əgər quraşdırılmayıbsa (Windows-da python3-pip Python ilə quraşdırılıb)
  2. Repozitoriyanı klonlayın və ya endirin
  3. Lazım olan asılılıqları quraşdırın.
    python3 -m pip install -r requirements.txt

  4. Quraşdırma skriptini işə salın
    Linux üçün:

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

    Windows üçün: windows_install.bat

  5. Konfiqurasiya faylını redaktə edin
    Linux üçün:

    sudoedit /etc/zen-cf-ddns.conf

    Windows üçün:

    Skripti quraşdırdığınız qovluqda zen-cf-ddns.conf faylını açın.

    Bu, adi bir JSON faylıdır, parametrlər mürəkkəb bir şey deyil - misal olaraq orada 2 fərqli zonanı xüsusi olaraq təsvir etdim.

Quraşdırıcıların arxasında nə dayanır?

Linux üçün install.sh:

  1. İstifadəçi ev kataloqu yaratmadan və daxil ola bilməyən demonu işə salmaq üçün yaradılır.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Qeydi /var/log/ ünvanına yazmaq üçün fayl yaradılır.
  3. Günlük faylının sahibini yeni yaradılmış istifadəçiyə təyin edin
  4. Fayllar öz yerlərinə kopyalanır (/etc-də konfiqurasiya, /usr/bin-də icra olunan fayl, /lib/systemd/system-də xidmət faylı)
  5. Xidmət aktivləşdirilib

Windows üçün windows_install.bat:

  1. İcra olunan və konfiqurasiya faylını istifadəçi tərəfindən müəyyən edilmiş qovluğa kopyalayır
  2. Sistemin başlanğıcında skripti işə salmaq üçün planlaşdırıcıda tapşırıq yaradır
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Konfiqurasiyanı dəyişdirdikdən sonra skript yenidən işə salınmalıdır, Linux-da hər şey sadə və tanışdır:

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

Windows üçün, pythonw prosesini öldürməli və skripti yenidən işə salmalı olacaqsınız (Windows altında C#-da xidmət yazmaq üçün çox tənbələm):

taskkill /im pythonw.exe

Bu quraşdırma və konfiqurasiyanı tamamlayır, sağlamlığınız üçün istifadə edin.

Çox da gözəl olmayan Python koduna baxmaq istəyənlər üçün burada GitHub-da depo.

MIT lisenziyası, onunla istədiyinizi edin.

PS: Başa düşürəm ki, bir az qoltuqağacı çıxdı, amma tapşırığın öhdəsindən bir zərbə ilə gəlir.

UPD: 11.10.2019 17:37
Daha 1 problem tapdım və kimsə bunu necə həll edəcəyimi desə, çox minnətdar olaram.
Problem ondadır ki, siz asılılıqları sudo python -m pip install -r ... olmadan quraşdırsanız, o zaman modullar xidmət istifadəçisinin altından görünməyəcək və mən istifadəçiləri sudo altında modullar quraşdırmağa məcbur etmək istəməzdim və bu düzgün deyil.
Onu necə gözəl etmək olar?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Problem venv istifadə edərək həll edildi.
Bir neçə dəyişiklik olub. Növbəti buraxılış yaxın günlərdə olacaq.

Mənbə: www.habr.com

Добавить комментарий