Top.Mail.Ru

DNS

Использовать наш DNS как вторичный (OctoDNS)

Вторичный DNS — это резервный DNS, где хранится копия информации о зонах и записях. Исходные данные он получает с основного сервера.

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

Сначала убедитесь, что ваш провайдер есть в списке провайдеров, которые поддерживают OctoDNS. Если нет — передать записи автоматически нельзя и дальнейшая инструкция не поможет.

Инструкция поможет установить OctoDNS — инструмент для управления DNS-зонами разных провайдеров. С его помощью вы сделаете записи на нашем DNS-сервере идентичным записям на вашем. Ниже в схеме вы можете посмотреть, как это работает.

Использовать наш DNS как вторичный (OctoDNS)

1. Создайте в личном кабинете DNS-зону, для которой хотите изменить DNS-записи. Если зона уже создана, пропустите этот шаг. 

Использовать наш DNS как вторичный (OctoDNS)

2. На своём устройстве обновите локальный индекс пакетов, чтобы загрузить все новые версии.

sudo apt update

3. Установите пакеты python и virtualenv.

sudo apt install python virtualenv

4. Создайте необходимые каталоги для OctoDNS.

mkdir ~/octodns ~/octodns/config

5. Перейдите в ~/octodns.

cd ~/octodns

6. Создайте виртуальную среду python, включите её и во время работы с этой инструкцией оставайтесь в ней.

7. Если у вас нет утилиты Git, установите её с помощью команды:

sudo apt-get install git-all

8. В virtualenv установите pip-пакеты OctoDNS для двух провайдеров: EdgeCenter DNS и вашего. Чтобы сделать это, используйте команду ниже, заменив octodns_yourprovider на название вашего провайдера из столбца Module в таблице провайдеров

pip install octodns octodns_edgecenter octodns_yourprovider 

После установки запросите версию OctoDNS, чтобы удостовериться, что всё работает.

octodns-sync --version

Вы получите ответ с указанием версии вашей OctoDNS, например:

octoDNS 0.9.21

Если видите ошибку:

octodns-sync: command not found

скорее всего, вы находитесь не в virtualenv. Проделайте шаги № 4–6 ещё раз.

9. Перейдите в директорию config, которую создали в шаге № 4:

cd ~/octodns/config 

10. Создайте внутри неё конфигурационный файл.

nano config.yaml 

В этом конфигурационном файле нужно указать провайдеров и зоны, которыми будет управлять OctoDNS, а также зависимость между ними. Конечный файл будет выглядеть подобным образом:

Использовать наш DNS как вторичный (OctoDNS)

Разберём, как указать провайдера, зоны и зависимость.

Скопируйте код ниже и вставьте в конфигурационный файл (в формате .yaml отступы имеют большое значение — с нашим шаблоном вы точно введёте данные так, чтобы программа смогла их прочитать):

providers:
    [имя вашего провайдера]:
        [класс вашего провайдера]
        [данные для аутентификации, строчка №1]
        [данные для аутентификации, строчка №2]
        [данные для аутентификации, строчка №...]
    ec:
        class: octodns_edgecenter.EdgeCenterProvider
        [данные для аутентификации, строчка №1]
        [данные для аутентификации, строчка №2]
        [данные для аутентификации, строчка №...]
zones:
  [ваша зона DNS №1].:
    sources:
      - [имя вашего провайдера]
    targets:
      - ec
  [ваша зона DNS №2].:
    sources:
      - [имя вашего провайдера]
    targets:
      - ec

Заполните секции провайдеров. Шаблоны для них расположены в репозиториях провайдеров OctoDNS. 

Начнём заполнение с данных для провайдера EdgeCenter DNS. Чтобы открыть его репозиторий, перейдите к таблице провайдеров и кликните по octodns_edgecenter из столбца Module.

Использовать наш DNS как вторичный (OctoDNS)

Найдите раздел Configuration → EdgeCenterProvider. Там описаны имя провайдера, название класса провайдера и данные для аутентификации.

Использовать наш DNS как вторичный (OctoDNS)

Имя провайдера (ec) и название класса (class: octodns_edgecenter.EdgeCenterProvider) уже добавлены в шаблон. Заполните данные для аутентификации согласно разделу Configuration. Вы можете выбрать, какие аутентификационные данные использовать: API key или логин и пароль. API key — это API-ключ, который вы можете сгенерировать в личном кабинете. Логин и пароль — это те же логин и пароль, с которыми вы входите в наш личный кабинет.

