Используйте Cloudflare в качестве динамического DNS с Raspberry Pi — Chrome World по-русски

Используйте Cloudflare в качестве динамического DNS с Raspberry Pi

Сначала я думал, что буду продолжать использовать бесплатные сервисы динамического DNS, такие как DynDNS, FreeDNS by fear.org или No-IP. Если какой-либо из них звонит в колокол, вы находитесь в правильном месте. Общим для этих сервисов является то, что они дают вам бесплатный поддомен и позволяют обновлять IP-адреса, на которые он должен указывать. Они позволяют доступ к вашей домашней сети, не зная ваш текущий IP. Возможно, вы захотите автоматически обновлять записи, потому что у вас есть динамический IP-адрес, который меняется каждый день. Но как только вы воспользуетесь утилитами или сценариями для автоматизации обновления IP-адреса, они начнут каждый месяц вас раздражать электронной почтой. Вы должны войти в систему иногда, чтобы эти службы работали (бесплатно). Я устал от этого ворчания, только чтобы обнаружить, что Cloudflare имеет API, Это породило идею о том, что возможно использовать Cloudflare в качестве динамического DNS.

API означает, что машины и сторонние приложения могут редактировать записи DNS без ручного вмешательства. Оказывается; отличное обслуживание без не нужных оповещений скрывалось на виду. В любом случае, мы широко используем Cloudflare на всех сайтах, на которых работаем. Так почему бы не выбрать что-то вроде home.example.com и постоянно указывать на мой домашний сервер? С Cloudflare в качестве динамического DNS это наконец возможно, и я собираюсь научить вас, как это делать.

Предпосылки

Я собираюсь предположить, что у вас есть все для начала работы (отсюда и расширенный ярлык):

  • Владеть и управлять доменом на Cloudflare
  • Есть домашний сервер под управлением Linux. В этом примере используется Raspberry Pi 3 Model B + под управлением Raspbian Stretch с рабочим столом.

Почему Малина? Просто потому, что это недорогой способ освоить домашний сервер и изучить Linux. Это точная причина, почему я купил его.

Какие службы вы размещаете на сервере, как вы переадресовываете порты на них, не рассматриваются в этой статье. Они могут быть чем угодно. Кстати, статический локальный IP-адрес не помешает, но в Raspbian вы можете сделать это в графическом интерфейсе.

Создание записи A для вашего домашнего сервера

Придумайте поддомен. Это часть адреса, по которой вы достигнете своего домашнего сервера. В конце концов, это будет хост для вашего сайта разработки WordPress.

  1. Перейдите в Cloudflare Dashboard Home, когда вы вошли в систему
  2. Выберите свой домен и перейдите на его вкладку DNS
  3. Запись «А» по умолчанию для добавления, так введите желаемое имя субдомена , как homeк названию
  4. В качестве адреса IPv4 введите 0.0.0.0(не ваш реальный IP, чтобы позже можно было проверить, работает ли скрипт)

Используйте Cloudflare в качестве динамического DNS с Raspberry Pi

Используйте Cloudflare в качестве динамического DNS с Raspberry Pi

Получение необходимого ключа от Cloudflare

Есть ключ (похожий на случайные символы), который нам нужен от Cloudflare. Это гарантирует, что у вас есть права на обновление выбранного домена.

Глобальный ключ API

  1. Войдите в Cloudflare и перейдите в свой профиль
  2. Прокрутите вниз и просмотрите свой глобальный ключ API
  3. Завершите проверку пароля и запишите свой ключ

Настройка файла на Raspberry Pi

Сначала мы создадим папку для скрипта и необходимые ему файлы. Откройте терминал и запустите это:


mkdir cf

Это создаст папку с именем cf в вашем домашнем каталоге. Для следующего шага вы можете использовать простой текстовый редактор. Если вы собираетесь редактировать некоторый исходный код на Raspberry Pi, возможно, вам не хватает Sublime Text. Это не доступно, но другой подобный редактор под названием Geany, безусловно, поможет. Для этого шага не нужно просто рекомендовать. Итак, необязательная команда:

sudo apt-get install geany

Создайте новый файл с именем lwp-cloudflare-dyndns.sh и поместите его в созданную вами папку. Суть включает в себя полный сценарий. Вам необходимо изменить следующую часть с реальными значениями:

auth_email="email@example.com"
auth_key="global_api_key_goes_here"
zone_name="example.com"
record_name="home.example.com"

Для электронной почты используйте адрес, с которым вы входите в Cloudflare. Ключом аутентификации является Глобальный ключ API, который вы указали выше. Сохраните, а затем измените разрешения для этого файла на исполняемый:

chmod +x cf/lwp-cloudflare-dyndns.sh

Вы можете запустить его сейчас. Если все в порядке, вы должны увидеть три новых файла. Cloudflare.ids файл должен иметь две строки в нем. Если это не так, прочтите дополнительную часть в конце этой статьи.

Настройка задания cron для использования Cloudflare в качестве динамического DNS

На данный момент вы можете вручную запустить файл, и вы должны увидеть правильный IP-адрес в Cloudflare. Осталось только автоматизировать это. Откройте терминал и выполните эту команду:

Если он предлагает вам выбрать редактор, выберите тот, который говорит Nano (самый простой), по его номеру, а затем нажмите Enter. Обратите внимание, что эта инструкция для Nano. Прокрутите вниз и добавьте это как новую строку без знака # в начале строки:

0 */6 * * * /bin/bash /home/pi/cf/lwp-cloudflare-dyndns.sh

К вашему сведению, Ctrl+ Shift+ V это вставить. Если вам интересно, что это за звезды, тогда crontab.guru может помочь. Я настроил его запускать каждые 6 часов. Даже если ваш IP-адрес меняется только каждые несколько месяцев, эти шесть часов – самое длительное время, которое вы можете провести без обновления нового IP-адреса, отправленного в Cloudflare. Если это неприемлемо, не стесняйтесь увеличивать частоту. Например, это обновляется каждую минуту, поэтому вы можете по крайней мере проверить его, посмотрев файл cloudflare.log.

*/1 * * * * /bin/bash /home/pi/cf/lwp-cloudflare-dyndns.sh

Чтобы выйти из этого редактора, нажмите Ctrl+ X, затем нажмите, Y чтобы сказать Да, чтобы сохранить изменения. Это может подсказать вам в другой раз, указав, где сохранить; просто нажмите Enter. Изменения действительны и неизбежны, но если вы не доверяете системе, вы можете перезагрузить службу, но это не обязательно:


sudo service cron reload

Начиная с этого момента, задание cron будет работать в заданном виде. Это будет работать до тех пор, пока вы не удалите свой домен из системы или если API не изменится. На этом завершается настройка Cloudflare в качестве динамического DNS, но если у вас возникнут какие-либо проблемы, не забудьте спросить. Остальная часть статьи помогает, если скрипт не может получить вашу зону и записать идентификаторы. Было время, когда мне нужно было достать их вручную.

Остальное необязательно! Вручную получить идентификаторы из Cloudflare

Если скрипт выдает ошибку и не может заполнить файл cloudflare.ids автоматически; Вы должны сделать свою задачу вручную.

Определить область

Этот идентификатор уникален для каждого домена и представляет собой один из них. Следующее будет использоваться и для идентификатора записи.

  1. Перейдите в Cloudflare Dashboard Home, когда вы вошли в систему
  2. Выберите свой домен и перейдите на его вкладку DNS
  3. Открытые инструменты для разработчиков с F12 и перейдите на вкладку Сеть и выберите XHR подвкладку
  4. Нажмите значок облака в строке с вашим поддоменом.
  5. Щелкните правой кнопкой мыши по появившейся строке и выберите « Копировать» > « Копировать адрес ссылки» (Chrome) или « Копировать URL-адрес» (Firefox).
  6. Обратите внимание на идентификатор зоны, который вы найдете после zones/части.

Ссылка будет выглядеть так:


https://dash.cloudflare.com/api/v4/zones/zone_id/dns_records/record_id

Идентификатор записи

Он идентифицирует отдельные записи. Крайне важно получить идентификатор для правильной записи (нажмите на правильное облако). К счастью, шаги аналогичны приведенным выше, но используйте последнюю часть по ссылке.

Как только у вас есть оба идентификатора

  • Убедитесь, что облако серое. Это отключит службы кэширования и позволит вам использовать Cloudflare только в качестве динамического DNS.
  • В файл cloudflare.ids добавьте зону, указанную в первой строке, и идентификатор записи во второй строке.