CloudFlare аркылуу өз динамикалык DNS

сөздөр

CloudFlare аркылуу өз динамикалык DNS Үйдөгү жеке муктаждыктар үчүн мен VSphere орноттум, анда мен виртуалдык роутерди жана Ubuntu серверин медиа сервер жана башка көптөгөн жакшы нерселер катары иштетем жана бул сервер Интернеттен жеткиликтүү болушу керек. Бирок көйгөй менин провайдерим акча үчүн статикалык маалыматтарды берет, аны ар дайым пайдалуу максаттар үчүн колдонсо болот. Ошондуктан, мен ddclient + cloudflare айкалышын колдондум.

ddclient иштебей калганга чейин баары жакшы болчу. Бир аз тыкылдагандан кийин мен балдак менен велосипеддин убагы келгенин түшүндүм, анткени көйгөйдү табуу өтө көп убакытты талап кылат. Акыр-аягы, баары жөн эле иштеген кичинекей демонго айланып, мага башка эч нерсе керек эмес.
Ким кызыктырса, кош келиңиз.

Колдонулган куралдар жана "ал" кантип иштейт

Ошентип, мен cloudflare веб-сайтынан биринчи билдим - бул сиз билишиңиз керек болгон нерселердин баары API. Анан мен Pythonдо бардыгын ишке ашыруу үчүн отургам (Python менен таанышкандан кийин, мен аны жөнөкөй тапшырмалар үчүн же тез прототип жасоо керек болгондо көбүрөөк колдоно баштадым), күтүлбөгөн жерден дээрлик даяр ишке ашырууга туш болуп калдым.
Жалпысынан алганда, орогуч негиз катары алынган python-cloudflare.

Мен DNSти жаңыртуу үчүн мисалдардын бирин алып, конфигурация файлын колдонууну жана зонанын ичиндеги бир нече А жазууларын жана, албетте, чексиз сандагы зоналарды жаңыртуу мүмкүнчүлүгүн коштум.

Логика төмөнкүчө:

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

taskkill /im pythonw.exe

Бул орнотууну жана конфигурацияны аяктайт, ден соолугуңуз үчүн ырахат алыңыз.

Анчалык сулуу эмес Python кодун көрүүнү каалагандар үчүн бул жерде GitHubдагы репозиторий.

MIT лицензиясы бар, ошондуктан бул нерсе менен каалаганыңызды жасаңыз.

PS: Мен түшүнөм, бул бир аз балдак болуп чыкты, бирок ал өз милдетин так аткарат.

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

Source: www.habr.com

Комментарий кошуу