DNS dinamis anjeun sorangan nganggo CloudFlare

foreword

DNS dinamis anjeun sorangan nganggo CloudFlare Pikeun kaperluan pribadi di imah, abdi dipasang Vsphere, nu kuring ngajalankeun hiji router maya jeung server Ubuntu salaku server media jeung kebat goodies séjén, sarta server ieu kedah diaksés tina Internét. Tapi masalahna nyaeta panyadia kuring méré data statik duit, nu salawasna bisa dipaké pikeun tujuan leuwih mangpaat. Kituna, kuring dipaké dina kombinasi ddclient + cloudflare.

Sagalana éta rupa dugi ddclient dieureunkeun gawé. Saatos poking sabudeureun saeutik, abdi sadar yén waktu geus datangna pikeun crutches na sapédah, saprak éta nyokot teuing waktos pikeun manggihan masalah. Tungtungna, sagalana robah jadi daemon leutik nu ngan jalan, sarta kuring teu butuh nanaon sejenna.
Manawi aya anu minat, wilujeng sumping ka ucing.

Alat anu dianggo sareng kumaha "éta" jalanna

Janten hal anu munggaran kuring mendakan dina situs wéb cloudflare nyaéta sadayana anu anjeun kedah terang API. Sarta kuring kungsi geus diuk handap pikeun nerapkeun sagalana di Python (sanggeus acquainted jeung Python, Kuring beuki ngagunakeun eta pikeun sababaraha pancén basajan atawa lamun kuring kudu gancang nyieun prototipe a), lamun kuring ujug-ujug datang di sakuliah palaksanaan ampir siap-dijieun.
Sacara umum, wrapper dicokot salaku dadasar python-cloudflare.

Kuring nyandak salah sahiji conto pikeun ngamutahirkeun DNS sareng nambihan panggunaan file konfigurasi sareng kamampuan pikeun ngapdet sababaraha rékaman A dina zona sareng, tangtosna, sajumlah zona anu henteu terbatas.

Logikana kieu:

  1. Skrip nampi daptar zona tina file konfigurasi sareng puteran ngalangkunganana
  2. Dina unggal zona, skrip ngagulung kana unggal rékaman DNS tina tipe A atanapi AAAA sareng pariksa IP Umum nganggo catetan
  3. Upami IPna béda, éta bakal robih; upami henteu, éta ngalangkungan iterasi loop sareng ngalih ka anu salajengna.
  4. Ragrag saré pikeun waktos dieusian dina config nu

Pamasangan sareng konfigurasi

Eta meureun bakal tiasa ngadamel pakét .deb, Tapi Kaula teu alus dina ieu, tur éta henteu kabeh nu hésé.
Kuring ngajelaskeun prosés di jéntré hébat dina README.md on kaca gudang.

Tapi bisi wae, kuring bakal ngajelaskeun dina basa Rusia sacara umum:

  1. Pastikeun yén anjeun parantos dipasang python3 sareng python3-pip, upami henteu, pasang (dina Windows, python3-pip dipasang sareng Python)
  2. Klon atanapi unduh gudang
  3. Pasang dependensi anu diperyogikeun.
    python3 -m pip install -r requirements.txt

  4. Jalankeun skrip pamasangan
    Pikeun Linux:

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

    Pikeun Windows: windows_install.bat

  5. Édit file konfigurasi
    Pikeun Linux:

    sudoedit /etc/zen-cf-ddns.conf

    Pikeun Windows:

    Buka file zen-cf-ddns.conf dina folder dimana anjeun masang naskah.

    Ieu mangrupikeun file JSON biasa, setélanna henteu rumit - kuring sacara khusus ngajelaskeun 2 zona anu béda di dinya salaku conto.

Naon balik installers?

install.sh pikeun Linux:

  1. A pamaké dijieun pikeun ngajalankeun daemon nu, tanpa nyieun diréktori imah jeung tanpa kamampuhan pikeun login.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. File log dijieun dina /var/log/
  3. Jieun pamaké nu anyar dijieun nu boga file log
  4. File disalin ka tempatna (config in /etc, file executable di /usr/bin, file service di /lib/systemd/system)
  5. Ladenan diaktipkeun

windows_install.bat pikeun Windows:

  1. Nyalin file anu tiasa dieksekusi sareng konfigurasi kana folder anu dikhususkeun ku pangguna
  2. Nyiptakeun tugas dina jadwal pikeun ngajalankeun naskah dina ngamimitian sistem
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Saatos ngarobih konfigurasi, skrip kedah dibalikan deui; dina Linux sadayana saderhana sareng biasa:

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

pikeun Windows anjeun kedah maéhan prosés pythonw sareng ngajalankeun deui naskahna (Abdi teuing puguh nyerat jasa pikeun Windows dina C #):

taskkill /im pythonw.exe

Ieu ngalengkepan pamasangan sareng konfigurasi, nikmati kana kaséhatan anjeun.

Pikeun maranéhanana anu rék ningali kodeu Python teu-kitu-geulis, ieu téh gudang di GitHub.

MIT dilisensikeun, janten lakukeun ku barang ieu naon anu anjeun pikahoyong.

PS: Kuring ngarti yén éta tétéla jadi saeutik crutch a, tapi ngalakukeun pakasaban na kalawan bang a.

UPD: 11.10.2019/17/37 XNUMX:XNUMX
Kuring kapanggih 1 deui masalah, sarta lamun batur ngabejaan kuring kumaha carana ngajawab eta, Kuring bakal pisan bersyukur.
Masalahna nyaéta upami anjeun masang dependensi tanpa sudo python -m pip install -r ..., maka modul moal katingali tina pangguna jasa, sareng kuring henteu hoyong maksa pangguna masang modul dina sudo, sareng ieu mangrupikeun teu bener.
Kumaha carana sangkan eta kasampak geulis?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Masalahna direngsekeun nganggo venv.
Aya sababaraha parobahan. Pelepasan salajengna bakal aya dina sababaraha dinten ka hareup.

sumber: www.habr.com

Tambahkeun komentar