Управление DNS-записями

Клиент elles-dns-cli предоставляет команды для управления DNS-записями: создание, обновление, удаление и запрос. Поддерживаются все основные типы записей: A, AAAA, CNAME, MX, NS, PTR, SRV, TXT. Для каждого типа доступны как обобщенные команды (RecordAdd, RecordUpdate, RecordDelete, RecordQuery), так и типизированные варианты (например, RecordAddA, RecordAddMX).

Команды для работы с DNS-записями

Список команд:

  • RecordAdd — добавить новую DNS-запись;

  • RecordUpdate — изменить существующую DNS-запись;

  • RecordDelete — удалить DNS-запись;

  • RecordQuery — запросить DNS-записи по фильтрам;

  • RecordBulk — выполнить до 100 операций в пакетном режиме.

Обязательные параметры для всех команд

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

--name

FQDN узла, для которого создается/изменяется запись (обязательно)

--type

Тип записи: A, AAAA, CNAME, MX, NS, PTR, SRV, TXT (обязательно для обобщенных команд)

--data

Значение записи в формате, принятом DNS (обязательно для Add/Delete/Update)

RecordAdd — добавить DNS-запись

Создает новую DNS-запись.

Параметры:

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

--type

Тип записи: A, AAAA, CNAME, MX, NS, PTR, SRV, TXT (обязательно для RecordAdd)

--data

Значение записи в формате DNS (обязательно)

--ttl

TTL в секундах (по умолчанию: 3600)

--aging

Включить aging (по умолчанию: true) — только для зон, интегрированных со службой каталогов

--openacl

Включить open ACL (по умолчанию: false) — разрешает запись без Kerberos-аутентификации

--zonename

Имя зоны (опционально; извлекается из --name)

--partition

Партиция: domain, forest, legacy, custom (по умолчанию: автоопределение)

--partitionname

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

Примеры использования:

dnscli RecordAdd --name www.example.com --type A --data 192.168.1.10 --ttl 7200
dnscli RecordAdd --name mail.example.com --type MX --data "10 mail.example.com." --aging false
dnscli RecordAdd --name _ldap._tcp.example.com --type SRV --data "0 100 389 dc1.example.com." --zonename example.com

Особенности работы с определенными типами записей:

  • для SRV-записей значение --data должно включать приоритет, вес, порт и цель в формате: "priority weight port target";

  • для MX-записей значение --data должно содержать приоритет и FQDN сервера: "10 mail.example.com." (точка в конце обязательна);

  • для CNAME-записей значение --data — FQDN цели, без точки в конце (добавляется автоматически).

RecordUpdate — изменить DNS-запись

Изменяет существующую запись. Требует указания старого и нового значения.

Параметры:

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

--type

Тип записи (обязательно)

--olddata

Текущее значение записи (обязательно)

--newdata

Новое значение записи (обязательно)

--ttl

TTL в секундах (по умолчанию: 3600)

--zonename

Имя зоны (опционально; извлекается из --name)

--partition

Партиция: domain, forest, legacy, custom (по умолчанию: автоопределение)

--partitionname

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

Примеры использования:

dnscli RecordUpdate --name www.example.com --type A --olddata 192.168.1.10 --newdata 192.168.1.11
dnscli RecordUpdate --name mail.example.com --type MX --olddata "10 old.mail.com." --newdata "5 new.mail.com." --ttl 3600

Особенности использования:

  • обновление возможно только если запись существует и совпадает по значению --olddata;

  • для SRV и MX — обновление по полному значению, включая приоритет/вес.

RecordDelete — удалить DNS-запись

Удаляет запись по точному совпадению типа и значения.

Параметры:

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

--type

Тип записи (обязательно)

--data

Точное значение записи для удаления (обязательно)

--zonename

Имя зоны (опционально; извлекается из --name)

--partition

Партиция: domain, forest, legacy, custom (по умолчанию: автоопределение)

--partitionname

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

Примеры использования:

dnscli RecordDelete --name www.example.com --type A --data 192.168.1.10
dnscli RecordDelete --name _ldap._tcp.example.com --type SRV --data "0 100 389 dc1.example.com."

Особенности использования:

  • удаление требует точного совпадения --data; для SRV/MX — полное значение;

  • если запись найдена в нескольких партициях, удаление отклоняется без явного указания --partition.

RecordQuery — получить DNS-записи

Запрашивает записи по фильтрам. Требуется как минимум один из параметров: --zonename, --name, --type, --data.

Параметры:

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

--name

Имя узла: FQDN, @ (вершина зоны), all (по умолчанию) или регулярное выражение

--type

Тип записи: A, MX, SRV, TXT, ALL (по умолчанию)

--data

Значение записи для фильтрации (регулярное выражение поддерживается)

--zonename

Имя зоны (по умолчанию: * — все зоны)

--partition

Партиция: domain, forest, legacy, custom (по умолчанию: автоопределение)

--partitionname

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

Примеры использования:

dnscli RecordQuery --zonename example.com --name www --type A
dnscli RecordQuery --zonename example.com --type MX
dnscli RecordQuery --name www.example.com --type A --data "192.*"

Особенности использования:

  • --zonename=* и --name=all возвращают все записи во всех зонах, что может замедлить вывод результата;

  • регулярные выражения в --data работают только для текстовых типов (TXT, SRV, MX).

RecordBulk — выполнить операции с DNS-записями в пакетном режиме

Выполняет до 100 операций (create/update/delete) за один HTTP-запрос. Предназначена для массового внесения изменений.

Формат входных данных (JSON):

{
  "operations": [
    {"op": "create", "name": "www", "type": "A", "rdata": "10.1.1.1", "ttl": 3600},
    {"op": "update", "name": "mail", "type": "MX", "rdata": "10 old.", "newRdata": "20 new."},
    {"op": "delete", "name": "stale", "type": "A", "rdata": "10.9.9.9"}
  ]
}

Обязательные поля для каждой операции:

Операция Обязательные поля

create

name, type, rdata

update

name, type, rdata, newRdata

delete

name, type, rdata

Особенности указания полей:

  • ttl — опционально для всех операций (по умолчанию: 3600);

  • rdata — строка в формате DNS (как в --data для RecordAdd);

  • newRdata — новое значение для update (как в --newdata).

Примеры использования:

  • получение данных операций из файла:

    dnscli RecordBulk --zonename example.com --file records.json
  • получение данных операций из stdinn:

    cat records.json |dnscli RecordBulk --zonename example.com
  • тестовый прогон:

    dnscli RecordBulk --zonename example.com --file records.json --dry-run
  • вывод результата в JSON:

    dnscli RecordBulk --zonename example.com --file records.json --json

Коды ответа:

Код Значение

0

Все операции успешны

1

Частичный отказ или ошибка API (например, часть записей не создалась)

2

Ошибка валидации CLI (неправильный JSON, отсутствует --zonename)

Особенности использования:

  • операции выполняются независимо: одна ошибка не прерывает остальные;

  • вывод в режиме --json содержит статус каждой операции;

  • флаг --dry-run показывает план без применения изменений;

  • флаг --zonename обязателен — автоопределение не работает в bulk-режиме;

  • не поддерживаются параметры --aging, --openacl, так как они применяются только при создании через RecordAdd.

Обновлено: