CloudFlare көмегімен өзіңіздің динамикалық DNS

Алғы сөз

CloudFlare көмегімен өзіңіздің динамикалық DNS Үйдегі жеке қажеттіліктер үшін мен VSphere орнаттым, онда мен виртуалды маршрутизаторды және Ubuntu серверін медиа сервер және басқа да көптеген жақсы нәрселер ретінде іске қосамын және бұл сервер Интернеттен қол жетімді болуы керек. Бірақ мәселе мынада, менің провайдерім әрқашан пайдалырақ мақсаттар үшін пайдаланылуы мүмкін ақша үшін статикалық деректерді береді. Сондықтан мен ddclient + cloudflare комбинациясын қолдандым.

ddclient жұмысын тоқтатқанша бәрі жақсы болды. Біраз үңіле отырып, мен балдақ пен велосипедтің уақыты келгенін түсіндім, өйткені мәселені табу үшін тым көп уақыт қажет. Соңында бәрі жай ғана жұмыс істейтін кішкентай демонға айналды, маған басқа ештеңе керек емес.
Егер біреу қызығушылық танытса, мысыққа қош келдіңіз.

Қолданылатын құралдар және «ол» қалай жұмыс істейді

Сонымен, мен cloudflare веб-сайтында бірінші рет білу керек нәрсенің барлығын білдім API. Мен Python-да барлығын жүзеге асыруға отырдым (Python-мен танысқаннан кейін мен оны қарапайым тапсырмалар үшін немесе прототипті тез жасау қажет болғанда жиі қолдана бастадым), кенеттен дайын іс жүзінде іске асыруға тап болдым.
Жалпы алғанда, орауыш негіз ретінде алынды python-cloudflare.

Мен DNS-ті жаңарту мысалдарының бірін алдым және конфигурация файлын пайдалануды және аймақтағы бірнеше A жазбаларын және, әрине, аймақтардың шексіз санын жаңарту мүмкіндігін қостым.

Логика келесідей:

  1. Сценарий конфигурация файлынан аймақтардың тізімін алады және олар арқылы айналдырады
  2. Әрбір аймақта сценарий A немесе AAAA түріндегі әрбір DNS жазбасы арқылы айналым жасайды және жазбамен жалпыға қолжетімді IP мекенжайын тексереді.
  3. Егер IP басқа болса, ол оны өзгертеді, егер жоқ болса, ол цикл итерациясын өткізіп жібереді және келесіге өтеді.
  4. Конфигурацияда көрсетілген уақыт ішінде ұйықтайды

Орнату және конфигурация

.deb пакетін жасауға болатын шығар, бірақ мен мұны жақсы білмеймін және бәрі де қиын емес.
Мен процесті README.md сайтында егжей-тегжейлі сипаттадым репозиторий беті.

Дегенмен, мен оны орыс тілінде жалпы түрде сипаттаймын:

  1. Сізде python3 және python3-pip орнатылғанына көз жеткізіңіз, егер жоқ болса, оны орнатыңыз (Windows жүйесінде python3-pip Python бағдарламасымен бірге орнатылған)
  2. Репозиторийді клондау немесе жүктеп алу
  3. Қажетті тәуелділіктерді орнатыңыз.
    python3 -m pip install -r requirements.txt

  4. Орнату сценарийін іске қосыңыз
    Linux үшін:

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

    Windows үшін: windows_install.bat

  5. Конфигурация файлын өңдеңіз
    Linux үшін:

    sudoedit /etc/zen-cf-ddns.conf

    Windows үшін:

    Сценарий орнатылған қалтада zen-cf-ddns.conf файлын ашыңыз.

    Бұл кәдімгі JSON файлы, параметрлер күрделі емес - мен мысал ретінде ондағы 2 түрлі аймақты сипаттадым.

Орнатушылардың артында не тұр?

Linux үшін install.sh:

  1. Пайдаланушы демонды іске қосу үшін үй каталогын жасамай және кіру мүмкіндігінсіз жасалған.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Журнал файлы /var/log/ ішінде жасалады.
  3. Жаңадан жасалған пайдаланушыны журнал файлының иесі етіңіз
  4. Файлдар өз орындарына көшіріледі (/etc ішіндегі конфигурация, /usr/bin ішіндегі орындалатын файл, /lib/systemd/system ішіндегі қызметтік файл)
  5. Қызмет іске қосылды

Windows жүйесіне арналған windows_install.bat:

  1. Орындалатын және конфигурация файлын пайдаланушы көрсеткен қалтаға көшіреді
  2. Жүйені іске қосу кезінде сценарийді іске қосу үшін жоспарлаушыда тапсырма жасайды
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Конфигурацияны өзгерткеннен кейін сценарийді қайта іске қосу керек, Linux жүйесінде бәрі қарапайым және таныс:

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 үшін pythonw процесін жойып, сценарийді қайта іске қосу керек болады (мен C# тілінде Windows үшін қызметті жазуға тым жалқаумын):

taskkill /im pythonw.exe

Бұл орнату мен конфигурацияны аяқтайды, оны денсаулығыңыз үшін пайдаланыңыз.

Әдемі емес Python кодын көргісі келетіндер үшін міне GitHub репозиторийі.

MIT лицензиясы бар, сондықтан бұл заттармен қалағаныңызды жасаңыз.

PS: Түсінемін, бұл аздап балдақ болып шықты, бірақ ол өз жұмысын соққымен жасайды.

UPD: 11.10.2019 17:37
Мен тағы 1 мәселені таптым, егер біреу оны қалай шешуге болатынын айтса, мен өте ризамын.
Мәселе мынада, егер сіз тәуелділіктерді sudo python -m pip install -r ...сіз орнатсаңыз, онда модульдер қызмет пайдаланушысынан көрінбейді және мен пайдаланушыларды sudo астында модульдерді орнатуға мәжбүрлегім келмейді, және бұл дұрыс емес.
Оны қалай әдемі етіп көрсетуге болады?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Мәселе venv көмегімен шешілді.
Бірнеше өзгерістер болды. Келесі шығарылым алдағы бірнеше күнде болады.

Ақпарат көзі: www.habr.com

пікір қалдыру