Zure DNS dinamikoa CloudFlare erabiliz

hitzaurrea

Zure DNS dinamikoa CloudFlare erabiliz Etxeko behar pertsonaletarako, VSphere instalatu nuen, bideratzaile birtual bat eta Ubuntu zerbitzari bat exekutatzen ditudan multimedia zerbitzari gisa eta beste gauza asko, eta zerbitzari honek Internetetik eskuragarri egon beharko luke. Baina arazoa da nire hornitzaileak datu estatikoak ematen dituela diruaren truke, beti erabil daitezkeela helburu erabilgarriagoetarako. Hori dela eta, ddclient + cloudflare konbinazioa erabili dut.

Dena ondo zegoen ddclient-ek funtzionatzeari utzi zion arte. Pixka bat arakatu ondoren, konturatu nintzen makuluen eta bizikletentzako ordua iritsi zela, arazoa aurkitzeko denbora gehiegi behar zelako. Azkenean, dena funtzionatzen duen deabru txiki batean bihurtu zen, eta ez dut beste ezer behar.
Norbaiti interesatzen bazaio, ongi etorri cat.

Erabilitako tresnak eta nola funtzionatzen duen

Beraz, cloudflare webgunean aurkitu dudan lehenengo gauza jakin behar duzun guztia da API. Eta jadanik eseri nintzen dena Python-en inplementatzeko (Python ezagutu ondoren, gero eta gehiago erabiltzen dut zeregin sinple batzuetarako edo prototipo bat azkar egin behar dudanean), bat-batean ia prest egindako inplementazio batekin topo egin nuenean.
Oro har, bilgarria hartu zen oinarritzat python-cloudflare.

DNS eguneratzeko adibideetako bat hartu nuen eta konfigurazio-fitxategi baten erabilera eta zona baten barruan hainbat A erregistro eguneratzeko aukera gehitu nuen eta, jakina, zona kopuru mugagabea.

Logika hau da:

  1. Scriptak konfigurazio-fitxategitik zonen zerrenda jasotzen du eta haietan zehar ibiltzen da
  2. Zona bakoitzean, script-ak A edo AAAA motako DNS erregistro bakoitzean zeharkatzen du eta IP Publikoa egiaztatzen du erregistroarekin.
  3. IP desberdina bada, aldatzen du; hala ez bada, begizta iterazioa saltatzen du eta hurrengora pasatzen da.
  4. Lo egiten du konfigurazioan zehaztutako denboran

Instalazioa eta konfigurazioa

Ziurrenik .deb pakete bat egitea posible izango litzateke, baina ez naiz ona horretan, eta ez da horren zaila.
Prozesua xehetasun handiz deskribatu nuen README.md-en biltegia orria.

Baina badaezpada, errusieraz deskribatuko dut termino orokorrean:

  1. Ziurtatu python3 eta python3-pip instalatuta dituzula, hala ez bada, instalatu (Windows-en, python3-pip instalatuta dago Python-ekin batera)
  2. Klonatu edo deskargatu biltegia
  3. Instalatu behar diren mendekotasunak.
    python3 -m pip install -r requirements.txt

  4. Exekutatu instalazio scripta
    Linuxerako:

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

    Windows-erako: windows_install.bat

  5. Editatu konfigurazio fitxategia
    Linuxerako:

    sudoedit /etc/zen-cf-ddns.conf

    Windows-erako:

    Ireki zen-cf-ddns.conf fitxategia scripta instalatu duzun karpetan.

    Hau JSON fitxategi arrunta da, ezarpenak ez dira ezer konplikatuak - berariaz deskribatu ditut bertan 2 zona ezberdin adibide gisa.

Zer dago instalatzaileen atzean?

install.sh Linuxerako:

  1. Erabiltzaile bat sortzen da deabrua exekutatzeko, hasierako direktoriorik sortu gabe eta saioa hasteko gaitasunik gabe.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Log-fitxategi bat sortzen da /var/log/-n
  3. Egin sortu berri den erabiltzailea erregistro-fitxategiaren jabea
  4. Fitxategiak beren lekuetan kopiatzen dira (konfigurazioa /etc-en, fitxategi exekutagarria /usr/bin, zerbitzu-fitxategia /lib/systemd/system-en)
  5. Zerbitzua aktibatuta dago

windows_install.bat Windows-erako:

  1. Erabiltzaileak zehaztutako karpeta batean kopiatzen du exekutagarria eta konfigurazio fitxategia
  2. Zeregin bat sortzen du programatzailean scripta exekutatzeko sistema abiaraztean
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Konfigurazioa aldatu ondoren, scripta berrabiarazi behar da; Linuxen dena erraza eta ezaguna da:

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-erako pythonw prozesua akabatu eta scripta berriro exekutatu beharko duzu (alferra naiz Windows-erako zerbitzu bat C#-n idazteko):

taskkill /im pythonw.exe

Honek instalazioa eta konfigurazioa osatzen du, goza ezazu zure osasunerako.

Python kodea ez hain polita ikusi nahi dutenentzat, hona hemen GitHub-en biltegia.

MIT lizentziadun, beraz, egin gauza honekin nahi duzuna.

PS: Ulertzen dut makulu samarra izan dela, baina bere lana kolpearekin egiten du.

EGUNERA: 11.10.2019/17/37 XNUMX:XNUMX
Beste arazo bat aurkitu dut, eta norbaitek esaten badit nola konpondu, asko eskertuko dut.
Arazoa da sudo python gabe -m pip install -r ... menpekotasunak instalatzen badituzu, orduan moduluak ez dira zerbitzuaren erabiltzailetik ikusiko, eta ez nuke nahi erabiltzaileak sudo azpian moduluak instalatzera behartu, eta hau da. ez zuzena.
Nola egin itxura ederra?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Arazoa venv erabiliz konpondu da.
Hainbat aldaketa egon dira. Hurrengo kaleratzea hurrengo egunetan izango da.

Iturria: www.habr.com

Gehitu iruzkin berria