Esipuhe
Henkilökohtaisiin tarpeisiin kotona asensin VSpheren, jossa käytän virtuaalista reititintä ja Ubuntu-palvelinta mediapalvelimena ja joukon muita herkkuja, ja tämän palvelimen pitäisi olla saatavilla Internetistä. Mutta ongelmana on, että palveluntarjoajani antaa staattista tietoa rahasta, jota voidaan aina käyttää hyödyllisempiin tarkoituksiin. Siksi käytin ddclient + cloudflare -yhdistelmää.
Kaikki oli hyvin, kunnes ddclient lakkasi toimimasta. Pienen tuijottamisen jälkeen tajusin, että kainalosauvojen ja polkupyörien aika oli tullut, koska ongelman löytäminen vei liian kauan. Lopulta kaikki muuttui pieneksi demoniksi, joka vain toimii, enkä tarvitse mitään muuta.
Jos jotakuta kiinnostaa niin tervetuloa kissoille.
Käytetyt työkalut ja miten se toimii
Joten ensimmäinen asia, jonka löysin cloudflare-verkkosivustolta, on kaikki, mitä sinun tarvitsee tietää
Yleensä kääre otettiin perustana
Otin yhden esimerkin DNS:n päivittämisestä ja lisäsin konfigurointitiedoston käytön ja mahdollisuuden päivittää useita A-tietueita vyöhykkeen sisällä ja tietysti rajoittamattoman määrän vyöhykkeitä.
Logiikka on seuraava:
- Komentosarja vastaanottaa luettelon vyöhykkeistä asetustiedostosta ja selaa niitä
- Jokaisella vyöhykkeellä komentosarja käy läpi jokaisen A- tai AAAA-tyypin DNS-tietueen ja tarkistaa julkisen IP-osoitteen tietueella.
- Jos IP on erilainen, se muuttaa sen; jos ei, se ohittaa silmukan iteraation ja siirtyy seuraavaan.
- Nukahtaa asetuksissa määritetyn ajan
Asennus ja konfigurointi
Luultavasti olisi mahdollista tehdä .deb-paketti, mutta en ole hyvä siinä, eikä se ole niin vaikeaa.
Kuvasin prosessia erittäin yksityiskohtaisesti README.md:ssä osoitteessa
Mutta varmuuden vuoksi kuvailen sitä venäjäksi yleisesti:
- Varmista, että python3 ja python3-pip on asennettu, jos ei, asenna ne (Windowsissa python3-pip asennetaan Pythonin kanssa)
- Kloonaa tai lataa arkisto
- Asenna tarvittavat riippuvuudet.
python3 -m pip install -r requirements.txt
- Suorita asennusskripti
Linuxille:chmod +x install.sh sudo ./install.sh
Windows: windows_install.bat
- Muokkaa asetustiedostoa
Linuxille:sudoedit /etc/zen-cf-ddns.conf
Windows:
Avaa zen-cf-ddns.conf-tiedosto kansiosta, johon asensit komentosarjan.
Tämä on tavallinen JSON-tiedosto, asetuksissa ei ole mitään monimutkaista - kuvailin siinä erityisesti 2 eri vyöhykettä esimerkkinä.
Mitä asentajien takana on?
install.sh Linuxille:
- Käyttäjä luodaan ajamaan demonia luomatta kotihakemistoa ja ilman mahdollisuutta kirjautua sisään.
sudo useradd -r -s /bin/false zen-cf-ddns
- Lokitiedosto luodaan kansioon /var/log/
- Tee juuri luodusta käyttäjästä lokitiedoston omistaja
- Tiedostot kopioidaan paikoilleen (config /etc, suoritettava tiedosto /usr/bin, palvelutiedosto /lib/systemd/system)
- Palvelu on aktivoitu
windows_install.bat Windowsille:
- Kopioi suoritettavan ja määritystiedoston käyttäjän määrittämään kansioon
- Luo aikataulussa tehtävän komentosarjan suorittamiseksi järjestelmän käynnistyksen yhteydessä
schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart
Asetuksen muuttamisen jälkeen komentosarja on käynnistettävä uudelleen, Linuxissa kaikki on yksinkertaista ja tuttua:
sudo service zen-cf-ddns start
sudo service zen-cf-ddns stop
sudo service zen-cf-ddns restart
sudo service zen-cf-ddns status
Windowsille sinun on lopetettava pythonw-prosessi ja suoritettava komentosarja uudelleen (olen liian laiska kirjoittamaan palvelua Windowsille C#:lla):
taskkill /im pythonw.exe
Tämä viimeistelee asennuksen ja konfiguroinnin, nauti siitä terveydellesi.
Niille, jotka haluavat nähdä ei niin kauniin Python-koodin, se on tässä
MIT-lisensoitu, joten tee näillä aineilla mitä haluat.
PS: Ymmärrän, että se osoittautui hieman kainalosauvaksi, mutta se tekee tehtävänsä räjähdysmäisesti.
UPD: 11.10.2019 klo 17:37
Löysin vielä yhden ongelman, ja jos joku kertoo minulle, kuinka se ratkaistaan, olen erittäin kiitollinen.
Ongelmana on, että jos asennat riippuvuuksia ilman sudo python -m pip install -r ..., niin moduulit eivät näy palvelun käyttäjältä, enkä haluaisi pakottaa käyttäjiä asentamaan moduuleja sudon alle, ja tämä on ei oikein.
Kuinka saada se näyttämään kauniilta?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Ongelma ratkesi käyttämällä venv.
Muutoksia on tapahtunut useita. Seuraava julkaisu tulee lähipäivinä.
Lähde: will.com