DNS yako mwenyewe inayobadilika kwa kutumia CloudFlare

utangulizi

DNS yako mwenyewe inayobadilika kwa kutumia CloudFlare Kwa mahitaji ya kibinafsi nyumbani, niliweka VSphere, ambayo mimi huendesha kipanga njia cha kawaida na seva ya Ubuntu kama seva ya media na rundo la vitu vingine vyema, na seva hii inapaswa kupatikana kutoka kwa Mtandao. Lakini shida ni kwamba mtoaji wangu anatoa data tuli ya pesa, ambayo inaweza kutumika kila wakati kwa madhumuni muhimu zaidi. Kwa hiyo, nilitumia mchanganyiko wa ddclient + cloudflare.

Kila kitu kilikuwa sawa hadi ddclient ilipoacha kufanya kazi. Baada ya kuzunguka-zunguka kidogo, nilitambua kwamba wakati ulikuwa umefika wa magongo na baiskeli, kwa kuwa ilikuwa inachukua muda mwingi kutafuta tatizo. Mwishowe, kila kitu kiligeuka kuwa daemon ndogo ambayo inafanya kazi tu, na sihitaji kitu kingine chochote.
Ikiwa mtu yeyote ana nia, karibu paka.

Zana zilizotumiwa na jinsi "inavyofanya kazi".

Kwa hivyo jambo la kwanza nililogundua kwenye wavuti ya cloudflare ni kila kitu unachohitaji kujua API. Na nilikuwa tayari nimekaa chini kutekeleza kila kitu kwenye Python (baada ya kufahamiana na Python, nilizidi kuitumia kwa kazi kadhaa rahisi au ninapohitaji kutengeneza mfano haraka), nilipogundua ghafla utekelezaji ulioandaliwa tayari.
Kwa ujumla, kitambaa kilichukuliwa kama msingi python-cloudflare.

Nilichukua moja ya mifano ya kusasisha DNS na kuongeza matumizi ya faili ya usanidi na uwezo wa kusasisha rekodi kadhaa za A ndani ya eneo na, kwa kweli, idadi isiyo na kikomo ya kanda.

Mantiki ni kama ifuatavyo:

  1. Hati hupokea orodha ya kanda kutoka kwa faili ya usanidi na kuzipitia
  2. Katika kila eneo, hati hupitia kila rekodi ya DNS ya aina A au AAAA na kuangalia IP ya Umma na rekodi.
  3. Ikiwa IP ni tofauti, inaibadilisha; ikiwa sivyo, inaruka marudio ya kitanzi na kwenda kwa inayofuata.
  4. Hulala kwa muda uliobainishwa kwenye usanidi

Ufungaji na usanidi

Labda itawezekana kutengeneza kifurushi cha .deb, lakini mimi si mzuri kwa hili, na sio ngumu sana.
Nilielezea mchakato huo kwa undani katika README.md on ukurasa wa hifadhi.

Lakini ikiwa tu, nitaelezea kwa Kirusi kwa maneno ya jumla:

  1. Hakikisha kuwa python3 na python3-pip iliyosanikishwa, ikiwa sivyo, isanikishe (kwenye Windows, python3-pip imewekwa pamoja na Python)
  2. Funga au pakua hazina
  3. Sakinisha tegemezi zinazohitajika.
    python3 -m pip install -r requirements.txt

  4. Endesha hati ya usakinishaji
    Kwa Linux:

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

    Kwa Windows: windows_install.bat

  5. Hariri faili ya usanidi
    Kwa Linux:

    sudoedit /etc/zen-cf-ddns.conf

    Kwa Windows:

    Fungua faili ya zen-cf-ddns.conf kwenye folda ambapo ulisakinisha hati.

    Hii ni faili ya kawaida ya JSON, mipangilio sio ngumu - nilielezea haswa maeneo 2 tofauti ndani yake kama mfano.

Je, kuna nini nyuma ya wasakinishaji?

install.sh kwa Linux:

  1. Mtumiaji ameundwa kuendesha daemon, bila kuunda saraka ya nyumbani na bila uwezo wa kuingia.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Faili ya logi imeundwa ndani /var/log/
  3. Fanya mtumiaji mpya kuwa mmiliki wa faili ya kumbukumbu
  4. Faili zinakiliwa kwa maeneo yao (config in /etc, faili inayoweza kutekelezwa katika /usr/bin, faili ya huduma katika /lib/systemd/system)
  5. Huduma imewashwa

windows_install.bat ya Windows:

  1. Hunakili faili inayoweza kutekelezeka na kusanidi kwenye folda iliyoainishwa na mtumiaji
  2. Huunda kazi katika kiratibu ili kuendesha hati wakati wa kuanzisha mfumo
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Baada ya kubadilisha usanidi, hati inahitaji kuanzishwa tena; katika Linux kila kitu ni rahisi na kinachojulikana:

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

kwa Windows italazimika kuua mchakato wa pythonw na kuendesha tena hati (mimi ni mvivu sana kuandika huduma ya Windows katika C #):

taskkill /im pythonw.exe

Hii inakamilisha usakinishaji na usanidi, ifurahie kwa afya yako.

Kwa wale ambao wanataka kuona nambari isiyo ya kupendeza ya Python, hii hapa hazina kwenye GitHub.

MIT iliyopewa leseni, kwa hivyo fanya na vitu hivi utakavyo.

PS: Ninaelewa kuwa iligeuka kuwa mkongojo, lakini inafanya kazi yake kwa kishindo.

UPD: 11.10.2019/17/37 XNUMX:XNUMX
Nilipata tatizo 1 zaidi, na mtu akiniambia jinsi ya kulitatua, nitashukuru sana.
Shida ni kwamba ikiwa utasanikisha utegemezi bila sudo python -m pip install -r ..., basi moduli hazitaonekana kutoka kwa mtumiaji wa huduma, na nisingependa kulazimisha watumiaji kusanikisha moduli chini ya sudo, na hii ni. si sahihi.
Jinsi ya kuifanya kuonekana nzuri?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Tatizo lilitatuliwa kwa kutumia venv.
Kumekuwa na mabadiliko kadhaa. Toleo linalofuata litakuwa katika siku chache zijazo.

Chanzo: mapenzi.com

Kuongeza maoni