Oma dynamic DNS CloudFlare'i abil

EessÔna

Oma dynamic DNS CloudFlare'i abil Isiklikeks vajadusteks tÔstsin koju VSphere'i, millel jooksutab virtuaalset marsruuterit ja Ubuntu serverit meediaseservername'ina ning teisigi huvitavaid asju, ja see server peab olema Internetist ligipÀÀsetav. Probleemiks on see, et minu teenusepakkuja nÔuab staatilise IP eest tasu, mida on alati vÔimalik kasulikult kasutada muul otstarbel. SeetÔttu kasutasin ddclient + cloudflare kombinatsiooni.

KÔik oli hÀsti, kuni ddclient lÔpetas töötamise. PÀrast veidi kaevumist mÔistsin, et on aeg hakata kasutama paremaid lahendusi, kuna probleemi leidmiseks kulus liiga palju aega. LÔpuks kujunes kÔik vÀikseks teenuseks, mis lihtsalt töötab, ja rohkem ei olegi vaja.
Kellele huvi pakub – olete teretulnud allolevale lĂ”igule.

Kasutatud tööriistad ja kuidas «see» töötab

Nii et esimesena Ă”ppisin cloudflare'i lehelt kĂ”ike, mida on vaja teada API. Ja juba olin valmistumas kĂ”ik Pythonis rakendama (pĂ€rast Pythoniga tutvumist kasutan ma seda jĂ€rjest rohkem lihtsate ĂŒlesannete jaoks vĂ”i kui on vaja kiiresti prototĂŒĂŒp valmistada), kui Ă€kitselt leidsin praktiliselt valmis lahenduse.
KokkuvÔttes pÔhines see wrapperil python-cloudflare.

VĂ”tsin ĂŒhe nĂ€ite DNS-i vĂ€rskendamiseks, lisasin konfigureerimisfaili kasutamise ja vĂ”imaluse vĂ€rskendada mitmeid A-kirjeid piirkonnas ning loomulikult piiramatult piirkondi.

Loogika on jÀrgmine:

  1. Skript vÔtab konfigureerimisfailist piirkondade nimekirja ja lÀbib need iteratsioonis.
  2. Igas piirkonnas lÀbib skript iteratsioonis iga DNS A- vÔi AAAA-kirje ja vÔrdleb Publiku IP-d kirjevega.
  3. Kui IP erineb, muudab selle; kui ei, jÀtab iteratsiooni vahele ja liigub jÀrgmise juurde.
  4. Uinub mÀÀratud ajaks, nagu konfis on mÀÀratud.

Installeerimine ja seadistamine

VÔib-olla oleks saanud teha ka .deb-paketi, aga ma ei ole selles osav, ja pole see ka nii keeruline.
Protsessi olen ĂŒsna detailselt kirjeldanud README.md-s repository lehel..

Aga igaks juhuks kirjeldan ĂŒldiselt ka vene keeles:

  1. Veenduge, et teil oleks paigaldatud python3 ja python3-pip, kui ei ole - installige (Windowsis paigaldatakse python3-pip koos Pythoniga).
  2. Kloonige vÔi laadige alla repository.
  3. Installige vajalikud sÔltuvused.
    python3 -m pip install -r requirements.txt

  4. KĂ€ivitage installatsiooniskript.
    Linuxi jaoks:
    chmod +x install.sh
    sudo ./install.sh

    Windowsi jaoks: windows_install.bat

  5. Redigeerige konfigureerimisfaili.
    Linuxi jaoks:
    sudoedit /etc/zen-cf-ddns.conf

    Windowsi jaoks:

    Ava zen-cf-ddns.conf fail oma kausta, kuhu installisite skripti.

    See on tavaline JSON fail, seadete poolest mitte midagi keerulist – olen kirjeldanud kaht erinevat tsooni nĂ€itena.

Mida peidavad paigaldajad?

install.sh Linuxile:

  1. Kasutaja luuakse deemonite kÀitamiseks, ilma kodukatalooge loomata ja logimise vÔimaluseta.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Logifaili luuakse kirjutamiseks /var/log/
  3. MÀÀrame logifaili omanikuks hiljuti loodud kasutaja
  4. Failid kopeeritakse oma kohtadesse (konfiguratsioon /etc, tÀidetav fail /usr/bin, teenuse fail /lib/systemd/system)
  5. Teenust aktiveeritakse

windows_install.bat Windowsile:

  1. Kopeerib tÀidetava faili ja konfiguratsioonifaili kasutaja mÀÀratud kausta
  2. Loob ĂŒlesande ajakava, et skripti kĂ€ivitada sĂŒsteemi kĂ€ivitamisel
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

PÀrast konfiguratsiooni muutmist tuleb skript uuesti kÀivitada, Linuxis on see kÔik lihtne ja tuttav:

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

Windowsis tuleb tappa pythonw protsess ja skript uuesti kÀivitada (mulle ei meeldi C#-s Windowsi teenuse kirjutamine):

taskkill /im pythonw.exe

NĂŒĂŒd on installimine ja seadistamine lĂ”pule viidud, kasutage tervislikult.

Neile, kes soovivad vaadata vÀhem ilusat Python koodi, siin see on. GitHubi hoidla.

MIT litsents, seega tehke selle heaga, mida soovite.

P.S.: Ma tean, et see on natuke tobe, kuid oma ĂŒlesande tĂ€idab see suurepĂ€raselt.

UPD: 11.10.2019 17:37
Leidsin veel ĂŒhe probleemi ja kui keegi suudab mind aidata selle lahendamisel — oleksin vĂ€ga tĂ€nulik.
Probleem on selles, et kui installida sÔltuvused ilma sudo'ta python -m pip install -r 
, siis teenuse kasutaja all ei ole mooduleid nÀhtavad, ja ma ei tahaks sundida kasutajaid installima mooduleid sudo all, see ei oleks ka Ôige.
Kuidas Ôigesti teha, et see oleks ilus?
UPD: 11.10.2019 19:16 Probleem on lahendatud venv'i kasutamisega.
Tekkinud on mitu muudatust. Uus vÀljalase tuleb mÔne pÀeva jooksul.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster