DNS-и динамикии худ бо истифода аз CloudFlare

Пешгуфтор

DNS-и динамикии худ бо истифода аз CloudFlare Барои эҳтиёҷоти шахсӣ дар хона ман VSphere-ро насб кардам, ки дар он роутери маҷозӣ ва сервери Ubuntu-ро ҳамчун сервери медиа ва як қатор чизҳои дигар идора мекунам ва ин сервер бояд аз Интернет дастрас бошад. Аммо мушкилот дар он аст, ки провайдери ман маълумоти статикиро барои пул медиҳад, ки ҳамеша метавонад барои мақсадҳои муфидтар истифода шавад. Аз ин рӯ, ман комбинатсияи ddclient + cloudflare -ро истифода кардам.

Ҳама чиз хуб буд, то даме ки ddclient корашро қатъ кард. Пас аз каме ғамхорӣ кардан, ман фаҳмидам, ки вақти асобагону велосипедҳо расидааст, зеро барои ёфтани мушкилот вақти зиёд лозим буд. Дар ниҳоят, ҳама чиз ба як демони хурде табдил ёфт, ки танҳо кор мекунад ва ба ман чизи дигаре лозим нест.
Агар касе таваҷҷӯҳ дошта бошад, ба гурба хуш омадед.

Асбобҳои истифодашуда ва чӣ гуна "он" кор мекунанд

Ҳамин тавр, аввалин чизе, ки ман дар вебсайти cloudflare фаҳмидам, ҳама чизест, ки шумо дар бораи он бояд донед API. Ва ман аллакай нишаста будам, ки ҳама чизро дар Python амалӣ созам (пас аз шинос шудан бо Python, ман онро бештар барои баъзе вазифаҳои оддӣ истифода мебарам ё вақте ки ба зудӣ прототип сохтан лозим аст), вақте ки ман ногаҳон бо татбиқи қариб тайёр дучор омадам.
Умуман, парпеч асоси асос гирифта шудааст python-cloudflare.

Ман яке аз мисолҳоро барои навсозии DNS гирифтам ва истифодаи файли конфигуратсия ва қобилияти навсозии якчанд сабтҳои A дар дохили минтақа ва албатта шумораи номаҳдуди минтақаҳоро илова кардам.

Мантиқ чунин аст:

  1. Скрипт рӯйхати минтақаҳоро аз файли конфигуратсия қабул мекунад ва тавассути онҳо давр мезанад
  2. Дар ҳар як минтақа, скрипт тавассути ҳар як сабти DNS навъи A ё AAAA давр мезанад ва 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 минтақаи гуногунро дар он ҳамчун намуна тавсиф кардам.

Дар паси монтажчиён чй меистад?

install.sh барои Linux:

  1. Истифодабаранда барои идора кардани демон, бидуни эҷоди феҳристи хонагӣ ва бидуни қобилияти ворид шудан офарида шудааст.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. Файли сабт дар /var/log/ сохта мешавад
  3. Корбари навтаъсисро соҳиби файли журнал гардонед
  4. Файлҳо ба ҷойҳои худ нусхабардорӣ карда мешаванд (конфигуратсия дар /etc, файли иҷрошаванда дар /usr/bin, файли хидматӣ дар /lib/systemd/system)
  5. Хизматрасонӣ фаъол аст

windows_install.bat барои Windows:

  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
Ман боз 1 мушкили дигар ёфтам ва агар касе ба ман гӯяд, ки чӣ тавр онро ҳал кунам, ман хеле миннатдор хоҳам буд.
Мушкилот дар он аст, ки агар шумо вобастагиҳоро бе sudo python -m pip install -r ... насб кунед, он гоҳ модулҳо аз ҷониби корбари хидмат намоён намешаванд ва ман намехоҳам корбаронро маҷбур созам, ки модулҳоро дар зери sudo насб кунанд ва ин дуруст нест.
Чӣ тавр онро зебо кардан мумкин аст?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Мушкилот бо истифода аз venv ҳал карда шуд.
Якчанд дигаргуниҳо ба амал омаданд. Нашри навбатӣ дар чанд рӯзи оянда хоҳад буд.

Манбаъ: will.com

Илова Эзоҳ