Pwòp DNS dinamik ou lè l sèvi avèk CloudFlare

Avètisman

Pwòp DNS dinamik ou lè l sèvi avèk CloudFlare Pou bezwen pèsonèl nan kay la, mwen enstale VSphere, sou ki mwen kouri yon routeur vityèl ak yon sèvè Ubuntu kòm yon sèvè medya ak yon pakèt lòt bagay, ak sèvè sa a ta dwe aksesib sou entènèt la. Men, pwoblèm nan se ke founisè mwen an bay done estatik pou lajan, ki ka toujou itilize pou rezon ki pi itil. Se poutèt sa, mwen te itilize konbinezon an ddclient + cloudflare.

Tout bagay te byen jiskaske ddclient sispann travay. Apre mwen fin fouye yon ti kras, mwen reyalize ke lè a te rive pou beki ak bisiklèt, paske li te pran twòp tan pou jwenn pwoblèm nan. Nan fen a, tout bagay tounen yon ti demon ki jis travay, epi mwen pa bezwen anyen lòt bagay.
Si yon moun enterese, akeyi chat.

Zouti yo itilize ak ki jan "li" travay

Se konsa, premye bagay mwen te jwenn sou sit entènèt cloudflare la se tout sa ou bezwen konnen sou API. Apre sa, mwen te deja chita pou aplike tout bagay nan Python (apre mwen fin fè konesans ak Python, mwen de pli zan pli sèvi ak li pou kèk travay senp oswa lè mwen bezwen byen vit fè yon pwototip), lè mwen toudenkou te vin atravè yon aplikasyon prèske pare-fè.
An jeneral, wrapper a te pran kòm yon baz python-cloudflare.

Mwen te pran youn nan egzanp yo pou mete ajou DNS epi mwen te ajoute itilizasyon yon fichye konfigirasyon ak kapasite pou mete ajou plizyè dosye A nan yon zòn epi, nan kou, yon kantite zòn san limit.

Lojik la se jan sa a:

  1. Script la resevwa yon lis zòn nan fichye a konfigirasyon ak bouk nan yo
  2. Nan chak zòn, script la boukle nan chak dosye DNS nan kalite A oswa AAAA epi tcheke IP Piblik la ak dosye a.
  3. Si IP a diferan, li chanje li; si se pa sa, li sote iterasyon an bouk epi li ale nan pwochen an.
  4. Tonbe dòmi pou tan ki espesifye nan konfigirasyon an

Enstalasyon ak konfigirasyon

Li ta pwobableman posib fè yon pake .deb, men mwen pa bon nan sa a, epi li pa tout sa ki difisil.
Mwen dekri pwosesis la an detay nan README.md nan paj depo.

Men, jis nan ka, mwen pral dekri li an Ris an tèm jeneral:

  1. Asire w ke ou gen python3 ak python3-pip enstale, si se pa sa, enstale li (sou Windows, python3-pip enstale ansanm ak Python)
  2. Klonaj oswa telechaje repozitwa a
  3. Enstale depandans ki nesesè yo.
    python3 -m pip install -r requirements.txt

  4. Kouri script enstalasyon an
    Pou Linux:

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

    Pou Windows: windows_install.bat

  5. Edit fichye konfigirasyon an
    Pou Linux:

    sudoedit /etc/zen-cf-ddns.conf

    Pou Windows:

    Louvri fichye zen-cf-ddns.conf nan katab kote ou enstale script la.

    Sa a se yon dosye JSON regilye, anviwònman yo pa gen anyen konplike - mwen espesyalman dekri 2 zòn diferan nan li kòm yon egzanp.

Ki sa ki dèyè enstalatè yo?

install.sh pou Linux:

  1. Yo kreye yon itilizatè pou kouri demon an, san yo pa kreye yon anyè lakay epi san yo pa kapab konekte.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Yo kreye yon dosye log nan /var/log/
  3. Fè itilizatè ki fèk kreye a pwopriyetè dosye a
  4. Fichye yo kopye nan kote yo (config nan /etc, dosye ègzèkutabl nan /usr/bin, fichye sèvis nan /lib/systemd/system)
  5. Se sèvis la aktive

windows_install.bat pou Windows:

  1. Kopi ègzèkutabl la ak fichye konfigirasyon nan yon katab itilizatè-espesifye
  2. Kreye yon travay nan pwogramè a pou kouri script la nan demaraj sistèm lan
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Apre chanje konfigirasyon an, script la bezwen rekòmanse; nan Linux tout bagay se senp ak abitye:

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

pou Windows ou pral oblije touye pwosesis la pythonw epi re-kouri script la (mwen twò parese yo ekri yon sèvis pou Windows nan C#):

taskkill /im pythonw.exe

Sa a konplete enstalasyon an ak konfigirasyon, jwi li nan sante ou.

Pou moun ki vle wè kòd Python ki pa tèlman bèl, isit la li ye depo sou GitHub.

MIT gen lisans, kidonk fè ak bagay sa a sa ou vle.

PS: Mwen konprann ke li te tounen yon ti jan nan yon beki, men li fè travay li ak yon bang.

UPD: 11.10.2019/17/37 XNUMX:XNUMX
Mwen jwenn 1 pwoblèm ankò, epi si yon moun di m 'ki jan yo rezoud li, mwen pral trè rekonesan.
Pwoblèm lan se ke si ou enstale depandans san yo pa sudo python -m pip enstale -r ..., Lè sa a, modil yo pa pral vizib nan itilizatè sèvis la, epi mwen pa ta renmen fòse itilizatè yo enstale modil anba sudo, e sa a se pa kòrèk.
Ki jan fè li gade bèl?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Pwoblèm lan te rezoud avèk venv.
Te gen plizyè chanjman. Pwochen piblikasyon an pral nan kèk jou kap vini yo.

Sous: www.habr.com

Add nouvo kòmantè