EessÔna
Isiklikeks vajadusteks tÔstsin koju VSphere'i, millel jooksutab virtuaalset marsruuterit ja Ubuntu serverit meediaseservername'ina ning teisigi huvitavaid asju, ja see server peab olema Internetist ligipÀÀsetav. Probleemiks on see, et minu teenusepakkuja nÔuab staatilise IP eest tasu, mida on alati vÔimalik kasulikult kasutada muul otstarbel. SeetÔttu kasutasin ddclient + cloudflare kombinatsiooni.
KÔik oli hÀsti, kuni ddclient lÔpetas töötamise. PÀrast veidi kaevumist mÔistsin, et on aeg hakata kasutama paremaid lahendusi, kuna probleemi leidmiseks kulus liiga palju aega. LÔpuks kujunes kÔik vÀikseks teenuseks, mis lihtsalt töötab, ja rohkem ei olegi vaja.
Kellele huvi pakub â olete teretulnud allolevale lĂ”igule.
Kasutatud tööriistad ja kuidas «see» töötab
Nii et esimesena Ă”ppisin cloudflare'i lehelt kĂ”ike, mida on vaja teada . Ja juba olin valmistumas kĂ”ik Pythonis rakendama (pĂ€rast Pythoniga tutvumist kasutan ma seda jĂ€rjest rohkem lihtsate ĂŒlesannete jaoks vĂ”i kui on vaja kiiresti prototĂŒĂŒp valmistada), kui Ă€kitselt leidsin praktiliselt valmis lahenduse.
KokkuvÔttes pÔhines see wrapperil .
VĂ”tsin ĂŒhe nĂ€ite DNS-i vĂ€rskendamiseks, lisasin konfigureerimisfaili kasutamise ja vĂ”imaluse vĂ€rskendada mitmeid A-kirjeid piirkonnas ning loomulikult piiramatult piirkondi.
Loogika on jÀrgmine:
- Skript vÔtab konfigureerimisfailist piirkondade nimekirja ja lÀbib need iteratsioonis.
- Igas piirkonnas lÀbib skript iteratsioonis iga DNS A- vÔi AAAA-kirje ja vÔrdleb Publiku IP-d kirjevega.
- Kui IP erineb, muudab selle; kui ei, jÀtab iteratsiooni vahele ja liigub jÀrgmise juurde.
- Uinub mÀÀratud ajaks, nagu konfis on mÀÀratud.
Installeerimine ja seadistamine
VÔib-olla oleks saanud teha ka .deb-paketi, aga ma ei ole selles osav, ja pole see ka nii keeruline.
Protsessi olen ĂŒsna detailselt kirjeldanud README.md-s .
Aga igaks juhuks kirjeldan ĂŒldiselt ka vene keeles:
- Veenduge, et teil oleks paigaldatud python3 ja python3-pip, kui ei ole - installige (Windowsis paigaldatakse python3-pip koos Pythoniga).
- Kloonige vÔi laadige alla repository.
- Installige vajalikud sÔltuvused.
python3 -m pip install -r requirements.txt - KĂ€ivitage installatsiooniskript.
Linuxi jaoks:chmod +x install.sh sudo ./install.shWindowsi jaoks: windows_install.bat
- Redigeerige konfigureerimisfaili.
Linuxi jaoks:sudoedit /etc/zen-cf-ddns.confWindowsi jaoks:
Ava zen-cf-ddns.conf fail oma kausta, kuhu installisite skripti.
See on tavaline JSON fail, seadete poolest mitte midagi keerulist â olen kirjeldanud kaht erinevat tsooni nĂ€itena.
Mida peidavad paigaldajad?
install.sh Linuxile:
- Kasutaja luuakse deemonite kÀitamiseks, ilma kodukatalooge loomata ja logimise vÔimaluseta.
sudo useradd -r -s /bin/false zen-cf-ddns - Logifaili luuakse kirjutamiseks /var/log/
- MÀÀrame logifaili omanikuks hiljuti loodud kasutaja
- Failid kopeeritakse oma kohtadesse (konfiguratsioon /etc, tÀidetav fail /usr/bin, teenuse fail /lib/systemd/system)
- Teenust aktiveeritakse
windows_install.bat Windowsile:
- Kopeerib tÀidetava faili ja konfiguratsioonifaili kasutaja mÀÀratud kausta
- Loob ĂŒlesande ajakava, et skripti kĂ€ivitada sĂŒsteemi kĂ€ivitamisel
schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart
PÀrast konfiguratsiooni muutmist tuleb skript uuesti kÀivitada, Linuxis on see kÔik lihtne ja tuttav:
sudo service zen-cf-ddns start
sudo service zen-cf-ddns stop
sudo service zen-cf-ddns restart
sudo service zen-cf-ddns status
Windowsis tuleb tappa pythonw protsess ja skript uuesti kÀivitada (mulle ei meeldi C#-s Windowsi teenuse kirjutamine):
taskkill /im pythonw.exeNĂŒĂŒd on installimine ja seadistamine lĂ”pule viidud, kasutage tervislikult.
Neile, kes soovivad vaadata vÀhem ilusat Python koodi, siin see on. .
MIT litsents, seega tehke selle heaga, mida soovite.
P.S.: Ma tean, et see on natuke tobe, kuid oma ĂŒlesande tĂ€idab see suurepĂ€raselt.
UPD: 11.10.2019 17:37
Leidsin veel ĂŒhe probleemi ja kui keegi suudab mind aidata selle lahendamisel â oleksin vĂ€ga tĂ€nulik.
Probleem on selles, et kui installida sĂ”ltuvused ilma sudo'ta python -m pip install -r âŠ, siis teenuse kasutaja all ei ole mooduleid nĂ€htavad, ja ma ei tahaks sundida kasutajaid installima mooduleid sudo all, see ei oleks ka Ă”ige.
Kuidas Ôigesti teha, et see oleks ilus?
UPD: 11.10.2019 19:16 Probleem on lahendatud venv'i kasutamisega.
Tekkinud on mitu muudatust. Uus vÀljalase tuleb mÔne pÀeva jooksul.
Allikas: habr.com
