Նախաբան
Տանը անձնական կարիքների համար ես տեղադրել եմ VSphere-ը, որի վրա ես աշխատում եմ վիրտուալ երթուղիչ և Ubuntu սերվեր՝ որպես մեդիա սերվեր և մի շարք այլ բարիքներ, և այս սերվերը պետք է հասանելի լինի ինտերնետից: Բայց խնդիրն այն է, որ իմ մատակարարը փողի դիմաց տալիս է ստատիկ տվյալներ, որոնք միշտ կարող են օգտագործվել ավելի օգտակար նպատակների համար։ Հետեւաբար, ես օգտագործեցի ddclient + cloudflare համակցությունը:
Ամեն ինչ լավ էր, մինչև ddclient-ը դադարեց աշխատել: Մի փոքր շրջելուց հետո ես հասկացա, որ եկել է հենակների և հեծանիվների ժամանակը, քանի որ խնդիրը գտնելու համար չափազանց շատ ժամանակ էր պահանջվում: Ի վերջո, ամեն ինչ վերածվեց մի փոքրիկ դեյմոնի, որը պարզապես աշխատում է, և ես այլ բանի կարիք չունեմ:
Եթե որևէ մեկին հետաքրքրում է, բարի գալուստ կատու:
Օգտագործված գործիքներ և ինչպես է «այն» աշխատում
Այսպիսով, առաջին բանը, որ ես իմացա cloudflare կայքում, այն ամենն է, ինչ դուք պետք է իմանաք
Ընդհանրապես հիմք է ընդունվել փաթաթան
Ես վերցրեցի DNS-ի թարմացման օրինակներից մեկը և ավելացրեցի կոնֆիգուրացիայի ֆայլի օգտագործումը և մի քանի A գրառումները գոտու ներսում թարմացնելու հնարավորությունը և, իհարկե, անսահմանափակ թվով գոտիներ:
Տրամաբանությունը հետևյալն է.
- Սցենարը կարգավորումների ֆայլից ստանում է գոտիների ցանկ և պտտվում դրանց միջով
- Յուրաքանչյուր գոտում սկրիպտը պտտվում է A կամ AAAA տիպի յուրաքանչյուր DNS գրառման միջոցով և ստուգում է հանրային IP-ն գրառումով:
- Եթե IP-ն տարբեր է, այն փոխում է այն, եթե ոչ, ապա շրջանցում է հանգույցի կրկնությունը և անցնում հաջորդին:
- Քնում է կազմաձևում նշված ժամանակի համար
Տեղադրում և կազմաձևում
Հավանաբար, հնարավոր կլինի ստեղծել .deb փաթեթ, բայց ես այս հարցում լավ չեմ, և դա այնքան էլ դժվար չէ:
Ես մանրամասն նկարագրեցի գործընթացը README.md-ում
Բայց ամեն դեպքում, ես դա նկարագրելու եմ ռուսերեն ընդհանուր տերմիններով.
- Համոզվեք, որ տեղադրված եք python3 և python3-pip, եթե ոչ, ապա տեղադրեք այն (Windows-ում Python3-pip-ը տեղադրված է Python-ի հետ միասին)
- Կլոնավորեք կամ ներբեռնեք պահեստը
- Տեղադրեք անհրաժեշտ կախվածությունները:
python3 -m pip install -r requirements.txt
- Գործարկեք տեղադրման սցենարը
Linux-ի համար.chmod +x install.sh sudo ./install.sh
Windows-ի համար՝ windows_install.bat
- Խմբագրել կազմաձևման ֆայլը
Linux-ի համար.sudoedit /etc/zen-cf-ddns.conf
Windows- ի համար.
Բացեք zen-cf-ddns.conf ֆայլը այն պանակում, որտեղ տեղադրեցիք սցենարը:
Սա սովորական JSON ֆայլ է, կարգավորումները ոչ մի բարդ բան չեն. ես հատուկ նկարագրեցի դրա մեջ 2 տարբեր գոտիներ որպես օրինակ:
Ի՞նչ է թաքնված տեղադրողների հետևում:
install.sh Linux-ի համար.
- Օգտատերը ստեղծվել է դեյմոնը գործարկելու համար՝ առանց տնային գրացուցակ ստեղծելու և առանց մուտք գործելու հնարավորության։
sudo useradd -r -s /bin/false zen-cf-ddns
- Մատյան ֆայլը ստեղծվում է /var/log/-ում
- Դարձրեք նորաստեղծ օգտվողին գրանցամատյանի ֆայլի սեփականատեր
- Ֆայլերը պատճենվում են իրենց տեղերում (config-ը /etc-ում, գործարկվող ֆայլը /usr/bin-ում, սպասարկման ֆայլը /lib/systemd/system-ում)
- Ծառայությունն ակտիվացված է
windows_install.bat Windows-ի համար.
- Պատճենում է գործարկվող և կազմաձևման ֆայլը օգտագործողի կողմից նշված թղթապանակում
- Ստեղծում է առաջադրանք ժամանակացույցում` սկրիպտը համակարգի գործարկման ժամանակ գործարկելու համար
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-ի ոչ այնքան գեղեցիկ կոդը, ահա այն
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