Þitt eigið kraftmikla DNS með CloudFlare

Formáli

Þitt eigið kraftmikla DNS með CloudFlare Fyrir persónulegar þarfir heima setti ég upp VSphere, sem ég keyri sýndarbeini á og Ubuntu server sem miðlara og fullt af öðru góðgæti, og þessi server ætti að vera aðgengilegur af netinu. En vandamálið er að veitandinn minn gefur kyrrstæð gögn fyrir peninga, sem alltaf er hægt að nota í gagnlegri tilgangi. Þess vegna notaði ég samsetninguna ddclient + cloudflare.

Allt var í lagi þar til ddclient hætti að virka. Eftir að hafa pælt aðeins í, áttaði ég mig á því að kominn tími á hækjur og reiðhjól, þar sem það tók of langan tíma að finna vandamálið. Á endanum breyttist allt í lítinn púka sem bara virkar og ég þarf ekkert annað.
Ef einhver hefur áhuga, velkominn í kött.

Verkfæri sem notuð eru og hvernig „það“ virkar

Svo það fyrsta sem ég komst að á vefsíðu cloudflare er allt sem þú þarft að vita um API. Og ég var búinn að setjast niður til að innleiða allt í Python (eftir að hafa kynnst Python nota ég það í auknum mæli í einföld verkefni eða þegar ég þarf að búa til frumgerð í skyndi), þegar ég rakst allt í einu á nánast tilbúna útfærslu.
Almennt séð var umbúðirnar teknar til grundvallar python-skýjablossi.

Ég tók eitt af dæmunum til að uppfæra DNS og bætti við notkun á stillingarskrá og möguleika á að uppfæra nokkrar A færslur innan svæðis og auðvitað ótakmarkaðan fjölda svæða.

Rökfræðin er sem hér segir:

  1. Handritið fær lista yfir svæði úr stillingarskránni og fer í gegnum þau
  2. Á hverju svæði fer handritið í gegnum hverja DNS skrá af gerð A eða AAAA og athugar opinbera IP með skránni
  3. Ef IP-talan er önnur breytir hún henni; ef ekki, sleppir hún lykkjuendurtekningu og heldur áfram í þá næstu.
  4. Sofnar þann tíma sem tilgreindur er í stillingunni

Uppsetning og stillingar

Það væri líklega hægt að búa til .deb pakka, en ég er ekki góður í þessu, og það er ekki allt svo erfitt.
Ég lýsti ferlinu í smáatriðum í README.md á geymslusíðu.

En bara ef ég ætla að lýsa því á rússnesku almennt:

  1. Gakktu úr skugga um að þú hafir python3 og python3-pip uppsett, ef ekki, settu það upp (í Windows er python3-pip sett upp ásamt Python)
  2. Klóna eða hlaða niður geymslunni
  3. Settu upp nauðsynlegar ósjálfstæði.
    python3 -m pip install -r requirements.txt

  4. Keyrðu uppsetningarforskriftina
    Fyrir Linux:

    chmod +x install.sh
    sudo ./install.sh

    Fyrir Windows: windows_install.bat

  5. Breyttu stillingarskránni
    Fyrir Linux:

    sudoedit /etc/zen-cf-ddns.conf

    Fyrir Windows:

    Opnaðu zen-cf-ddns.conf skrána í möppunni þar sem þú settir upp handritið.

    Þetta er venjuleg JSON skrá, stillingarnar eru ekkert flóknar - ég lýsti sérstaklega 2 mismunandi svæðum í henni sem dæmi.

Hvað er á bak við uppsetningartækin?

install.sh fyrir Linux:

  1. Notandi er búinn til til að keyra púkann, án þess að búa til heimaskrá og án þess að geta skráð sig inn.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Notkunarskrá er búin til í /var/log/
  3. Gerðu nýstofnaðan notanda að eiganda annálaskrárinnar
  4. Skrárnar eru afritaðar á þeirra staði (config í /etc, keyranleg skrá í /usr/bin, þjónustuskrá í /lib/systemd/system)
  5. Þjónustan er virkjuð

windows_install.bat fyrir Windows:

  1. Afritar keyrslu- og stillingarskrána í notandatilgreinda möppu
  2. Býr til verkefni í tímaáætlun til að keyra skriftuna við ræsingu kerfisins
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Eftir að stillingunni hefur verið breytt þarf að endurræsa handritið; í Linux er allt einfalt og kunnuglegt:

sudo service zen-cf-ddns start
sudo service zen-cf-ddns stop
sudo service zen-cf-ddns restart
sudo service zen-cf-ddns status

fyrir Windows verður þú að drepa pythonw ferlið og keyra skriftuna aftur (ég er of latur til að skrifa þjónustu fyrir Windows í C#):

taskkill /im pythonw.exe

Þetta lýkur uppsetningu og stillingu, njóttu þess að heilsu þinni.

Fyrir þá sem vilja sjá ekki svo fallega Python kóðann, hér er hann geymsla á GitHub.

MIT leyfi, svo gerðu með þetta dót það sem þú vilt.

PS: Mér skilst að það hafi reynst vera hálfgert hækja, en það skilar sínu með glæsibrag.

Uppfært: 11.10.2019/17/37 XNUMX:XNUMX
Ég fann eitt vandamál í viðbót og ef einhver segir mér hvernig ég á að leysa það, þá verð ég mjög þakklátur.
Vandamálið er að ef þú setur upp ósjálfstæði án sudo python -m pip install -r ..., þá verða einingarnar ekki sýnilegar frá þjónustunotandanum, og ég myndi ekki vilja neyða notendur til að setja upp einingar undir sudo, og þetta er ekki rétt.
Hvernig á að láta það líta fallegt út?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Vandamálið var leyst með venv.
Það hafa orðið nokkrar breytingar. Næsta útgáfa kemur á næstu dögum.

Heimild: www.habr.com

Bæta við athugasemd