DNS dinamis dhewe nggunakake CloudFlare

Pambuka

DNS dinamis dhewe nggunakake CloudFlare Kanggo kabutuhan pribadi ing omah, aku nginstal VSphere, ing ngendi aku mbukak router virtual lan server Ubuntu minangka server media lan akeh barang liyane, lan server iki kudu diakses saka Internet. Nanging masalahe yaiku panyedhiyaku menehi data statis kanggo dhuwit, sing bisa digunakake kanggo tujuan sing luwih migunani. Mulane, aku nggunakake kombinasi ddclient + cloudflare.

Kabeh apik nganti ddclient mandheg kerja. Sakwisé ngoyak-oyak sithik, aku ngerti wektuné kréta lan sepedha wis teka, merga butuh wektu sing akèh kanggo nggoleki masalahé. Ing pungkasan, kabeh dadi daemon cilik sing mung bisa digunakake, lan aku ora butuh apa-apa.
Yen ana sing minat, welcome to cat.

Piranti sing digunakake lan cara kerjane

Dadi, sing pertama ditemokake ing situs web cloudflare yaiku kabeh sing sampeyan kudu ngerti API. Lan aku wis njagong mudhun kanggo ngleksanakake kabeh ing Python (sawise njaluk kenalan karo Python, aku tambah akeh digunakake kanggo sawetara tugas prasaja utawa nalika aku kudu cepet nggawe prototipe), nalika aku dumadakan teka tengen implementasine meh siap-digawe.
Umumé, bungkus kasebut dijupuk minangka basis python-cloudflare.

Aku njupuk salah siji conto kanggo nganyari DNS lan nambah nggunakake file konfigurasi lan kemampuan kanggo nganyari sawetara cathetan A ing zona lan, mesthi, nomer Unlimited zona.

Logika kasebut kaya ing ngisor iki:

  1. Skrip nampa dhaptar zona saka file konfigurasi lan puteran liwat
  2. Ing saben zona, skrip ngubengi saben rekaman DNS saka jinis A utawa AAAA lan mriksa IP Umum kanthi rekaman kasebut
  3. Yen IP beda, bakal ngganti; yen ora, bakal ngliwati pengulangan loop lan pindhah menyang sabanjure.
  4. Tiba asleep kanggo wektu kasebut ing config

Instalasi lan konfigurasi

Iku mbokmenawa bisa nggawe paket .deb, nanging aku ora apik iki, lan iku ora kabeh sing angel.
Aku diterangake proses ing gedhe rinci ing README.md ing kaca repositori.

Nanging mung ing kasus, aku bakal njlèntrèhaké ing basa Rusia ing istilah umum:

  1. Priksa manawa sampeyan wis nginstal python3 lan python3-pip, yen ora, instal (ing Windows, python3-pip diinstal bebarengan karo Python)
  2. Klone utawa download repositori
  3. Instal dependensi sing dibutuhake.
    python3 -m pip install -r requirements.txt

  4. Jalanake skrip instalasi
    Kanggo Linux:

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

    Kanggo Windows: windows_install.bat

  5. Sunting file konfigurasi
    Kanggo Linux:

    sudoedit /etc/zen-cf-ddns.conf

    Kanggo Windows:

    Bukak file zen-cf-ddns.conf ing folder sing sampeyan instal script.

    Iki minangka file JSON biasa, setelan kasebut ora rumit - aku khusus nggambarake 2 zona sing beda-beda minangka conto.

Apa konco installers?

install.sh kanggo Linux:

  1. Pangguna digawe kanggo mbukak daemon, tanpa nggawe direktori ngarep lan tanpa bisa mlebu.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. File log digawe ing /var/log/
  3. Nggawe pangguna sing mentas digawe dadi pemilik file log
  4. File kasebut disalin menyang panggonane (config ing / etc, file eksekusi ing / usr / bin, file layanan ing / lib / systemd / system)
  5. Layanan kasebut diaktifake

windows_install.bat kanggo Windows:

  1. Nyalin file eksekusi lan konfigurasi menyang folder sing ditemtokake pangguna
  2. Nggawe tugas ing panjadwal kanggo mbukak script ing wiwitan sistem
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Sawise ngganti konfigurasi, skrip kudu diwiwiti maneh; ing Linux kabeh prasaja lan akrab:

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

kanggo Windows sampeyan kudu mateni proses pythonw lan mbukak maneh skrip (aku kesed nulis layanan kanggo Windows ing C #):

taskkill /im pythonw.exe

Iki ngrampungake instalasi lan konfigurasi, nikmati kesehatan sampeyan.

Kanggo sing pengin ndeleng kode Python sing ora apik banget, kene repositori ing GitHub.

MIT dilisensi, supaya nindakake apa sing sampeyan pengin.

PS: Aku ngerti yen iku dadi dicokot saka crutch, nanging nindakake sawijining karya karo bang.

UPD: 11.10.2019/17/37 XNUMX:XNUMX
Aku ketemu 1 masalah liyane, lan yen wong ngandhani carane ngatasi, Aku bakal ngucapke matur nuwun banget.
Masalahe yaiku yen sampeyan nginstal dependensi tanpa sudo python -m pip install -r ..., mula modul kasebut ora bakal katon saka pangguna layanan, lan aku ora pengin meksa pangguna nginstal modul ing sudo, lan iki ora bener.
Carane nggawe katon ayu?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Masalah ditanggulangi nggunakake venv.
Ana sawetara owah-owahan. Rilis sabanjure bakal ana ing sawetara dina sabanjure.

Source: www.habr.com

Add a comment