DNS-ya xweya dînamîkî ya ku CloudFlare bikar tîne

Pêşniyar

DNS-ya xweya dînamîkî ya ku CloudFlare bikar tîne Ji bo hewcedariyên kesane yên li malê, min VSphere saz kir, ku ez li ser wê rêgezek virtual û serverek Ubuntu wekî serverek medyayê û komek xweşiyên din dimeşînim, û divê ev server ji Înternetê bigihîje. Lê pirsgirêk ev e ku pêşkêşvanê min ji bo drav daneya statîk dide, ku her gav dikare ji bo armancên bikêrtir were bikar anîn. Ji ber vê yekê, min berhevoka ddclient + cloudflare bikar anî.

Her tişt baş bû heya ku ddclient xebitî. Piştî ku piçekî li dora xwe geriyam, min fêm kir ku wextê qirç û bisîkletan hatiye, ji ber ku ji bo dîtina pirsgirêkê pir wext dikişîne. Di dawiyê de, her tişt veguherî daemonek piçûk a ku tenê dixebite, û ez ne hewceyê tiştek din.
Ger kesek eleqedar be, bi xêr hatî pisîkê.

Amûrên ku têne bikar anîn û "ew" çawa dixebite

Ji ber vê yekê yekem tiştê ku min li ser malpera cloudflare fêr kir her tiştê ku hûn hewce ne ku li ser zanibin e API. Û ez jixwe rûniştibûm ku her tiştî di Python de bicîh bikim (piştî ku ez bi Python re nas bûm, ez wê her ku diçe ji bo hin karên hêsan an dema ku ez hewce dikim zû prototîpek çêkim bikar tînim), gava ku ez ji nişkê ve rastî pêkanînek hema hema amade hat.
Bi gelemperî, pêçan wekî bingehek hate girtin python-cloudflare.

Min yek ji mînakan ji bo nûvekirina DNS hilda û karanîna pelê vesazkirinê û şiyana nûvekirina çend tomar A di nav herêmek de û, bê guman, hejmareke bêsînor a herêman zêde kir.

Mantiq wiha ye:

  1. Skrîpt ji pelê veavakirinê navnîşek deveran distîne û di nav wan de diherike
  2. Li her deverê, skrîpt di nav her tomarek DNS-ê ya celeb A an AAAA de vedigere û bi tomarê IP-ya Giştî kontrol dike.
  3. Ger IP-yê cûda be, ew wê diguhezîne; heke ne wusa be, ew dubarekirina lûkê derbas dike û diçe ya din.
  4. Ji bo dema ku di mîhengê de hatî destnîşan kirin xew dikeve

Sazkirin û veavakirina

Dibe ku meriv pakêtek .deb çêbike, lê ez di vê yekê de ne baş im, û ew ne ew qas dijwar e.
Min di README.md de pêvajo bi berfirehî diyar kir rûpela depoyê.

Lê tenê di rewşê de, ez ê bi rûsî bi gelemperî vebêjim:

  1. Piştrast bikin ku we python3 û python3-pip saz kiriye, heke na, wê saz bikin (li ser Windows, python3-pip ligel Python tê saz kirin)
  2. Depoyê klon bikin an dakêşînin
  3. Girêdanên pêwîst saz bikin.
    python3 -m pip install -r requirements.txt

  4. Skrîpta sazkirinê bimeşînin
    Ji bo Linux:

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

    Ji bo Windows: windows_install.bat

  5. Pelê veavakirinê biguherîne
    Ji bo Linux:

    sudoedit /etc/zen-cf-ddns.conf

    Ji bo Windows:

    Pelê zen-cf-ddns.conf li peldanka ku we skrîptê lê saz kiriye vekin.

    Ev pelek JSON-ya birêkûpêk e, mîhengan ne tiştek tevlihev e - min bi taybetî 2 deverên cihêreng di wê de wekî mînakek diyar kir.

Li pişt sazkeran çi heye?

install.sh ji bo Linux:

  1. Bikarhênerek tê afirandin ku daemon bimeşîne, bêyî afirandina pelrêçek malê û bêyî şiyana têketinê.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Pelek têketinê di /var/log/ de tê çêkirin
  3. Bikarhênerê ku nû hatî afirandin bike xwediyê pelê têketinê
  4. Pelên li cîhên xwe têne kopî kirin (veavakirina li /etc, pelê îcrakar li /usr/bin, pelê karûbarê li /lib/systemd/system)
  5. Xizmet tê aktîfkirin

windows_install.bat ji bo Windows:

  1. Pelê îcrakar û mîhengê li peldankek bikarhêner-ê diyarkirî kopî dike
  2. Di nexşerê de peywirek diafirîne ku di destpêka pergalê de skrîptê bimeşîne
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Piştî guheztina mîhengê, pêdivî ye ku skrîpt ji nû ve were destpêkirin; di Linux de her tişt hêsan û nas e:

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

ji bo Windows-ê hûn neçar in ku pêvajoya pythonw bikujin û skrîptê ji nû ve bimeşînin (ez pir tembel im ku ji bo Windows-ê di C# de karûbarek binivîsim):

taskkill /im pythonw.exe

Ev sazkirin û vesazkirinê temam dike, ji tenduristiya xwe xweş bikin.

Ji bo kesên ku dixwazin koda Python-a ne pir xweşik bibînin, li vir e depo li ser GitHub.

lîsansa MIT-ê heye, ji ber vê yekê hûn ê bi van tiştan bikin.

PS: Ez fêm dikim ku ew piçek qirşikek derket, lê ew karê xwe bi dengek dike.

UPD: 11.10.2019/17/37 XNUMX:XNUMX
Min 1 pirsgirêkek din dît, û heke kesek ji min re bêje ka meriv wê çawa çareser bike, ez ê pir spasdar bim.
Pirsgirêk ev e ku heke hûn girêdanên bêyî sudo python -m pip install -r ... saz bikin, wê hingê dê modul ji bikarhênerê karûbarê xuya nebin, û ez naxwazim ku bikarhêneran neçar bikim ku modulan di bin sudo de saz bikin, û ev e ne rast.
Meriv çawa xweşik xuya dike?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Pirsgirêk bi karanîna venv hate çareser kirin.
Gelek guhertin çêbûne. Weşana din dê di çend rojên pêş de be.

Source: www.habr.com

Add a comment