Előszó
Otthoni személyes igényekre feltelepítettem a VSphere-t, amin egy virtuális routert és egy Ubuntu szervert futtatok médiaszerverként és egy rakás egyéb finomságot, és ez a szerver legyen elérhető az internetről. De az a baj, hogy a szolgáltatóm pénzért statikus adatokat ad, amiket mindig hasznosabb célokra lehet felhasználni. Ezért a ddclient + cloudflare kombinációt használtam.
Minden rendben volt, amíg a ddclient le nem állt. Kis turkálás után rájöttem, hogy eljött a mankók és a biciklik ideje, mert túl sok időbe telt megtalálni a problémát. Végül minden egy kis démonná változott, ami egyszerűen működik, és nincs szükségem másra.
Ha valakit érdekel, szívesen látunk a cicában.
A használt eszközök és „működése”.
Tehát az első dolog, amit megtudtam a cloudflare weboldalon, az minden, amit tudnia kell
Általában a csomagolást vették alapul
Vettem az egyik példát a DNS frissítésére, és hozzáadtam a konfigurációs fájl használatát, valamint a több A rekord frissítésének lehetőségét egy zónán belül, és természetesen korlátlan számú zónát.
A logika a következő:
- A szkript megkapja a zónák listáját a konfigurációs fájlból, és áthalad rajtuk
- Minden zónában a szkript végigfut minden A vagy AAAA típusú DNS rekordon, és ellenőrzi a nyilvános IP-címet a rekorddal.
- Ha az IP eltérő, akkor megváltoztatja, ha nem, akkor kihagyja a ciklus iterációját, és továbblép a következőre.
- A konfigurációban megadott ideig elalszik
Telepítés és konfigurálás
Valószínűleg lehetne .deb csomagot készíteni, de nem vagyok jó ebben, és nem is olyan nehéz.
A folyamatot részletesen leírtam a README.md címen
De minden esetre általánosságban leírom oroszul:
- Győződjön meg arról, hogy a python3 és a python3-pip telepítve van, ha nem, telepítse (Windows rendszeren a python3-pip a Python mellett van telepítve)
- Klónozza vagy töltse le az adattárat
- Telepítse a szükséges függőségeket.
python3 -m pip install -r requirements.txt
- Futtassa a telepítő szkriptet
Linux esetén:chmod +x install.sh sudo ./install.sh
Windows esetén: windows_install.bat
- Szerkessze a konfigurációs fájlt
Linux esetén:sudoedit /etc/zen-cf-ddns.conf
Windows esetén:
Nyissa meg a zen-cf-ddns.conf fájlt abban a mappában, ahová a szkriptet telepítette.
Ez egy normál JSON fájl, a beállítások nem bonyolultak - konkrétan leírtam benne 2 különböző zónát példaként.
Mi van a telepítők mögött?
install.sh Linuxhoz:
- A felhasználó a démon futtatására jön létre anélkül, hogy saját könyvtárat hozna létre, és nem tud bejelentkezni.
sudo useradd -r -s /bin/false zen-cf-ddns
- Egy naplófájl jön létre a /var/log/ mappában
- Legyen az újonnan létrehozott felhasználó a naplófájl tulajdonosa
- A fájlok a helyükre másolódnak (config az /etc-ben, végrehajtható fájl a /usr/bin-ben, szervizfájl a /lib/systemd/system-ben)
- A szolgáltatás aktiválva van
windows_install.bat Windowshoz:
- A végrehajtható és a konfigurációs fájlt egy felhasználó által megadott mappába másolja
- Feladatot hoz létre az ütemezőben a parancsfájl futtatásához a rendszer indításakor
schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart
A konfiguráció megváltoztatása után a szkriptet újra kell indítani, Linuxban minden egyszerű és ismerős:
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 esetén meg kell ölni a pythonw folyamatot, és újra kell futtatnia a szkriptet (lusta vagyok, hogy C#-ban írjak szolgáltatást a Windows számára):
taskkill /im pythonw.exe
Ezzel befejeződik a telepítés és a konfiguráció, élvezze egészségére.
Azok számára, akik szeretnék látni a nem túl szép Python kódot, itt van
MIT engedéllyel rendelkezik, úgyhogy tegyél ezzel a cuccal, amit akarsz.
PS: Megértem, hogy egy kis mankónak bizonyult, de nagy lendülettel teszi a dolgát.
UPD: 11.10.2019. 17:37
Találtam még 1 problémát, és ha valaki megmondja, hogyan kell megoldani azt nagyon megköszönném.
A probléma az, hogy ha a függőségeket a sudo python -m pip install -r ... nélkül telepíted, akkor a modulok nem lesznek láthatóak a szolgáltatás felhasználója számára, és nem szeretném a felhasználókat arra kényszeríteni, hogy sudo alatt telepítsenek modulokat, és ez Nem megfelelő.
Hogyan lehet szépíteni?
UPD: 11.10.2019/19/16 XNUMX:XNUMX A probléma a venv segítségével megoldódott.
Több változás is történt. A következő kiadás a következő napokban jelenik meg.
Forrás: will.com