Ձեր սեփական դինամիկ DNS-ն՝ օգտագործելով CloudFlare-ը

Նախաբան

Ձեր սեփական դինամիկ DNS-ն՝ օգտագործելով CloudFlare-ը Տանը անձնական կարիքների համար ես տեղադրել եմ VSphere-ը, որի վրա ես աշխատում եմ վիրտուալ երթուղիչ և Ubuntu սերվեր՝ որպես մեդիա սերվեր և մի շարք այլ բարիքներ, և այս սերվերը պետք է հասանելի լինի ինտերնետից: Բայց խնդիրն այն է, որ իմ մատակարարը փողի դիմաց տալիս է ստատիկ տվյալներ, որոնք միշտ կարող են օգտագործվել ավելի օգտակար նպատակների համար։ Հետեւաբար, ես օգտագործեցի ddclient + cloudflare համակցությունը:

Ամեն ինչ լավ էր, մինչև ddclient-ը դադարեց աշխատել: Մի փոքր շրջելուց հետո ես հասկացա, որ եկել է հենակների և հեծանիվների ժամանակը, քանի որ խնդիրը գտնելու համար չափազանց շատ ժամանակ էր պահանջվում: Ի վերջո, ամեն ինչ վերածվեց մի փոքրիկ դեյմոնի, որը պարզապես աշխատում է, և ես այլ բանի կարիք չունեմ:
Եթե ​​որևէ մեկին հետաքրքրում է, բարի գալուստ կատու:

Օգտագործված գործիքներ և ինչպես է «այն» աշխատում

Այսպիսով, առաջին բանը, որ ես իմացա cloudflare կայքում, այն ամենն է, ինչ դուք պետք է իմանաք API. Եվ ես արդեն նստել էի Python-ում ամեն ինչ իրականացնելու (Python-ի հետ ծանոթանալուց հետո ես ավելի ու ավելի եմ օգտագործում այն ​​որոշ պարզ առաջադրանքների համար կամ երբ պետք է արագ նախատիպ պատրաստել), երբ հանկարծ հանդիպեցի գրեթե պատրաստի իրականացմանը։
Ընդհանրապես հիմք է ընդունվել փաթաթան python-cloudflare.

Ես վերցրեցի DNS-ի թարմացման օրինակներից մեկը և ավելացրեցի կոնֆիգուրացիայի ֆայլի օգտագործումը և մի քանի A գրառումները գոտու ներսում թարմացնելու հնարավորությունը և, իհարկե, անսահմանափակ թվով գոտիներ:

Տրամաբանությունը հետևյալն է.

  1. Սցենարը կարգավորումների ֆայլից ստանում է գոտիների ցանկ և պտտվում դրանց միջով
  2. Յուրաքանչյուր գոտում սկրիպտը պտտվում է A կամ AAAA տիպի յուրաքանչյուր DNS գրառման միջոցով և ստուգում է հանրային IP-ն գրառումով:
  3. Եթե ​​IP-ն տարբեր է, այն փոխում է այն, եթե ոչ, ապա շրջանցում է հանգույցի կրկնությունը և անցնում հաջորդին:
  4. Քնում է կազմաձևում նշված ժամանակի համար

Տեղադրում և կազմաձևում

Հավանաբար, հնարավոր կլինի ստեղծել .deb փաթեթ, բայց ես այս հարցում լավ չեմ, և դա այնքան էլ դժվար չէ:
Ես մանրամասն նկարագրեցի գործընթացը README.md-ում պահեստի էջ.

