Dynamic DNS tuaj me CloudFlare

Parathënie

Dynamic DNS tuaj me CloudFlare PĂ«r nevojat e mia personale nĂ« shtĂ«pi ngrita VSphere, nĂ« tĂ« cilin kam njĂ« ĐŒĐ°Ń€ŃˆŃ€ŃƒŃ‚ĐžĐ·Đ°Ń‚ĐŸŃ€ virtual dhe njĂ« server Ubuntu si server mediatik dhe shumĂ« gjĂ«ra tĂ« tjera tĂ« kĂ«ndshme, dhe ky server duhet tĂ« jetĂ« i qasshĂ«m nga Interneti. Por problemi Ă«shtĂ« se ofruesi im ofron statikĂ« pĂ«r para, tĂ« cilat gjithmonĂ« mund tĂ« pĂ«rdoren pĂ«r diçka mĂ« tĂ« dobishme. Prandaj kam pĂ«rdorur kombinimin ddclient + cloudflare.

Gjithçka ishte mirë derisa ddclient nuk funksionoi më. Pasi e shqyrtova pak, kuptova se kishte ardhur koha për zgjidhje dhe rrota, pasi po humbisja shumë kohë me gjetjen e problemit. Në fund, gjithçka përfundoi në një demon të vogël, që thjesht punon, dhe më shumë nuk më nevojitet.
KĂ«do qĂ« e interesohet – mirĂ«seardhĂ«t nĂ«n kat.

Mjetet e përdorura dhe si funksionon «kjo»

Pra, hapi i parë ishte të marr informacionin nga faqja cloudflare, gjithçka që duhet të di për API. Dhe isha duke e realizuar gjithçka në Python (pas njohjes me Python, gjithnjë e më shpesh e përdor për disa detyra të thjeshta ose kur duhet të bëj një prototip shpejt), papritmas u ndesha me një realizim gati të gatshëm.
Në tërësi, u mor një wrapper python-cloudflare.

Mora një nga shembujt për azhurnimin e DNS dhe shtova përdorimin e një skedari konfigurations dhe mundësinë për të azhurnuar disa A rekorde brenda një zone dhe, sigurisht, një numër të pakufizuar zonash.

Logjika është si vijon:

  1. Skripti merr nga skedari i konfigurimit një listë zonash dhe kalon nëpër to në një cikël
  2. Në çdo zonë, skripti kalon nëpër çdo rekord DNS të tipit A ose AAAA dhe krahasohet IP Publik me rekordin
  3. NĂ«se IP ndryshon — e ndryshon, nĂ«se jo kalon iteracionin e ciklit dhe kalon nĂ« tĂ« ardhshmen
  4. Futet në gjumë për kohëzgjatjen e specifikuar në konfigurim

Instalimi dhe konfigurimi

Mund të ishin bërë edhe një paketë .deb, por unë nuk jam i fortë në këtë, dhe asgjë nuk është aq e komplikuar.
Procesi është përshkruar mjaft në detaje në README.md në faqen e repositorit.

Por në rastin më të keq do të përshkruaj në rusisht në mënyrë të përgjithshme:

  1. Sigurohuni qĂ« keni instaluar python3 dhe python3-pip, nĂ«se jo — instaloni (nĂ« Windows python3-pip Ă«shtĂ« instaluar sĂ« bashku me Python)
  2. Klononi ose shkarkoni repositorin
  3. Instaloni varësitë e nevojshme.
    python3 -m pip install -r requirements.txt

  4. Shkoni për të ekzekutuar skriptin e instalimit
    Për Linux:
    chmod +x install.sh
    sudo ./install.sh

    Për Windows: windows_install.bat

  5. Redaktoni skedarin e konfigurimit
    Për Linux:
    sudoedit /etc/zen-cf-ddns.conf

    Për Windows:

    Hapni skedarin zen-cf-ddns.conf në dosjen ku keni instaluar skriptin.

    Ky Ă«shtĂ« njĂ« skedar zakonisht JSON, pĂ«r konfigurimet nuk ka asgjĂ« tĂ« komplikuar – kam pĂ«rshkruar si shembull 2 zona tĂ« ndryshme nĂ« tĂ«.

ÇfarĂ« fshihet pas instaluesve?

install.sh për Linux:

  1. Krijohet një përdorues për të ekzekutuar demonin, pa krijuar një direktori shtëpie dhe mundësi për t'u kyçur.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Krijohet një skedar për të regjistruar log-un në /var/log/
  3. E bëjmë pronar të skedarit të log-ut përdoruesin e sapokrijuar
  4. Skedarët kopjohen në vendet e tyre (konfiguimi në /etc, skedari ekzekutues në /usr/bin, skedari i shërbimit në /lib/systemd/system)
  5. Aktivizohet shërbimi

windows_install.bat për Windows:

  1. Kopjon skedarin ekzekutues dhe skedarin e konfigurimit në dosjen e caktuar nga përdoruesi
  2. Krijon një detyrë në planifikues për të ekzekutuar skriptin në fillim të sistemit
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Pasi të ndryshoni konfigurimin, skripti duhet të rinitet, në Linux gjithçka është e thjeshtë dhe e zakonshme:

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

për Windows do të duhet të ndaloni procesin pythonw dhe të rilançoni skriptin (më vjen shumë keq, por nuk dua të shkruaj një shërbim për Windows në C#):

taskkill /im pythonw.exe

Me këtë përfundojnë instalimi dhe konfigurimi, shijoni shëndetshëm.

Për ata që duan të shikojnë kodin e pakëndshëm të Python, ja repoja e tij në GitHub.

Licenca MIT, kështu që bëni me këtë mirë çfarë të doni.

P.S.: E kuptoj që doli pak e çrregullt, por përball të detyrës e bën mirë.

UPD: 11.10.2019 17:37
Gjeta njĂ« problem tjetĂ«r, dhe nĂ«se dikush tregon mĂ«nyrĂ«n pĂ«r ta zgjidhur – do tĂ« isha shumĂ« mirĂ«njohĂ«s.
Problemi Ă«shtĂ« se nĂ«se instaloni varĂ«sitĂ« pa sudo python -m pip install -r 
, modulat nuk do tĂ« jenĂ« tĂ« dukshme nga pĂ«rdoruesi i shĂ«rbimit, dhe nuk do tĂ« dĂ«shiroja t’i detyroja pĂ«rdoruesit tĂ« instalojnĂ« modulĂ« me sudo, pĂ«r mĂ« tepĂ«r nuk Ă«shtĂ« e drejtĂ«.
Si të bëhet siç duhet, që të duket bukur?
UPD: 11.10.2019 19:16 Problemi është zgjidhur duke përdorur venv.
Ishte disa ndryshime. Një version i ri do të dalë shumë shpejt.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster