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. Суулгах скриптийг ажиллуулна уу
    Линуксийн хувьд:

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

    Windows-ийн хувьд: windows_install.bat

  5. Тохиргооны файлыг засварлана уу
    Линуксийн хувьд:

    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

Тохиргоог өөрчилсний дараа скриптийг дахин эхлүүлэх шаардлагатай; Линукс дээр бүх зүйл энгийн бөгөөд мэддэг:

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 лицензтэй, тиймээс та хүссэн зүйлээ хий.

Жич: Жаахан суга таяг шиг болсон гэж ойлгож байгаа, гэхдээ чих тавин ажлаа хийдэг.

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 ашиглан шийдсэн.
Хэд хэдэн өөрчлөлт гарсан. Дараагийн хувилбар нь ойрын хэдэн өдөр гарах болно.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх