Перейти к основному содержанию

OctoDNS — и бесплатный DNS хостинг

DNS

Сегодня у нас продолжение статьи про octoDNS, начатой ранее:

OctoDNS — DNS как код

DNS (Domain Name System) — компьютерная распределённая система для получения информации о доменах. Чаще всего используется для получения IP-адреса по имени хоста, получения информации о маршрутизации почты и/или обслуживающих узлах для протоколов в домене.

Сегодня я загружу DNS зону в DNS хостинг посредством octoDNS, и по ходу действий буду писать эту инструкцию. Зону я взял у bind9 сервера.

Небольшое отступление про бесплатные DNS хостинги

Многие хостинги предоставляют DNS сервер бесплатно при размещении у них домена. Однако, у нас речь именно про DNS хостинг.

1cloud.ru

https://1cloud.ru/services/dns

Вам не всегда требуется использовать octoDNS для того чтобы загружать DNS зоны в свой DNS хостинг. Если у вас небольшая DNS зона с несколькими записями, то иногда проще вручную создать их через web-интерфейс хостинга.

К примеру, у 1cloud.ru имеется бесплатный DNS хостинг. Мой домен живёт там.

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

Для клиентов 1cloud аренда DNS-сервера в нашем облаке абсолютно бесплатна. Для этого не нужно подключать наши коммерческие услуги, такие как аренда выделенного сервера. Достаточно просто зарегистрироваться в нашей Панели и делегировать ваш домен на наши DNS-серверы.

Помимо web-интерфейса сервис может выкачать записи вашей зоны, если ваш DNS сервер уже где-то хостится. Вы можете быстро и без финансовых превозмогающих усилий развернуть свои небольшие DNS зоны.

Однако, у каждое бесплатной морковки имеются минусы. При попытке указать достаточно большую DNS зону я словил ошибку, которая гласила, что сервис может выкачать не более 50 записей зоны. А ручками вносить не менее 50 записей DNS зоны как-то не хочется. Какой-то автоматизации в работе с зонами DNS я там не нашёл.

Так что если у вас большие DNS зоны или требуется автоматизация через API или octoDNS — это в другие DNS хостинги.

cloudflare.com

В аккаунте с бесплатным тарифом доступен DNS хостинг. Это, наверное, сервис вне конкуренции за единственным моментом, который может сыграть роль при вашем выборе, он находится не в РФ.

А так его вполне можно использовать для личных или любительских проектов, не являющихся критически важными для бизнеса. К примеру, я его использую как DNS для моих домашних сервисов.

Nginx Proxy Manager — настраиваем SSL для всех сайтов домашней лаборатории

И выкачивать ваши доменные записи сервис умеет. И octoDNS. И защита имеется. Про ограничения ничего в документации не нашёл. Сам с большими зонами там работать не пробовал.

selectel.ru

https://selectel.ru/services/additional/dns/

Давайте будем честными и назовём DNS хостинг от Selectel не совсем бесплатным. Дело в том, что:

DNS-хостинг предоставляется бесплатно в дополнение к другим платным продуктам или услугам. Перед началом использования DNS вам необходимо пополнить баланс

А если закопаться в документацию, то можно узнать и сумму пополнения:

Сервис предоставляется бесплатно в дополнение к другим платным продуктам или услугам. Чтобы получить доступ к сервису, завершите регистрацию и пополните баланс на минимальную сумму 100 ₽.

Да-да, я пополнил баланс на 100 рублей и DNS хостинг активировался. Теперь к минусам:

  • Выкачивать ваши доменные записи сервис самостоятельно не умеет.
  • DNS Selectel нельзя использовать в качестве вторичного DNS.
  • А я добавлю что и в качестве только авторитетного DNS его нельзя использовать, вы не сможете изменить рутовые NS записи и задать какой-то сторонний вторичный DNS, если это вам понадобится.

Плюсы:

  • Можно добавлять записи через Web.
  • Не ограничено количество доменных зон, а также количество ресурсных записей в зоне.
  • Серверы защищены межсетевым экраном от DDoS-атак.
  • В сервисе работают четыре авторитетных NS-сервера.
  • API, Terraform, octoDNS, ExternalDNS для Kubernetes.

Выгрузка DNS на DNS хостинг через octoDNS

