CloudFlare kullanarak kendi dinamik DNS'niz

Önsöz

CloudFlare kullanarak kendi dinamik DNS'niz Evdeki kişisel ihtiyaçlar için, üzerinde sanal bir yönlendirici ve bir medya sunucusu olarak bir Ubuntu sunucusu ve bir sürü başka güzellik çalıştırdığım VSphere'i kurdum ve bu sunucuya İnternet'ten erişilebilir olması gerekiyor. Ancak sorun şu ki, sağlayıcım para karşılığında statik veriler veriyor ve bunlar her zaman daha yararlı amaçlar için kullanılabilecek. Bu nedenle ddclient + cloudflare kombinasyonunu kullandım.

Ddclient çalışmayı bırakana kadar her şey yolundaydı. Biraz araştırdıktan sonra, sorunu bulmak çok zaman aldığı için koltuk değneği ve bisiklet kullanmanın zamanının geldiğini fark ettim. Sonunda her şey çalışan küçük bir arka plan programına dönüştü ve benim başka hiçbir şeye ihtiyacım yok.
İlgilenen varsa cat'e hoş geldiniz.

Kullanılan araçlar ve “bunun” nasıl çalıştığı

Cloudflare web sitesinde öğrendiğim ilk şey, bilmeniz gereken her şeydi API. Ve Python'daki her şeyi uygulamak için çoktan oturmuştum (Python'u tanıdıktan sonra, onu bazı basit görevler için veya hızlı bir şekilde bir prototip yapmam gerektiğinde giderek daha fazla kullanıyorum), aniden neredeyse hazır bir uygulamayla karşılaştığımda.
Genel olarak ambalaj esas alındı python-cloudflare.

DNS güncelleme örneklerinden birini aldım ve bir yapılandırma dosyasının kullanımını ve bir bölge içindeki ve tabii ki sınırsız sayıda bölge içindeki birkaç A kaydını güncelleme yeteneğini ekledim.

Mantık aşağıdaki gibidir:

  1. Komut dosyası, yapılandırma dosyasından bölgelerin bir listesini alır ve bunlar arasında döngü yapar
  2. Her bölgede, komut dosyası A veya AAAA türündeki her DNS kaydında döngü yapar ve kayıtla birlikte Genel IP'yi kontrol eder.
  3. IP farklıysa değiştirir, değilse döngü yinelemesini atlayıp bir sonrakine geçer.
  4. Yapılandırmada belirtilen süre boyunca uykuya dalar

Kurulum ve konfigürasyon

Muhtemelen bir .deb paketi oluşturmak mümkün olabilir, ancak bu konuda iyi değilim ve o kadar da zor değil.
Süreci README.md'de ayrıntılı olarak anlattım. depo sayfası.

Ancak her ihtimale karşı, bunu genel anlamda Rusça olarak anlatacağım:

  1. Python3 ve python3-pip'in kurulu olduğundan emin olun, yüklü değilse yükleyin (Windows'ta python3-pip, Python ile birlikte yüklenir)
  2. Depoyu klonlayın veya indirin
  3. Gerekli bağımlılıkları yükleyin.
    python3 -m pip install -r requirements.txt

  4. Kurulum komut dosyasını çalıştırın
    Linux için:

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

    Windows için: windows_install.bat

  5. Yapılandırma dosyasını düzenleyin
    Linux için:

    sudoedit /etc/zen-cf-ddns.conf

    Windows için:

    Komut dosyasını yüklediğiniz klasördeki zen-cf-ddns.conf dosyasını açın.

    Bu normal bir JSON dosyasıdır, ayarlar karmaşık değildir - örnek olarak özellikle 2 farklı bölgeyi tanımladım.

Kurulumcuların arkasında ne var?

Linux için install.sh:

  1. Bir ana dizin oluşturmadan ve oturum açma yeteneği olmadan arka plan programını çalıştırmak için bir kullanıcı oluşturulur.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. /var/log/ dizininde bir günlük dosyası oluşturulur
  3. Yeni oluşturulan kullanıcıyı günlük dosyasının sahibi yapın
  4. Dosyalar yerlerine kopyalanır (config /etc'de, yürütülebilir dosya /usr/bin'de, servis dosyası /lib/systemd/system'de)
  5. Hizmet etkinleştirildi

Windows için windows_install.bat:

  1. Yürütülebilir dosyayı ve yapılandırma dosyasını kullanıcı tarafından belirlenen bir klasöre kopyalar
  2. Komut dosyasını sistem başlangıcında çalıştırmak için zamanlayıcıda bir görev oluşturur
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Yapılandırmayı değiştirdikten sonra betiğin yeniden başlatılması gerekir; Linux'ta her şey basit ve tanıdıktır:

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

Windows için pythonw işlemini sonlandırmanız ve betiği yeniden çalıştırmanız gerekecek (C# ile Windows için bir hizmet yazamayacak kadar tembelim):

taskkill /im pythonw.exe

Bu kurulum ve konfigürasyonu tamamlar, sağlıcakla kalın.

Pek de hoş olmayan Python kodunu görmek isteyenler için işte burada GitHub'daki depo.

MIT lisanslı, bu tür şeylerle ne yapacaksan onu yap.

Not: Biraz koltuk değneğine dönüştüğünü anlıyorum ama işini büyük bir gürültüyle yapıyor.

GÜNCELLEME: 11.10.2019/17/37 XNUMX:XNUMX
1 problem daha buldum ve birisi bana nasıl çözeceğimi söylerse çok minnettar olacağım.
Sorun şu ki, sudo python -m pip install -r ... olmadan bağımlılıklar kurarsanız, modüller hizmet kullanıcısı tarafından görülmeyecek ve kullanıcıları sudo altında modül yüklemeye zorlamak istemem ve bu da doğru değil.
Güzel görünmesi nasıl sağlanır?
GÜNCELLEME: 11.10.2019/19/16 XNUMX:XNUMX Sorun venv kullanılarak çözüldü.
Birkaç değişiklik oldu. Bir sonraki sürüm önümüzdeki birkaç gün içinde yayınlanacak.

Kaynak: habr.com

Yorum ekle