Мы рекомендуем использовать аутентификацию через API key. Пример конфигурации с API key:

ec:
    class: octodns_edgecenter.EdgeCenterProvider
    token: TOKEN
    token_type: APIKey  

Пример конфигурации с логином и паролем:

ec:
    class: octodns_edgecenter.EdgeCenterProvider
    login: Yourlogin
    password: Yourpassword
    auth_url: https://api.edgecenter.ru/iam
    url: https://api.edgecenter.ru/dns/v2
    records_per_response: 1

В конфигурационном файле заполните секцию вашего провайдера по аналогии с провайдером EdgeCenter DNS: откройте репозиторий, найдите раздел Configuration, скопируйте и вставьте имя провайдера, название класса провайдера, затем заполните ваши данные для аутентификации. Например, если ваш провайдер — Selectel, результат заполнения будет выглядеть так:

  selectel:
      class: octodns_selectel.SelectelProvider
      token: TOKEN
  ec:
      class: octodns_edgecenter.EdgeCenterProvider
      token: TOKEN
      token_type: APIKey

Затем заполните в конфигурационном файле секцию DNS-зоны. Для каждой зоны введите её название и пару основного и вторичного провайдера.

Ваш провайдер выступает как источник (OctoDNS будет брать DNS-записи из базы данных основного провайдера), а провайдер EdgeCenter DNS — как вторичный/целевой DNS. Его записи будут отредактированы, чтобы соответствовать данным вашего провайдера).

Например, чтобы синхронизировать DNS-записи зоны mydnszone.com, нужно ввести следующие данные.

zones:
mydnszone.ru.:
    sources:
      - selectel
    targets:
      - ec

Использовать наш DNS как вторичный (OctoDNS)

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

processors:
no-root-ns:
class: octodns.processor.filter.IgnoreRootNsFilter

Фильтр проигнорирует NS-записи вашей зоны, а синхронизация будет успешной.

Пример конфигурационного файла:

processors:
no-root-ns:
class: octodns.processor.filter.IgnoreRootNsFilter
providers:
selectel:
    class: octodns_selectel.SelectelProvider
    token: TOKEN
ec:
    class: octodns_edgecenter.EdgeCenterProvider
    token: TOKEN
    token_type: APIKey
zones:
mydnszone.ru.:
    sources:
      - selectel
    processors:
      - no-root-ns
    targets:
      - ec

После занесения всех зон в файл сохраните изменения и закройте его.

11. Последний шаг — синхронизация DNS-записей. Для начала выполните тестовую команду ниже, она покажет, какие изменения OctoDNS должен внести при синхронизации.

octodns-sync --config-file=[директория вашего конфигурационного файла]

Например, если директория конфигурационного файла — /home/ubuntu/octodns/config/config.yaml, то команда будет такой:

octodns-sync --config-file=/home/ubuntu/octodns/config/config.yaml

Если конфигурационный файл заполнен без ошибок, вы получите вывод с подобной сводкой в конце.

Использовать наш DNS как вторичный (OctoDNS)

Здесь указано, какие изменения OctoDNS намеревается внести в записи нашего DNS. Если всё верно, дайте команду внести эти изменения:

octodns-sync --config-file=[директория вашего конфигурационного файла] --doit

Вы увидите подобный вывод.

Использовать наш DNS как вторичный (OctoDNS)

Он означает, что изменения внесены. Вы увидите обновлённый список записей в личном кабинете во вкладке DNS.

Инструкция ниже — для обновления записей вручную. Если вы хотите настроить автообновление записей, настройте автоматическое выполнение команд из этой инструкции через демон cron.

1. Перейдите в ~/octodns.

cd ~/octodns

2. Включите виртуальную среду python.

3. Нужные зоны вы уже занесли в конфигурационный файл в рамках инструкции «Синхронизировать записи вашего DNS с нашим DNS» выше. Чтобы синхронизировать DNS-записи, введите команду:

octodns-sync --config-file=[директория вашего конфигурационного файла] --doit

Вы увидите подобный вывод:

Использовать наш DNS как вторичный (OctoDNS)

Он означает, что изменения внесены. Вы можете увидеть обновлённый список записей в личном кабинете во вкладке DNS.

Мы используем cookie, чтобы сайт стал лучше для вас.