Импорт файла зоны

Как импортировать ваш файл зоны с готовыми DNS-записями через UI или API.

У вас уже должна быть создана основная зона — в неё будут добавлены записи при импорте. Также записи можно добавить вручную.

1. Прочитайте об особенностях импорта.

Требования к файлу

  • Формат BIND

  • Расширение .txt либо .bind

  • Размер до 1 Мб

Ограничения

Импортируются только записи A, AAAA, CAA, CNAME, MX, NS, SRV, SOA и TXT. Все остальные будут проигнорированы.

Дубликаты тоже игнорируются. Дубликатом считается запись, у которой совпадают тип и значение с уже существующей.

Перед импортом система проверяет, позволяет ли ваш лимит аккаунта на число записей добавить все выбранные записи. Если лимита не хватает, система выдаст ошибку и импорт не начнётся.

Чтобы увеличить лимит аккаунта на число записей, напишите в техподдержку support@servicepipe.ru.

Как будут добавлены записи

Наборы записей

В нашей системе записи одного типа, которые относятся к одному и тому же домену/поддомену (пример: несколько A-записей для домена example.com), автоматически объединяются в набор. Если нужный набор уже есть, импортированные записи добавятся к нему. Если нет — автоматически создастся новый. Подробнее о наборах записей.

TTL

У набора записей обновится TTL, если при импорте туда добавится хотя бы одна запись. Новое значение будет равно самому маленькому TTL среди импортируемых записей.

Пример: у набора уже стоял TTL 60. Вы импортировали в набор три записи со значениями TTL 300, 3600 и 86400. Новый TTL набора — 300.

Балансировка

Если при импорте запись добавится в набор, у которого была включена расширенная балансировка, то для записи автоматически будет назначено стандартное значение:

  • Для балансировки по весам: Вес: 1

  • Для балансировки по географии: Страна: *

SOA-запись, поле serial

Все поля SOA-записи будут импортированы как есть, кроме serial — его значение увеличится автоматически на число изменений с записями зоны, сделанных в ходе импорта.

Что будет, если импортировать SOA-запись, которая отличается от текущей только значением serial?

Система вернёт ошибку с причиной "Nothing to update: operation aborted".

2. Импортируйте файл.

Можно двумя способами: через интерфейс панели управления или через API.

Через UI

  1. Откройте DNS-хостингОсновные зоны.

    Выбор раздела Основные зоны
  2. Выберите нужную зону и нажмите напротив неё …​Посмотреть записи.

    Переход к редактированию записей
  3. Нажите кнопку со стрелкой, указывающей вниз; она находится справа от кнопки + Создать набор записей.

    Кнопка Импорта файла зоны
  4. Нажмите Загрузить файл и загрузите файл со своего компьютера.

    Выбор файла для импорта
  5. Нажмите Импортировать записи.

    Выбор файла для импорта

    Поздравляем, вы импортировали записи!

Через API

Отправьте POST-запрос с файлом зоны в формате multipart/form-data.

Для доступа к API вам нужен API-токен. Чтобы получить его, воспользуйтесь инструкцией из статьи Управление API-ключами.

Запрос

Метод

POST /api/v1/dns/resource/primary/{id}/rrsets/import

Параметры URL

Параметр Описание

{id}

Идентификатор вашей DNS-зоны

Заголовки

Заголовок Значение

Authorization

Bearer <ваш_api_токен>

Content-Type

multipart/form-data

Тело запроса

Передайте файл зоны (размер файла до 1МБ, формат BIND) в поле attachment через multipart/form-data:

--form 'attachment=@"/path/to/file"'

Пример запроса

curl --request POST
      --url 'https://api.servicepipe.ru/api/v1/dns/resource/primary/{id}/rrsets/import'
      --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTUzLCJ0eXBlIjoiUEFSVE5FUl9DTElFTlRfQUNDT1VOVF9FTVBMT1lFRSIsInJvbGUiOiJBRE1JTiIsInBhcnRuZXJDbGllbnRBY2NvdW50SWQiOjYzLCJpYXQiOjE2OTQ0MjAwOTIsImV4cCI6MTY5NDUwNjQ5Mn0.wKpNn_HjAFAvkZcRY4EwYqyHaQ7Q1spIRtTOBOppbuQ'
      --header 'Content-Type: multipart/form-data'
      --form 'attachment=@"/Users/Alex/Documents/DNS_records.txt"'

Ответ

При успехе сервер вернёт статус 200 и JSON-объект с результатами импорта. Структура успешного ответа:

  • importedDnsRecordSets — массив объектов, содержащий список импортированных наборов DNS-записей

  • failedRecordSets — массив объектов, содержащий наборы записей, которые не удалось импортировать, и описание ошибки

Пример ответа:

{
  "importedDnsRecordSets": [
    {
      "name": "example.com.",
      "rtype": "A",
      "ttl": 3600,
      "mode": "OFF",
      "records": [
        {
          "data": "192.168.1.1",
          "keys": []
        }
      ]
    }
  ],
  "failedRecordSets": [
    {
      "dnsRecordSet": {
        "name": "example.com.",
        "rtype": "A",
        "ttl": 3600,
        "mode": "OFF",
        "records": [
          {
            "data": "192.168.1.1",
            "keys": []
          }
        ]
      },
      "reason": "No changes for record set"
    }
  ]
}

В случае ошибки сервер вернёт один из статусов:

  • 400 Bad Request

  • 401 Unauthorized

  • 404 Error: Not Found

  • 422 The zone file cannot be imported: the record limit is reached

Пример ошибки:

{
  "statusCode": 400,
  "message": "Bad Request Exception"
}

3. Сделайте проверку.

  1. Проверьте, что все важные записи добавились с нужными значениями и TTL. Если включена расширенная балансировка, проверьте и переназначьте значения балансировки (если необходимо).

  2. Проверьте SOA-запись: убедитесь, что в качестве основного сервера (mname) SOA-записи указан сервер, на котором хранится эталон вашей зоны. В большинстве случаев это ns1.servicepipe.ru

  3. Проверьте NS-записи: в файле зоны должны остаться только NS-записи серверов, которые действительно обслуживают ваш домен. Удалите записи всех старых или неиспользуемых DNS-провайдеров. В зоне должны присутствовать как минимум наши серверы (ns1.servicepipe.ru, ns2.servicepipe.ru), а также серверы ваших резервных DNS-провайдеров, если вы их используете.

Если возникнут вопросы или проблемы, напишите нам на support@servicepipe.ru — с радостью проконсультируем и поможем всё настроить.