Поддерживаемые типы DNS-записей и ограничения

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

Поддерживаемые типы DNS-записей

Типы DNS-записей с номерами в соответствии с IANA и информация об уровне поддержки операций по управлению ими в API:

Тип Номер Поддержка Описание

A

1

✅ CRUD

IPv4-адрес узла

AAAA

28

✅ CRUD

IPv6-адрес узла

NS

2

✅ CRUD

DNS-сервер, обслуживающий зону

CNAME

5

✅ CRUD

Псевдоним для другого DNS-имени

PTR

12

✅ CRUD

Имя целевого узла для обратного сопоставления IP-адреса с DNS-именем

MX

15

✅ CRUD

Почтовый сервер домена с приоритетом

TXT

16

✅ CRUD

Произвольные текстовые данные (SPF, DKIM и т. д.)

SRV

33

✅ CRUD

Адрес и порт сервиса с приоритетом и весом

SOA

6

⚠️ Только чтение

Служебные параметры DNS-зоны и сведения об основном сервере; управляется автоматически сервером

DHCID

49

🔒 Только чтение и удаление

Идентификатор DHCP-клиента для динамически созданной DNS-записи (RFC 4701)

Описание обозначений уровня поддержки:

  • « ✅ CRUD» — API позволяет создавать, читать, обновлять и удалять запись;

  • « ⚠️ Только чтение и обновление» — запись создается автоматически при создании зоны; API позволяет читать и обновлять запись;

  • « 🔒 Только чтение и удаление» — запись создается DHCP-сервером через DNS dynamic update (RFC 2136); API позволяет читать и удалять stale-записи.

Формат поля RDATA

Для всех типов DNS-записей поле rdata в запросах и ответах содержит строку в формате zone-file:

Тип Формат RDATA Пример

A

IPv4-адрес в десятичной записи с точками

"192.168.1.10"

AAAA

IPv6-адрес

"2001:db8::1"

NS

Полное доменное имя (FQDN); завершающая точка необязательна

"ns1.example.com."

CNAME

Полное доменное имя (FQDN)

"alias.example.com."

PTR

Полное доменное имя (FQDN)

"host.example.com."

MX

<preference> <target>

"10 mail.example.com."

TXT

Одна или несколько текстовых строк в кавычках

"v=spf1 -all"

SRV

<priority> <weight> <port> <target>

"10 20 443 sip.example.com."

SOA

<mname> <rname> <serial> <refresh> <retry> <expire> <minimum>

"ns1.example.com. hostmaster.example.com. 2026081300 900 600 86400 3600"

DHCID

Данные в кодировке Base64

"AAIBytvM3e+IVBhVtb+1d02a"

Особенности работы с DHCID-записями (тип 49, RFC 4701)

DHCID-записи используются DHCP-серверами для защиты от конфликтов имен при динамических обновлениях DNS (RFC 4701). Содержат хеш DUID или DHCP-client-identifier, связывающий имя хоста с конкретным DHCP-клиентом.

Формат поля RDATA

В случае DHCID-записи поле RDATA содержит бинарные данные в формате RFC 4701:

Offset Размер Поле Значения

0

2 байта

Identifier type

0x0000 = client-id, 0x0001 = FQDN, 0x0002 = DUID

2

1 байт

Digest type

0x01 = SHA-1, 0x02 = SHA-256

3

N байт

Digest

20 байт (SHA-1) или 32 байта (SHA-256)

В API поле rdata содержит данные в кодировке Base64 (только бинарный payload согласно RFC 4701, без 24-байтового LDAP-заголовка dnsRecord).

Ограничения API

Жизненным циклом DHCID-записей управляет DHCP-сервер (Windows DHCP, ISC DHCP, Kea, Samba DHCP) через DNS dynamic update (RFC 2136), поэтому API не используется для их создания и обновления.

Для работы с DHCID-записями с помощью API доступен ограниченный набор операций:

Операция Поддержка Комментарий

GET /record?type=DHCID

✅

Чтение существующих записей

DELETE /record?type=DHCID

✅

Удаление stale-записей

POST /record?type=DHCID

❌

Возвращает 400 Bad Request

PUT /record?type=DHCID

❌

Возвращает 400 Bad Request

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

Чтение

Запрос:

GET /api/v1/dns/zone/f1.dom/records?name=testdhcid&type=DHCID

Ответ 200 OK:

{
  "name": "testdhcid",
  "nameUnicode": "testdhcid",
  "type": "DHCID",
  "ttl": 3600,
  "rdata": "AAIBytvM3e+IVBhVtb+1d02a"
}

Удаление

Запрос:

DELETE /api/v1/dns/zone/f1.dom/record?name=testdhcid&type=DHCID&rdata=AAIBytvM3e+IVBhVtb+1d02a

Ответ: 204 No Content.

Попытка создания (отклоняется)

Запрос:

POST /api/v1/dns/zone/f1.dom/record
Content-Type: application/json

{
  "name": "host",
  "type": "DHCID",
  "ttl": 3600,
  "rdata": "AAIBytvM3e+IVBhVtb+1d02a"
}

Ответ 400 Bad Request:

{
  "error": "DHCID records cannot be created via API; use DNS dynamic update (RFC 2136) from DHCP server",
  "code": 400
}

Альтернативные способы управления DHCID-записями

Для создания DHCID-записей используйте инструменты:

Инструмент Команда

Windows DHCP

Автоматически при выдаче адреса

ISC DHCP / Kea

Через ddns-update-style interim в конфигурации

Samba DHCP

автоматически при интеграции с DNS

samba-tool (тестирование)

samba-tool dns add dc1.example.com example.com testdhcid DHCID 'AAIBytvM3e+IVBhVtb+1d02a'

dnscmd (на Windows DC)

dnscmd dc1 /RecordAdd example.com testdhcid DHCID AAIBytvM3e+IVBhVtb+1d02a

Обновлено: