Eich DNS deinamig eich hun gan ddefnyddio CloudFlare

Rhagair

Eich DNS deinamig eich hun gan ddefnyddio CloudFlare Ar gyfer anghenion personol gartref, gosodais VSphere, lle rwy'n rhedeg llwybrydd rhithwir a gweinydd Ubuntu fel gweinydd cyfryngau a llawer o nwyddau eraill, a dylai'r gweinydd hwn fod yn hygyrch o'r Rhyngrwyd. Ond y broblem yw bod fy narparwr yn rhoi data sefydlog am arian, y gellir ei ddefnyddio bob amser at ddibenion mwy defnyddiol. Felly, defnyddiais y cyfuniad ddclient + cloudflare.

Roedd popeth yn iawn nes i ddclient roi'r gorau i weithio. Ar Γ΄l procio o gwmpas ychydig, sylweddolais fod yr amser wedi dod ar gyfer baglau a beiciau, gan ei bod yn cymryd gormod o amser i ddod o hyd i'r broblem. Yn y diwedd, trodd popeth yn ellyll bach sy'n gweithio, ac nid oes angen unrhyw beth arall arnaf.
Os oes gan unrhyw un ddiddordeb, croeso i gath.

Offer a ddefnyddir a sut mae β€œmae” yn gweithio

Felly y peth cyntaf wnes i ddarganfod ar wefan cloudflare yw popeth sydd angen i chi wybod amdano API. Ac roeddwn eisoes wedi eistedd i lawr i weithredu popeth yn Python (ar Γ΄l dod yn gyfarwydd Γ’ Python, rwy'n ei ddefnyddio'n gynyddol ar gyfer rhai tasgau syml neu pan fydd angen i mi wneud prototeip yn gyflym), pan ddes i ar draws gweithrediad parod bron yn sydyn.
Yn gyffredinol, cymerwyd y papur lapio fel sail python-cloudflare.

Cymerais un o'r enghreifftiau ar gyfer diweddaru DNS ac ychwanegu'r defnydd o ffeil ffurfweddu a'r gallu i ddiweddaru sawl cofnod A o fewn parth ac, wrth gwrs, nifer anghyfyngedig o barthau.

Mae'r rhesymeg fel a ganlyn:

  1. Mae'r sgript yn derbyn rhestr o barthau o'r ffeil ffurfweddu a dolenni trwyddynt
  2. Ym mhob parth, mae'r sgript yn dolennu trwy bob cofnod DNS o fath A neu AAAA ac yn gwirio'r IP Cyhoeddus gyda'r cofnod
  3. Os yw'r IP yn wahanol, mae'n ei newid; os na, mae'n hepgor iteriad y ddolen ac yn symud ymlaen i'r un nesaf.
  4. Yn cwympo i gysgu am yr amser a nodir yn y ffurfwedd

Gosod a chyfluniad

Mae'n debyg y byddai'n bosibl gwneud pecyn .deb, ond nid wyf yn dda am wneud hyn, ac nid yw mor anodd Γ’ hynny.
Disgrifiais y broses yn fanwl iawn yn README.md yn tudalen ystorfa.

Ond rhag ofn, byddaf yn ei ddisgrifio yn Rwsieg yn gyffredinol:

  1. Sicrhewch fod gennych python3 a python3-pip wedi'u gosod, os na, gosodwch ef (ar Windows, mae python3-pip wedi'i osod ynghyd Γ’ Python)
  2. Cloniwch neu lawrlwythwch yr ystorfa
  3. Gosodwch y dibyniaethau gofynnol.
    python3 -m pip install -r requirements.txt

  4. Rhedeg y sgript gosod
    Ar gyfer Linux:

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

    Ar gyfer Windows: windows_install.bat

  5. Golygu'r ffeil ffurfweddu
    Ar gyfer Linux:

    sudoedit /etc/zen-cf-ddns.conf

    Ar gyfer Windows:

    Agorwch y ffeil zen-cf-ddns.conf yn y ffolder lle gwnaethoch chi osod y sgript.

    Mae hon yn ffeil JSON rheolaidd, nid yw'r gosodiadau yn ddim byd cymhleth - disgrifiais yn benodol 2 barth gwahanol ynddo fel enghraifft.

Beth sydd y tu Γ΄l i'r gosodwyr?

install.sh ar gyfer Linux:

  1. CrΓ«ir defnyddiwr i redeg yr ellyll, heb greu cyfeiriadur cartref a heb y gallu i fewngofnodi.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. CrΓ«ir ffeil log yn /var/log/
  3. Gwnewch y defnyddiwr sydd newydd ei greu yn berchennog y ffeil log
  4. Mae'r ffeiliau'n cael eu copΓ―o i'w lleoedd (config in / etc, ffeil gweithredadwy yn /usr/bin, ffeil gwasanaeth yn /lib/systemd/system)
  5. Mae'r gwasanaeth wedi'i actifadu

windows_install.bat ar gyfer Windows:

  1. Yn copΓ―o'r ffeil gweithredadwy a ffurfweddu i ffolder a bennir gan y defnyddiwr
  2. Yn creu tasg yn y rhaglennydd i redeg y sgript wrth gychwyn y system
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Ar Γ΄l newid y ffurfwedd, mae angen ailgychwyn y sgript; yn Linux mae popeth yn syml ac yn gyfarwydd:

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

ar gyfer Windows bydd yn rhaid i chi ladd y broses pythonw ac ail-redeg y sgript (dwi'n rhy ddiog i ysgrifennu gwasanaeth ar gyfer Windows yn C#):

taskkill /im pythonw.exe

Mae hyn yn cwblhau'r gosodiad a'r cyfluniad, mwynhewch ef i'ch iechyd.

I'r rhai sydd am weld y cod Python nad yw'n bert, dyma fe ystorfa ar GitHub.

MIT trwyddedig, felly gwnewch gyda'r pethau hyn yr hyn y byddwch.

PS: Yr wyf yn deall ei fod yn troi allan i fod yn dipyn o faglau, ond mae'n gwneud ei waith gyda chlec.

UPD: 11.10.2019/17/37 XNUMX:XNUMX
Deuthum o hyd i 1 broblem arall, ac os bydd rhywun yn dweud wrthyf sut i'w datrys, byddaf yn ddiolchgar iawn.
Y broblem yw, os ydych chi'n gosod dibyniaethau heb sudo python -m pip install -r ..., yna ni fydd y modiwlau yn weladwy o'r defnyddiwr gwasanaeth, ac ni hoffwn orfodi defnyddwyr i osod modiwlau o dan sudo, a dyma anghywir.
Sut i wneud iddo edrych yn hardd?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Datryswyd y broblem gan ddefnyddio venv.
Bu sawl newid. Bydd y datganiad nesaf yn ystod y dyddiau nesaf.

Ffynhonnell: hab.com

Ychwanegu sylw