I-DNS yakho enamandla usebenzisa i-CloudFlare

Isibikezelo

I-DNS yakho enamandla usebenzisa i-CloudFlare Ngezidingo zomuntu siqu ekhaya, ngifake i-VSphere, lapho ngisebenzisa khona irutha ebonakalayo kanye neseva ye-Ubuntu njengeseva yemidiya kanye nenqwaba yezinye izinto ezinhle, futhi le seva kufanele itholakale ku-inthanethi. Kodwa inkinga ukuthi umhlinzeki wami unikeza idatha emile yemali, engahlala isetshenziselwe izinjongo eziwusizo kakhulu. Ngakho-ke, ngisebenzise inhlanganisela ye-ddclient + cloudflare.

Konke kwakuhamba kahle kwaze kwaba yilapho u-ddclient eyeka ukusebenza. Ngemva kokuphenya kancane, ngabona ukuthi sase sifikile isikhathi sezinduku namabhayisikili, njengoba kwakuthatha isikhathi esiningi ukuthola inkinga. Ekugcineni, yonke into yaphenduka i-daemon encane esebenza nje, futhi angidingi lutho olunye.
Uma kukhona onentshisekelo, wamukelekile ekatini.

Amathuluzi asetshenzisiwe nokuthi "it" isebenza kanjani

Ngakho-ke into yokuqala engiyitholile kuwebhusayithi ye-cloudflare yikho konke odinga ukukwazi ngakho API. Futhi ngase ngivele ngihlezi phansi ukuze ngisebenzise yonke into e-Python (ngemuva kokujwayelana nePython, ngiyisebenzisela imisebenzi ethile elula noma lapho ngidinga ukwenza i-prototype ngokushesha), lapho ngokungazelelwe ngithola ukuqaliswa okwenziwa cishe ngomumo.
Ngokuvamile, i-wrapper yathathwa njengesisekelo i-python-cloudflare.

Ngithathe esinye sezibonelo zokubuyekeza i-DNS futhi ngengeza ukusetshenziswa kwefayela lokumisa kanye nekhono lokuvuselela amarekhodi amaningana A ngaphakathi kwendawo futhi, yiqiniso, inombolo engenamkhawulo yezindawo.

I-logic imi kanje:

  1. Iskripthi sithola uhlu lwamazoni ukusuka kufayela lokumisa futhi lungene kuwo
  2. Ezoni ngayinye, umbhalo uyangena kurekhodi ngalinye le-DNS lohlobo A noma i-AAAA bese uhlola i-IP Yomphakathi ngerekhodi.
  3. Uma i-IP ihlukile, iyayishintsha; uma kungenjalo, yeqa i-loop iteration bese idlulela kokulandelayo.
  4. Ilala ngesikhathi esishiwo kulungiselelo

Ukufakwa nokumiswa

Cishe kungenzeka ukwenza iphakheji ye-.deb, kodwa angilungile kulokhu, futhi akunzima kangako.
Ngichaze inqubo ngokuningiliziwe kokuthi README.md at ikhasi eliyinqolobane.

Kodwa uma kwenzeka, ngizoyichaza ngesiRashiya ngamagama ajwayelekile:

  1. Qinisekisa ukuthi ufake i-python3 ne-python3-pip, uma kungenjalo, yifake (ku-Windows, i-python3-pip ifakiwe kanye nePython)
  2. Clone noma landa inqolobane
  3. Faka okuncikile okudingekayo.
    python3 -m pip install -r requirements.txt

  4. Qalisa iskripthi sokufaka
    Okwe-Linux:

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

    OkweWindows: windows_install.bat

  5. Hlela ifayela lokumisa
    Okwe-Linux:

    sudoedit /etc/zen-cf-ddns.conf

    OkweWindows:

    Vula ifayela le-zen-cf-ddns.conf kufolda ofake kuyo umbhalo.

    Leli ifayela le-JSON elivamile, izilungiselelo aziyona into eyinkimbinkimbi - ngichaze ngokukhethekile izindawo ezi-2 ezihlukene kulo njengesibonelo.

Yini engemuva kwabafaki?

install.sh ye-Linux:

  1. Umsebenzisi udalelwa ukusebenzisa i-daemon, ngaphandle kokudala uhla lwemibhalo lwasekhaya futhi ngaphandle kwekhono lokungena ngemvume.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Ifayela lokungena lakhiwe ku-/var/log/
  3. Yenza umsebenzisi osanda kwakhiwa abe umnikazi wefayela lokungena
  4. Amafayela akopishelwe ezindaweni zawo (hlela ku / njll, ifayela elisebenzisekayo ku /usr/bin, ifayela lensiza ku/lib/systemd/system)
  5. Isevisi icushiwe

windows_install.bat yeWindows:

  1. Ikopisha ifayela elisebenzisekayo nelilungiswayo kufolda eshiwo umsebenzisi
  2. Idala umsebenzi kusihleli ukuze iqalise iskripthi ekuqaleni kwesistimu
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Ngemuva kokushintsha ukucushwa, iskripthi sidinga ukuqaliswa kabusha; ku-Linux yonke into ilula futhi ijwayelekile:

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

ku-Windows kuzodingeka ubulale inqubo ye-pythonw futhi uphinde usebenzise iskripthi (ngivilapha kakhulu ukubhala insiza yeWindows ku-C #):

taskkill /im pythonw.exe

Lokhu kuqeda ukufakwa nokumisa, kujabulele empilweni yakho.

Kulabo abafuna ukubona ikhodi yePython engeyinhle kangako, nansi indawo yokugcina ku-GitHub.

I-MIT ilayisensi, ngakho yenza lokhu okufunayo.

PS: Ngiyaqonda ukuthi kuvele kwaba wudondolo, kodwa iwenza umsebenzi wayo ngokugqama.

UPD: 11.10.2019/17/37 XNUMX:XNUMX
Ngithole enye inkinga engu-1, futhi uma othile engitshela ukuthi ngiyixazulula kanjani, ngizobonga kakhulu.
Inkinga ukuthi uma ufaka ukuncika ngaphandle kwe-sudo python -m pip install -r ..., khona-ke amamojula ngeke abonakale kumsebenzisi wesevisi, futhi angithandi ukuphoqa abasebenzisi ukuthi bafake amamojula ngaphansi kwe-sudo, futhi lokhu akulungile.
Indlela yokwenza ibukeke inhle?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Inkinga ixazululwe kusetshenziswa i-venv.
Kube nezinguquko ezimbalwa. Ukukhishwa okulandelayo kuzoba ezinsukwini ezimbalwa ezizayo.

Source: www.habr.com

Engeza amazwana