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 hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster