Ваш сопствени динамички ДНС користећи ЦлоудФларе

Предговор

Ваш сопствени динамички ДНС користећи ЦлоудФларе За личне потребе код куће сам инсталирао ВСпхере на коме покрећем виртуелни рутер и Убунту сервер као медијски сервер и гомилу других доброта, а овом серверу треба да се приступи са интернета. Али проблем је што мој провајдер даје статичне податке за новац, који се увек могу користити у корисније сврхе. Стога сам користио комбинацију ддцлиент + цлоудфларе.

Све је било у реду док ддцлиент није престао да ради. Након што сам мало чачкао, схватио сам да је дошло време за штаке и бицикле, јер је требало превише времена да се пронађе проблем. На крају се све претворило у мали демон који само ради, и не треба ми ништа друго.
Ако је неко заинтересован, добродошао у мачку.

Коришћени алати и како „то“ функционише

Дакле, прва ствар коју сам сазнао на веб локацији цлоудфларе је све о чему треба да знате АПИ за. И већ сам сео да имплементирам све у Пајтону (након упознавања са Пајтоном, све чешће га користим за неке једноставне задатке или када треба брзо да направим прототип), када сам одједном наишао на скоро готову имплементацију.
Генерално, омот је узет као основа питхон-цлоудфларе.

Узео сам један од примера за ажурирање ДНС-а и додао коришћење конфигурационог фајла и могућност ажурирања неколико А записа унутар зоне и, наравно, неограничен број зона.

Логика је следећа:

  1. Скрипта прима листу зона из конфигурационе датотеке и пролази кроз њих
  2. У свакој зони, скрипта пролази кроз сваки ДНС запис типа А или АААА и проверава јавни ИП са записом
  3. Ако је ИП другачији, мења га; ако није, прескаче итерацију петље и прелази на следећу.
  4. Заспи на време наведено у конфигурацији

Инсталација и конфигурација

Вероватно би било могуће направити .деб пакет, али ја нисам добар у овоме и није све тако тешко.
Процес сам описао веома детаљно у РЕАДМЕ.мд на страница репозиторијума.

Али за сваки случај, описаћу га на руском уопштено:

  1. Уверите се да имате инсталиране питхон3 и питхон3-пип, ако не, инсталирајте их (на Виндовс-у, питхон3-пип је инсталиран заједно са Питхон-ом)
  2. Клонирајте или преузмите спремиште
  3. Инсталирајте потребне зависности.
    python3 -m pip install -r requirements.txt

  4. Покрените инсталациону скрипту
    За Линук:

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

    За Виндовс: виндовс_инсталл.бат

  5. Уредите конфигурациону датотеку
    За Линук:

    sudoedit /etc/zen-cf-ddns.conf

    За Виндовс:

    Отворите датотеку зен-цф-дднс.цонф у фасцикли у коју сте инсталирали скрипту.

    Ово је обична ЈСОН датотека, подешавања нису ништа компликована - посебно сам описао 2 различите зоне у њој као пример.

Шта се крије иза инсталатера?

инсталл.сх за Линук:

  1. Корисник је креиран да покреће демон, без креирања кућног директоријума и без могућности да се пријави.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Датотека евиденције је креирана у /вар/лог/
  3. Поставите новокреираног корисника за власника датотеке евиденције
  4. Датотеке се копирају на своја места (конфигурација у /етц, извршна датотека у /уср/бин, сервисна датотека у /либ/системд/систем)
  5. Услуга је активирана

виндовс_инсталл.бат за Виндовс:

  1. Копира извршну и конфигурациону датотеку у фасциклу коју је одредио корисник
  2. Креира задатак у планеру за покретање скрипте при покретању система
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

Након промене конфигурације, скрипту треба поново покренути; у Линуку је све једноставно и познато:

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

за Виндовс ћете морати да убијете питхонв процес и поново покренете скрипту (превише сам лењ да напишем услугу за Виндовс у Ц#):

taskkill /im pythonw.exe

Ово завршава инсталацију и конфигурацију, уживајте у своје здравље.

За оне који желе да виде не баш леп Питхон код, ево га спремиште на ГитХуб-у.

МИТ лиценциран, па радите са овим стварима шта желите.

ПС: Разумем да се испоставило да је мало штака, али ради свој посао са праском.

УПД: 11.10.2019 17:37
Нашао сам још 1 проблем и ако ми неко каже како да га решим, бићу веома захвалан.
Проблем је у томе што ако инсталирате зависности без судо питхон -м пип инсталл -р ..., онда модули неће бити видљиви од корисника услуге и не бих желео да присиљавам кориснике да инсталирају модуле под судо, а ово је неисправно.
Како да изгледа лепо?
УПД: 11.10.2019/19/16 XNUMX:XNUMX Проблем је решен коришћењем венв.
Било је неколико промена. Следеће издање биће у наредних неколико дана.

Извор: ввв.хабр.цом

Додај коментар