Բայց ամեն դեպքում, ես դա նկարագրելու եմ ռուսերեն ընդհանուր տերմիններով.

  1. Համոզվեք, որ տեղադրված եք python3 և python3-pip, եթե ոչ, ապա տեղադրեք այն (Windows-ում Python3-pip-ը տեղադրված է Python-ի հետ միասին)
  2. Կլոնավորեք կամ ներբեռնեք պահեստը
  3. Տեղադրեք անհրաժեշտ կախվածությունները:
    python3 -m pip install -r requirements.txt

  4. Գործարկեք տեղադրման սցենարը
    Linux-ի համար.

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

    Windows-ի համար՝ windows_install.bat

  5. Խմբագրել կազմաձևման ֆայլը
    Linux-ի համար.

    sudoedit /etc/zen-cf-ddns.conf

    Windows- ի համար.

    Բացեք zen-cf-ddns.conf ֆայլը այն պանակում, որտեղ տեղադրեցիք սցենարը:

    Սա սովորական JSON ֆայլ է, կարգավորումները ոչ մի բարդ բան չեն. ես հատուկ նկարագրեցի դրա մեջ 2 տարբեր գոտիներ որպես օրինակ:

Ի՞նչ է թաքնված տեղադրողների հետևում:

install.sh Linux-ի համար.

  1. Օգտատերը ստեղծվել է դեյմոնը գործարկելու համար՝ առանց տնային գրացուցակ ստեղծելու և առանց մուտք գործելու հնարավորության։
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Մատյան ֆայլը ստեղծվում է /var/log/-ում
  3. Դարձրեք նորաստեղծ օգտվողին գրանցամատյանի ֆայլի սեփականատեր
  4. Ֆայլերը պատճենվում են իրենց տեղերում (config-ը /etc-ում, գործարկվող ֆայլը /usr/bin-ում, սպասարկման ֆայլը /lib/systemd/system-ում)
  5. Ծառայությունն ակտիվացված է

windows_install.bat Windows-ի համար.

  1. Պատճենում է գործարկվող և կազմաձևման ֆայլը օգտագործողի կողմից նշված թղթապանակում
  2. Ստեղծում է առաջադրանք ժամանակացույցում` սկրիպտը համակարգի գործարկման ժամանակ գործարկելու համար
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Կազմաձևը փոխելուց հետո սկրիպտը պետք է վերագործարկվի, Linux-ում ամեն ինչ պարզ է և ծանոթ.

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-ի համար դուք ստիպված կլինեք սպանել pythonw գործընթացը և նորից գործարկել սկրիպտը (ես շատ ծույլ եմ Windows-ի համար ծառայություն գրել C#-ով):

taskkill /im pythonw.exe

Սա ավարտում է տեղադրումը և կազմաձևումը, վայելեք այն ձեր առողջության համար:

Նրանց համար, ովքեր ցանկանում են տեսնել Python-ի ոչ այնքան գեղեցիկ կոդը, ահա այն պահոց GitHub-ում.

MIT լիցենզավորված, այնպես որ արեք այս իրերով այն, ինչ ցանկանում եք:

Հ.Գ.- Հասկանում եմ, որ մի քիչ հենարան է ստացվել, բայց իր գործն անում է թնդյունով։

UPD՝ 11.10.2019/17/37 XNUMX:XNUMX
Ես գտա ևս 1 խնդիր, և եթե ինչ-որ մեկը ինձ ասի, թե ինչպես լուծել այն, ես շատ շնորհակալ կլինեմ:
Խնդիրն այն է, որ եթե դուք տեղադրեք կախվածություններ առանց sudo python -m pip install -r ..., ապա մոդուլները տեսանելի չեն լինի ծառայության օգտագործողից, և ես չէի ցանկանա ստիպել օգտվողներին տեղադրել մոդուլներ sudo-ի տակ, և սա ոչ ճիշտ.
Ինչպե՞ս այն գեղեցիկ տեսք տալ:
UPD՝ 11.10.2019/19/16 XNUMX:XNUMX Խնդիրը լուծվել է venv-ի միջոցով:
Մի քանի փոփոխություններ են եղել. Հաջորդ թողարկումը կլինի առաջիկա մի քանի օրվա ընթացքում:

Source: www.habr.com

Добавить комментарий