Π‘Π²ΠΎΠΉ dynamic DNS с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CloudFlare

ΠŸΡ€Π΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅

Π‘Π²ΠΎΠΉ dynamic DNS с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CloudFlare Для Π»ΠΈΡ‡Π½Ρ‹Ρ… Π½ΡƒΠΆΠ΄ Π΄ΠΎΠΌΠ° поднял VSphere, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΡ€ΡƒΡ‡Ρƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΈ Ubuntu сСрвСр Π² качСствС ΠΌΠ΅Π΄ΠΈΠ°-сСрвСра ΠΈ Π΅Ρ‰Π΅ ΠΊΡƒΡ‡ΠΈ всяких Π²ΠΊΡƒΡΠ½ΡΡˆΠ΅ΠΊ, ΠΈ этот сСрвСр Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ доступСн ΠΈΠ· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. Но ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ Π΄Π°Π΅Ρ‚ статику Π·Π° дСньги, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ всСгда ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я пользовался связкой ddclient + cloudflare.

ВсС Π±Ρ‹Π»ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΏΠΎΠΊΠ° ddclient Π½Π΅ пСрСстал Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. НСмного поковыряв Π΅Π³ΠΎ, я понял Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя костылСй ΠΈ вСлосипСдов, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° поиск ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ стало ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ слишком ΠΌΠ½ΠΎΠ³ΠΎ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ всС Π²Ρ‹Π»ΠΈΠ»ΠΎΡΡŒ Π² нСбольшой Π΄Π΅ΠΌΠΎΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ просто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π° ΠΌΠ½Π΅ большС ΠΈ Π½Π΅ Π½Π°Π΄ΠΎ.
ΠšΠΎΠΌΡƒ интСрСсно – Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ инструмСнты ΠΈ ΠΊΠ°ΠΊ «это» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

Π˜Ρ‚Π°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ я ΡƒΠ·Π½Π°Π» Π½Π° сайтС cloudflare, всС Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎΠ± API. И ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сСл Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ всС Π½Π° Python(послС знакомства с Python, я всС Ρ‡Π°Ρ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽ Π΅Π³ΠΎ для ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ простых Π·Π°Π΄Π°Ρ‡ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ быстро ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ), ΠΊΠ°ΠΊ Π²Π΄Ρ€ΡƒΠ³ наткнулся Π½Π° практичСски Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.
Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Π·Π° основу Π±Ρ‹Π» взят Π²Ρ€Π°ΠΏΠΏΠ΅Ρ€ python-cloudflare.

Взял ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² для обновлСния DNS ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ» использованиС Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ нСсколько A записСй Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π·ΠΎΠ½Ρ‹ ΠΈ СстСствСнно Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство Π·ΠΎΠ½.

Π›ΠΎΠ³ΠΈΠΊΠ° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:

  1. Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ список Π·ΠΎΠ½ ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ Π½ΠΈΠΌ Π² Ρ†ΠΈΠΊΠ»Π΅
  2. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·ΠΎΠ½Π΅ скрипт ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ DNS записи Ρ‚ΠΈΠΏΠ° А ΠΈΠ»ΠΈ АААА ΠΈ свСряСт Public 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, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°ΠΉΡ‚Π΅ с этим Π΄ΠΎΠ±Ρ€ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅.

P.S.: Понимаю, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡΡ‚Ρ‹Π»ΡŒΠ½ΠΎ, Π½ΠΎ со своСй Π·Π°Π΄Π°Ρ‡Π΅ΠΉ справляСтся Π½Π° ΡƒΡ€Π°.

UPD: 11.10.2019 17:37
НашСл Π΅Ρ‰Π΅ 1 ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΈ Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ подскаТСт ΠΊΠ°ΠΊ Π΅Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ β€” Π±ΡƒΠ΄Ρƒ ΠΎΡ‡Π΅Π½ΡŒ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½.
ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ зависимости Π±Π΅Π· sudo python -m pip install -r …, Ρ‚ΠΎ ΠΈΠ· ΠΏΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ сСрвиса ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄Π½Ρ‹, Π° ΠΌΠ½Π΅ Π±Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π·Π°ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΠΎΠ΄ sudo, Π΄Π° ΠΈ Π½Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ это.
Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ красиво?
UPD: 11.10.2019 19:16 ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½Π° использованиСм venv.
ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ нСсколько ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠžΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ€Π΅Π»ΠΈΠ· Π½Π° днях Π±ΡƒΠ΄Π΅Ρ‚.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com