Давайте проверим, получится ли выгрузить большую DNS зону с помощью octoDNS на хостинг. Было бы интересно и с cloudflare попробовать, но сегодня поработаем именно с Selectel. Зря я что ли деньги платил?

Задача простая. Имеется файл зоны из bind9, нужно загрузить его на DNS хостинг.

Установка octoDNS

Установить octoDNS:

sudo apt-get update
sudo apt-get install python3 virtualenv
sudo apt-get install python3-pip

Создать директорию для работы с octoDNS с папками config и zones:

mkdir -p ~/octodns/{config,zones}
cd ~/octodns

Создать виртуальную среду для работы с octoDNS:

virtualenv env
source env/bin/activate

Установить octoDNS в виртуальную среду:

pip3 install octodns

Установить Selectel-провайдер для octoDNS:

pip3 install octodns_selectel

Проверить, что Selectel-провайдер установился корректно:

pip3 list | grep octodns-selectel

Работа с файлом зоны

Скачать файл зоны в директорию ~/octodns/zones. Перейти в директорию ~/octodns/zones:

cd ~/octodns/zones

Создать файл конфигурации import_config.yaml:

---
processors:
 no-root-ns:
   class: octodns.processor.filter.IgnoreRootNsFilter
providers:
   selectel:
       class: octodns_selectel.SelectelProvider
       token: <x_auth_token>
   zonefile:
       class: octodns_bind.ZoneFileSource
       directory: ./zones
       check_origin: false
zones:
   <example.com>.:
       sources:
       - zonefile
       processors:
       - no-root-ns
       targets:
       - selectel
  • <x_auth_token> — IAM-токен для проекта, в который нужно перенести данные
  • <example.com> — имя домена (зоны), которую нужно перенести

IAM-токен получить не так просто. Для начала нужно создать сервисную учётную запись с правами вносить изменения в проект.

https://docs.selectel.ru/access-control/user-types/#service-users

После этого можно получить IAM-токен для проекта, он действует 24 часа:

https://docs.selectel.ru/api/authorization/#get-iam-token-project-scoped

Выполните запрос:

curl -i -XPOST \
-H 'Content-Type: application/json' \
-d '{"auth":{"identity":{"methods":["password"],"password":{"user":{"name":"<username>","domain":{"name":"<account_id>"},"password":"<password>"}}},"scope":{"project":{"name":"<project_name>","domain":{"name":"<account_id>"}}}}}' \
'https://cloud.api.selcloud.ru/identity/v3/auth/tokens'
  • <username> — имя сервисного пользователя. Посмотреть имя можно в панели управления: в верхнем меню нажмите Аккаунт и перейдите в раздел Пользователи → вкладка Сервисные пользователи (раздел доступен только Владельцу аккаунта и Администратору пользователей)
  • <account_id> — номер аккаунта панели управления. Можно посмотреть в панели управления в правом верхнем углу (в запросе встречается два раза)
  • <password> — пароль сервисного пользователя, можно посмотреть при создании пользователя или изменить на новый
  • <project_name> — имя проекта

При успешной авторизации вернется ответ с кодом 201 Created в формате:

HTTP/2 201
X-Subject-Token: token

В заголовке X-Subject-Token находится токен.

Заполнили import_config.yaml, идём дальше.

Перейти в директорию ~/octodns:

cd ~/octodns

Запустить импорт:

octodns-sync --config-file=./config/import_config.yaml --doit

Сначала зона у меня не импортировалась. У сервисного пользователя не хватило прав, пришлось расширить ему права.

После этого большая зона импортировалась только частично. Я тестировать не реально большой зоне. После нескольких запусков импорта догрузились оставшиеся DNS записи.

Естественно, NS записи при импорте были заменены на NS серверы Selectel.

Заключение

Мы с вами выгрузили DNS зону с помощью octoDNS и познакомились с некоторыми бесплатными или почти бесплатными DNS хостингами. Если знаете ещё достойных кандидатов, накидывайте в комментариях. А мы прощаемся с вами, нам еще жалеть о потраченный 100 рублях.

P.S.

И не успел я ещё опубликовать статью, как мне позвонил менеджер Selectel и сказал, что DNS хостинг у них после Нового Года станет платным. Бесплатный тариф тоже останется, но непонятно с какими ограничениями. Вот такой вот пердимонокль...

Теги

 

Похожие материалы