POST /api/v1/dns/zone/{zoneName}/delegation — создать делегирование DNS-зоны

Создает одну или несколько NS-записей в родительской зоне, делегирующих управление подзоной (name.parentZone) одному или нескольким авторитативным DNS-серверам. Операция атомарна: если любая часть (NS или glue) завершается ошибкой, все созданные записи откатываются.

Согласно RFC 1034/1035, данная операция создает только NS-запись или записи в родительской зоне. Дочерняя зона не создается автоматически — она должна быть управляема отдельно на сервере, указанном в поле nsServer, или серверах, указанных в поле nameservers.

Запрос

Устаревший формат (один NS-сервер, без glue-записей)

curl -k --negotiate -u : -X POST \
  "https://<server>:<port>/api/v1/dns/zone/example.com/delegation?partition=domain" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "sub",
    "nsServer": "ns1.sub.example.com",
    "ttl": 3600
  }'

Новый формат (несколько NS-серверов, с glue-записями)

curl -k --negotiate -u : -X POST \
  "https://<server>:<port>/api/v1/dns/zone/example.com/delegation?partition=domain" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "sub",
    "ttl": 3600,
    "nameservers": [
      {
        "server": "ns1.sub.example.com",
        "addresses": ["10.1.1.1", "2001:db8::1"]
      },
      {
        "server": "ns2.sub.example.com",
        "addresses": ["10.1.1.2"]
      },
      {
        "server": "ns1.external.com"
      }
    ]
  }'

Параметры запроса

Параметр Тип Обязательный Описание и значения

zoneName

string

✅

Имя родительской зоны (FQDN)

partition

string

–

Партиция, в которой находится зона: domain, forest, legacy, custom

partitionName

string

–

Имя пользовательской партиции (обязательно при partition=custom)

Поля тела запроса

Поле Тип Обязательное Описание и значения

name

string

✅

Имя дочерней зоны (без родительского домена). Например: sub, apps. Не может быть пустым или содержать точки

ttl

uint32

–

Время жизни NS-записей в родительской зоне. Диапазон: 1–86400 секунд. По умолчанию: 3600

nsServer

string

✅

Устаревший формат: FQDN одного авторитативного DNS-сервера. Не совместим с nameservers

nameservers

array

⚠️

Новый формат: массив объектов с описанием серверов. Обязательно, если nsServer не указан. Каждый элемент содержит:

  • server: FQDN авторитативного DNS-сервера (обязательно)

  • addresses: массив IPv4/IPv6-адресов для создания glue-записей (опционально)

Glue-записи при делегировании

Для NS-серверов, имя которых находится внутри делегируемой зоны, в родительской зоне автоматически создаются glue-записи типов A и AAAA. Они позволяют разрешать адрес сервера имен без циклической зависимости от самой делегируемой зоны. Если NS-сервер находится вне делегируемой зоны, glue-записи не создаются.

Перед созданием делегирования сервер проверяет с помощью SOA-запроса, что указанный NS действительно является авторитативным для зоны.

Повторяющиеся IP-адреса после нормализации автоматически удаляются.

Создание делегирования выполняется атомарно: если на любом этапе возникает ошибка, все записи, созданные в рамках операции, откатываются.

Ответ "201 Created"

Устаревший формат (один NS-сервер, без glue-записей)

{
  "name": "sub",
  "nameUnicode": "sub",
  "nsServer": "ns1.sub.example.com",
  "nsServerUnicode": "ns1.sub.example.com",
  "ttl": 3600
}

Новый формат (несколько NS-серверов, с glue-записями)

{
  "name": "sub",
  "nameUnicode": "sub",
  "ttl": 3600,
  "nameservers": [
    {
      "server": "ns1.sub.example.com",
      "serverUnicode": "ns1.sub.example.com",
      "inDomain": true,
      "glueRecords": [
        {
          "name": "ns1.sub.example.com",
          "type": "A",
          "ip": "10.1.1.1"
        },
        {
          "name": "ns1.sub.example.com",
          "type": "AAAA",
          "ip": "2001:db8::1"
        }
      ],
      "warnings": []
    },
    {
      "server": "ns2.sub.example.com",
      "serverUnicode": "ns2.sub.example.com",
      "inDomain": true,
      "glueRecords": [
        {
          "name": "ns2.sub.example.com",
          "type": "A",
          "ip": "10.1.1.2"
        }
      ],
      "warnings": []
    },
    {
      "server": "ns1.external.com",
      "serverUnicode": "ns1.external.com",
      "inDomain": false,
      "glueRecords": [],
      "verified": true,
      "warnings": []
    }
  ]
}

Ошибки

Код Причина

400

Некорректное имя зоны (пустое, содержит точки), отсутствует обязательное поле, TTL вне диапазона, внешний NS имеет адреса, IP-адрес в addresses невалиден или внешний NS не является авторитативным

401

Отсутствует или невалиден билет Kerberos (SPNEGO)

404

Родительская зона не найдена в указанной партиции

409

Делегирование для указанной подзоны уже существует

500

Внутренняя ошибка сервера при создании записи

Обновлено: