muqaddima
Uydagi shaxsiy ehtiyojlar uchun men VSphere-ni o'rnatdim, unda men virtual router va Ubuntu serverini media-server va boshqa ko'plab foydali narsalar sifatida ishlataman va bu serverga Internetdan kirish mumkin bo'lishi kerak. Ammo muammo shundaki, mening provayderim har doim foydaliroq maqsadlarda ishlatilishi mumkin bo'lgan pul uchun statik ma'lumotlarni beradi. Shuning uchun men ddclient + cloudflare kombinatsiyasidan foydalandim.
Ddclient ishlashni to'xtatmaguncha hammasi yaxshi edi. Bir oz tevarak-atrofni o'ylagandan so'ng, tayoq va velosipedlarning vaqti kelganini tushundim, chunki muammoni topish juda ko'p vaqtni oladi. Oxir-oqibat, hamma narsa shunchaki ishlaydigan kichik demonga aylandi va menga boshqa hech narsa kerak emas.
Agar kimdir qiziqsa, mushukka xush kelibsiz.
Amaldagi asboblar va "u" qanday ishlaydi
Shunday qilib, cloudflare veb-saytida men bilgan birinchi narsa - bu siz bilishingiz kerak bo'lgan hamma narsa
Umuman olganda, o'rash asos sifatida qabul qilindi
Men DNS-ni yangilash uchun misollardan birini oldim va konfiguratsiya faylidan foydalanishni va zona ichidagi bir nechta A yozuvlarini va, albatta, cheksiz miqdordagi zonalarni yangilash imkoniyatini qo'shdim.
Mantiq quyidagicha:
- Skript konfiguratsiya faylidan zonalar ro'yxatini oladi va ular orqali aylanadi
- Har bir zonada skript A yoki AAAA tipidagi har bir DNS yozuvi orqali o'tadi va umumiy IP-ni yozuv bilan tekshiradi.
- Agar IP boshqacha bo'lsa, u uni o'zgartiradi, agar bo'lmasa, tsiklning takrorlanishini o'tkazib yuboradi va keyingisiga o'tadi.
- Konfiguratsiyada ko'rsatilgan vaqt davomida uxlab qoladi
O'rnatish va sozlash
Ehtimol, .deb paketini yaratish mumkin edi, lekin men buni yaxshi bilmayman va bu unchalik qiyin emas.
Men jarayonni README.md da batafsil tasvirlab berdim
Ammo har holda, men uni rus tilida umumiy ma'noda tasvirlab beraman:
- Sizda python3 va python3-pip o'rnatilganligiga ishonch hosil qiling, agar bo'lmasa, uni o'rnating (Windowsda python3-pip Python bilan birga o'rnatilgan)
- Klonlash yoki omborni yuklab oling
- Kerakli bog'liqliklarni o'rnating.
python3 -m pip install -r requirements.txt
- O'rnatish skriptini ishga tushiring
Linux uchun:chmod +x install.sh sudo ./install.sh
Windows uchun: windows_install.bat
- Konfiguratsiya faylini tahrirlang
Linux uchun:sudoedit /etc/zen-cf-ddns.conf
Windows uchun:
Skriptni o'rnatgan papkada zen-cf-ddns.conf faylini oching.
Bu oddiy JSON fayli, sozlamalar hech qanday murakkab narsa emas - men misol sifatida undagi 2 xil zonani tasvirlab berdim.
O'rnatuvchilar ortida nima bor?
Linux uchun install.sh:
- Demonni ishga tushirish uchun foydalanuvchi uy katalogini yaratmasdan va tizimga kirish imkoniyatisiz yaratilgan.
sudo useradd -r -s /bin/false zen-cf-ddns
- Jurnal fayli /var/log/ da yaratilgan.
- Yangi yaratilgan foydalanuvchini jurnal faylining egasiga aylantiring
- Fayllar o'z joylariga ko'chiriladi (konfiguratsiya /etc, bajariladigan fayl /usr/bin, xizmat fayli /lib/systemd/system)
- Xizmat faollashtirilgan
Windows uchun windows_install.bat:
- Bajariladigan va konfiguratsiya faylini foydalanuvchi tomonidan belgilangan papkaga nusxalaydi
- Tizim ishga tushganda skriptni ishga tushirish uchun rejalashtiruvchida vazifa yaratadi
schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart
Konfiguratsiyani o'zgartirgandan so'ng, skriptni qayta ishga tushirish kerak, Linuxda hamma narsa oddiy va tanish:
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 uchun siz pythonw jarayonini o'ldirishingiz va skriptni qayta ishga tushirishingiz kerak bo'ladi (men C# da Windows uchun xizmat yozishga dangasaman):
taskkill /im pythonw.exe
Bu o'rnatish va konfiguratsiyani tugatadi, sog'ligingiz uchun zavqlaning.
Juda chiroyli bo'lmagan Python kodini ko'rishni istaganlar uchun bu erda
MIT litsenziyasiga ega, shuning uchun bu narsalar bilan xohlaganingizni qiling.
PS: Tushundimki, bu biroz qo'ltiq bo'lib chiqdi, lekin u portlash bilan o'z ishini qiladi.
UPD: 11.10.2019 17:37
Men yana 1 ta muammo topdim va agar kimdir buni qanday hal qilishni aytsa, men juda minnatdorman.
Muammo shundaki, agar siz sudo python -m pip install -r ... holda bog'liqliklarni o'rnatsangiz, u holda modullar xizmat foydalanuvchisi tomonidan ko'rinmaydi va men foydalanuvchilarni sudo ostida modullarni o'rnatishga majburlashni xohlamayman va bu to'g'ri emas.
Uni qanday qilib chiroyli qilish kerak?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Muammo venv yordamida hal qilindi.
Bir nechta o'zgarishlar bo'ldi. Keyingi nashr yaqin kunlarda chiqadi.
Manba: www.habr.com